الانتقال إلى المحتوى الرئيسي
مرجع بروتوكول العميل قيد الإعداد.معظم الأمثلة متاحة فقط بلغة Go.
توضح هذه الوثيقة البروتوكول الثنائي لعملاء ClickHouse عبر بروتوكول TCP.

Varint

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

String

تُشفَّر السلاسل النصية متغيرة الطول على هيئة (الطول، القيمة)، حيث يكون الطول varint وتكون القيمة سلسلة UTF-8.
تحقّق من الطول لتجنّب OOM:0 ≤ len < MAX
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!|

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

يستخدم ClickHouse ترتيب Little Endian للأعداد الصحيحة ذات الحجم الثابت.

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.
آخر تعديل في ٢٥ يونيو ٢٠٢٦