| الإدخال | الإخراج | الاسم المستعار |
|---|---|---|
| ✔ | ✔ |
الوصف
CapnProto هو تنسيق رسائل ثنائي يشبه تنسيق Protocol Buffers وThrift، لكنه لا يشبه JSON أو MessagePack.
رسائل CapnProto محددة الأنواع بشكل صارم وليست ذاتية الوصف، ما يعني أنها تحتاج إلى وصف خارجي للمخطط. ويُطبَّق المخطط آنيًا ويُخزَّن مؤقتًا لكل استعلام.
راجع أيضًا Format Schema.
مطابقة أنواع البيانات
INSERT وSELECT.
نوع بيانات CapnProto (INSERT) | نوع بيانات ClickHouse | نوع بيانات CapnProto (SELECT) |
|---|---|---|
UINT8, BOOL | UInt8 | UINT8 |
INT8 | Int8 | INT8 |
UINT16 | UInt16, Date | UINT16 |
INT16 | Int16 | INT16 |
UINT32 | UInt32, DateTime | UINT32 |
INT32 | Int32, Decimal32 | INT32 |
UINT64 | UInt64 | UINT64 |
INT64 | Int64, DateTime64, Decimal64 | INT64 |
FLOAT32 | Float32 | FLOAT32 |
FLOAT64 | Float64 | FLOAT64 |
TEXT, DATA | String, FixedString | TEXT, DATA |
union(T, Void), union(Void, T) | Nullable(T) | union(T, Void), union(Void, T) |
ENUM | Enum(8/16) | ENUM |
LIST | Array | LIST |
STRUCT | Tuple | STRUCT |
UINT32 | IPv4 | UINT32 |
DATA | IPv6 | DATA |
DATA | Int128/UInt128/Int256/UInt256 | DATA |
DATA | Decimal128/Decimal256 | DATA |
STRUCT(entries LIST(STRUCT(key Key, value Value))) | Map | STRUCT(entries LIST(STRUCT(key Key, value Value))) |
- يمكن تحويل الأنواع الصحيحة فيما بينها أثناء الإدخال والإخراج.
- للعمل مع
Enumبتنسيق CapnProto، استخدم الإعداد format_capn_proto_enum_comparising_mode. - يمكن أن تكون
Arrayمتداخلة، ويمكن أن تتضمن قيمة من النوعNullableكوسيطة. كما يمكن أيضًا أن تكون الأنواعTupleوMapمتداخلة.
مثال للاستخدام
إدراج البيانات والاستعلام عنها
schema.capnp على النحو التالي:
CapnProto باستخدام الأمر التالي:
استخدام مخطط مُنشأ تلقائيًا
CapnProto خارجي لبياناتك، فلا يزال بإمكانك تصدير البيانات أو استيرادها بتنسيق CapnProto باستخدام مخطط مُنشأ تلقائيًا.
على سبيل المثال:
إعدادات التنسيق
format_capn_proto_use_autogenerated_schema مفعّلًا افتراضيًا، ويُطبَّق إذا لم يتم تعيين format_schema.
يمكنك أيضًا حفظ المخطط المُنشأ تلقائيًا في ملف أثناء عمليات الإدخال/الإخراج باستخدام الإعداد output_format_schema.
على سبيل المثال:
CapnProto المُنشأ تلقائيًا في الملف path/to/schema/schema.capnp.