يدعم بروتوكول 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
إذا استُخدم وضع None، فإن compressed_data تكون مساوية للبيانات الأصلية.
ويفيد وضع عدم الضغط في توفير درجة إضافية من سلامة البيانات باستخدام قيم التحقق، لأن
الكلفة الإضافية للتجزئة لا تُذكر.