Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

الأساسيات

توضح هذه الوثيقة البروتوكول الثنائي لعملاء ClickHouse عبر بروتوكول TCP.

Varint

بالنسبة إلى الأطوال، ورموز الحزم، والحالات الأخرى، يُستخدم ترميز varint غير الموقّع. استخدم binary.PutUvarint وbinary.ReadUvarint.

String

تُشفَّر السلاسل النصية متغيرة الطول على هيئة (الطول، القيمة)، حيث يكون الطول varint وتكون القيمة سلسلة UTF-8.

s := "Hello, world!"

// كتابة طول السلسلة النصية كـ uvarint.
buf := make([]byte, binary.MaxVarintLen64)
n := binary.PutUvarint(buf, uint64(len(s)))
buf = buf[:n]

// كتابة قيمة السلسلة النصية.
buf = append(buf, s...)
00000000  0d 48 65 6c 6c 6f 2c 20  77 6f 72 6c 64 21        |.Hello, world!|

الأعداد الصحيحة

Int32

v := int32(1000)

// Encode.
buf := make([]byte, 8)
binary.LittleEndian.PutUint32(buf, uint32(v))

// Decode.
d := int32(binary.LittleEndian.Uint32(buf))
fmt.Println(d) // 1000
00000000  e8 03 00 00 00 00 00 00                           |........|

النوع المنطقي

يُمثَّل النوع المنطقي ببايت واحد؛ حيث إن 1 تعني true و0 تعني false.

Navigation