يدعم بروتوكول ClickHouse ضغط كتل البيانات مع قيم التحقق من السلامة.
استخدم LZ4 إذا لم تكن متأكدًا من الوضع الذي ينبغي اختياره.
“
| القيمة | الاسم | الوصف |
|---|
0x02 | None | بدون ضغط، مع قيم التحقق فقط |
0x82 | LZ4 | سريع للغاية، مع ضغط جيد |
0x90 | ZSTD | Zstandard، سريع نسبيًا، وأفضل ضغط |
كلٌّ من LZ4 وZSTD من تطوير المطوّر نفسه، لكن مع مفاضلات مختلفة.
من اختبارات الأداء لدى Facebook:
| الاسم | النسبة | الترميز | فك الترميز |
|---|
| zstd 1.4.5 -1 | 2.8 | 500 MB/s | 1660 MB/s |
| lz4 1.9.2 | 2.1 | 740 MB/s | 4530 MB/s |
| الحقل | النوع | الوصف |
|---|
| قيمة التحقق | uint128 | تجزئة لـ (الترويسة + البيانات المضغوطة) |
| raw_size | uint32 | الحجم الخام من دون الترويسة |
| data_size | uint32 | حجم البيانات غير المضغوطة |
| وضع | byte | وضع الضغط |
| compressed_data | binary | كتلة بيانات مضغوطة |
الترويسة هي (raw_size + data_size + وضع)، والحجم الخام هو len(header + compressed_data).
قيمة التحقق هي hash(header + compressed_data)، باستخدام ClickHouse CityHash.
إذا استُخدم وضع None، فإن compressed_data تكون مساوية للبيانات الأصلية.
ويفيد وضع عدم الضغط في توفير درجة إضافية من سلامة البيانات باستخدام قيم التحقق، لأن
الكلفة الإضافية للتجزئة لا تُذكر. آخر تعديل في ٢٩ يونيو ٢٠٢٦