GH GambleHub

ضغط البيانات التحليلية

1) لماذا ضغط البيانات التحليلية

يقلل الضغط من التخزين وحركة المرور، ويسرع المسح باستخدام IO أقل وتخزين أفضل. السعر هو وحدة المعالجة المركزية و (أحيانًا) تعقيد التحديثات. الهدف هو «IO↔CPU↔tochnost↔stoimost» الأمثل لمنظمات SLO الخاصة بك.

المقاييس الأساسية:
  • نسبة الضغط (CR) = 'خام _ حجم/ compressed_size'.
  • تكلفة المسح ≈ bytes_scanned/ throughput_storage + cpu_decode_time'.
  • التكلفة الإجمالية = 'التخزين _ التكلفة + compute_cost + egress_cost'.

2) الطبقات التي يعيش فيها الضغط

1. على مستوى الشكل: Parquet/ORC/Avro (الصفحات/الخطوط/الأعمدة).
2. على مستوى الترميز للعمود: القاموس، RLE، دلتا، FoR/Bit-packing، Gorilla/XOR.
3. على مستوى الترميز: ZSTD، Snappy، LZ4، Gzip.
4. على مستوى الاستعلام/المحرك: النقل، تخطي الصفحة (الحد الأقصى/الحد الأقصى)، الإزهار/خريطة المنطقة.
5. على مستوى التخزين: التخزين المتدرج (ساخن/دافئ/بارد)، الضغط، ذاكرة التخزين المؤقت للصفحة.

3) أشكال الأعمدة ومزاياها

باركيه: صفحات العمود ؛ دعم القاموس، RLE/Bit-packing، إحصائيات الحد الأدنى/الحد الأقصى والعد اللاغ.
ORC: شرائح بها فهارس على التيارات، مرشحات الإزهار ؛ فعالة للمسح الطويل.
أفرو (صف): مناسب للتدفق/السجلات، أسوأ من ذلك بالنسبة للمسح التحليلي.

الممارسة: للتحليلات الافتراضية، استخدم Parquet/ORC، قم بتضمين إحصائيات العمود والقاموس حيث تكون الكاردينالية منخفضة/متوسطة.

4) ترميزات العمود (بلا خسارة)

Dictionary-Replaces values with indexes (vetial for low cardinality).
RLE (Run-Length Encoding) - قيم → مكررة (قيمة، تشغيل). جيد للأعمدة المصنفة/المجمعة.
دلتا/دلتا دلتا: اختلافات المتاجر (الأرقام/الأوقات).
FoR (إطار مرجعي) + Bit-packing: value = base + offset; الأوفست مليء بقطع N.
الغوريلا/XOR (سلسلة زمنية): تخزن XOR من القيم المجاورة بطول متغير ؛ جيد للمقاييس.
Nullable bitmasks: تيار منفصل من nulls يزيد من CR.

نصيحة: يحسن فرز مفاتيح التجميع/التصفية بشكل كبير خرائط RLE/zone و CR.

5) رموز الأغراض العامة

ZSTD: أفضل CR بسعر معالج معتدل ؛ تدعم المستويات 1-22. اختيار عالمي.
سنابي: سريع، منخفض CR ؛ مناسبة للبيانات الساخنة ذات التردد العالي للقراءة.
LZ4: سريع حتى أسرع، ومماثل CR ؛ في كثير من الأحيان - للتيار/السجلات/المخابئ.
Gzip/Deflate: ارتفاع CR، ارتفاع سعر وحدة المعالجة المركزية ؛ نادرا ما تبرر في التحليلات التفاعلية.

القاعدة: طبقة ساخنة - Snappy/LZ4، دافئة/باردة - ZSTD (المستوى 3-7).

6) السلاسل الزمنية والسجلات

TSDB/قواعد بيانات الأعمدة: Gorilla/XOR، Delta-RLE-Bitmap، Sparse-run للإشارات النادرة.
الجذوع: JSON→Parquet + ZSTD ؛ تطبيع المفاتيح والأنواع (لا تخزن «سلسلة int»).
الانحدار والتدحرج (lossy): وحدات التخزين حسب النوافذ (1 م/5 م/1 ساعة) في طبقة ساخنة ؛ خام - في البرد.
هياكل الرسم: HLL (كاردينالية)، TDiest/KLL (كميات)، CMS (ترددات) - مدمجة، لكنها تقريبية.

7) Lossless vs Lossy (عندما تفقد الدقة)

بلا خسارة - الإبلاغ والتمويل والتدقيق.
Lossy - مراقبة، تحليلات A/B على النوافذ الكبيرة، القياس عن بعد (مع وضع علامات صريحة!).
مراقبة الجودة: تحديد التسامح (على سبيل المثال P99 ± 0. 5 ص) والتحقق منه في CI.

8) التقسيم والصفحات والضغط

الأطراف: حسب التاريخ/المنطقة/المستأجر → عدد أقل من عمليات المسح، ومعدلات أفضل للنفقات التشغيلية.
حجم الصفحة/الشريط: 64-256 كيلوبايت لكل صفحة، 64-512 ميجابايت لكل ملف - التوازن بين السعي ووحدة المعالجة المركزية.
الضغط: اجمع بين مشكلة الملفات الصغيرة - فوق CR والسرعة.
خرائط المنطقة/بلوم: تسريع تخطي الصفحة ؛ فعالة في الفرز بواسطة المرشحات.

9) الضغط والتشفير/الخصوصية

ترتيب العمليات: الضغط الأول، ثم التشفير. خلاف ذلك، CR ≈ 1.
TDE/at-rest لا يتداخل مع CR (كتلة مضغوطة بالفعل مشفرة).
لا يؤثر النقل العابر (TLS) على الشكل.
يحافظ إخفاء PII/الترميز قبل الضغط على إمكانية التحكم في الإنتروبيا.
توخي الحذر مع تشفير OPE/DET: قد يؤدي إلى تدهور CR و/أو المخاطرة بالخصوصية.

10) التكلفة و SLO (الاقتصاد)

التخزين: بايت أقل → دولار/سل مو.
احسب: كمية أقل → مسح أسرع ؛ لكن تخفيف الضغط يهدر وحدة المعالجة المركزية.
الخروج: أقل بايت → وقت حركة المرور/النسخ المنخفض.
حل وسط SLO: مطابقة codec/level بحيث يبقى «p95 _ latency» في النافذة المستهدفة.

سياسة مثال (زائفة YAML):
yaml hot:
format: parquet codec: snappy target_p95_ms: 1000 max_scan_mb: 2048 warm:
format: parquet codec: zstd:4 target_p95_ms: 2500 compaction: daily cold:
format: parquet codec: zstd:7 glacier: true retention: 365d

11) ممارسات للمحركات (ClickHouse/Snowflake/BigQuery/Redshift/Presto)

ClickHouse: CODEC' and on speakers (LZ4/ZSTD/DoubleDelta), ORDER BY FOR RLE/scances, TTL/compression.
Snowflake/BigQuery: التشغيل الآلي للتنسيق/التجميع ؛ مجموعة المساعدة حسب (التاريخ، المستأجر، مفاتيح التصفية).
Redshift/Presto/Trino: Parquet/ORC مع ZSTD، وضبط الخلية. تنفيذ. ضغط. والإحصاءات وتقسيم الملفات.

12) خطوط الأنابيب: أين تشمل الضغط

ابتلع: دفعات مضغوطة (ZSTD/LZ4) عند الكتابة إلى البحيرة.
تحويل/DBT: إنشاء أهداف العمود مع الترميز والفرز المطلوب.
خدمة/OLAP: وجهات نظر ملموسة مع ترميز مناسب ؛ التجمعات المسبقة للوحات القيادة الساخنة.
التصدير: для CSV/JSON - gzip/zstd ؛ من الأفضل أن تعطي لباركيت.

13) الاختبار والتحقق

تنميط AB: مجموعة من الطلبات → مقارنة p50/p95، بايت مسح ضوئي، وقت وحدة المعالجة المركزية، CR.
المجموعات الذهبية: فحص الصواب بعد إعادة الترميز/الضغط.
اختبارات المنطقة: تنبيهات إذا كان p95 ↑> X٪ بعد تغيير الترميز/المستوى.
قواعد DQ: يجب ألا تتغير الأنواع/النطاقات/معدل NULL عند إعادة التحميل.

14) سياسات الاحتفاظ وسياسات TTL

الطبقات: حار (7-14 يومًا)، دافئ (30-90 يومًا)، بارد (≥180 يومًا).
التقليل من الحجم: عندما «تهدأ»، قم بتخزين الوحدات/الرسومات بدلاً من الخام.
الاحتفاظ/تعليق قانوني: لا تزيل التعارض مع اللوائح ؛ أدلة وإصدارات المتاجر.

15) أنتيباترن

«في كل مكان Gzip المستوى 9 «: وحدة المعالجة المركزية باهظة الثمن، لا فائدة.
لا فرز/تجميع: خرائط RLE/منطقة سيئة → فحوصات باهظة الثمن.
JSON كتنسيق تخزين: مناسب للابتلاع، سيء للتحليلات.
ملفات صغيرة جدا: تضخيم البيانات الوصفية/البحث ؛ CR يسقط.
تشفير ما قبل الضغط: بالقرب من الصفر CR.
Lossy unmarked: خيانة الثقة والمساءلة.

16) خارطة طريق التنفيذ

1. Discovery: queser/data profiles, SLOs, and budgets.
2. أفضل لاعب: Parquet + ZSTD/Snappy، الفرز/التجميع الأساسي، الضغط.
3. الضبط: مستويات ZSTD، أحجام الصفحات، المجموعة تلو الأخرى، الإزهار/خرائط المنطقة.
4. دافئ/بارد: تخزين متدرج، تخزين/رسومات تخفيضية، سياسات خروج.
5. التصلب: اختبارات الانحدار، DQ، كتب التشغيل العابرة.

17) القائمة المرجعية السابقة للإفراج

  • الشكل: Parquet/ORC ؛ وتشمل الإحصاءات/القواميس.
  • التجميع بواسطة مفاتيح التصفية ؛ حسب التاريخ/المستأجر.
  • الترميز: ساخن = Snappy/LZ4، دافئ/بارد = ZSTD (3-7) ؛ p95 أمر طبيعي.
  • وضع الضغط ؛ ولا توجد ملفات صغيرة ؛ أحجام الملفات/الصفحات المستهدفة.
  • DQ والمجموعات الذهبية خضراء ؛ الأنواع/النطاقات المحفوظة.
  • التشفير بعد الضغط ؛ PII مقنعة ؛ الاحتفاظ/الاحتجاز القانوني امتثل.
  • يتم رصد انحدارات Perf ؛ تنبيهات بواسطة p95/بايت مسح ضوئي/CR.
  • وثائق سياسة التخزين وتعليمات إعادة الترميز جاهزة.

18) قوالب مصغرة

DBT (جدول باركيه مع ZSTD والتجميع):
sql create table if not exists analytics. sales_daily cluster by (event_date, tenant_id)
as select from {{ ref('sales_daily_view') }};
-- in model config: materialized = table, file_format=parquet, compression = zstd
سياسة مضغوطة (زائفة):
yaml compaction:
target_file_mb: 256 small_file_threshold_mb: 32 schedule: "hourly"
Config downsampling (زائف):
yaml timeseries:
raw:  keep: 14d rollup_1m: keep: 90d rollup_1h: keep: 365d rollup_1d: keep: 1825d

الخلاصة: ضغط البيانات التحليلي ليس فقط «تشغيل الترميز»، ولكنه استراتيجية شاملة: التنسيق الصحيح، وترميز العمود، والفرز والتقسيم، ومستويات الضغط والتخزين، واحترام التشفير و SLO. يوفر التصميم الذكي فحوصات أسرع وعدد أقل وأداء يمكن التنبؤ به - دون المساس بالثقة في البيانات.

Contact

اتصل بنا

تواصل معنا لأي أسئلة أو دعم.نحن دائمًا جاهزون لمساعدتكم!

بدء التكامل

البريد الإلكتروني — إلزامي. تيليغرام أو واتساب — اختياري.

اسمك اختياري
البريد الإلكتروني اختياري
الموضوع اختياري
الرسالة اختياري
Telegram اختياري
@
إذا ذكرت تيليغرام — سنرد عليك هناك أيضًا بالإضافة إلى البريد الإلكتروني.
WhatsApp اختياري
الصيغة: رمز الدولة + الرقم (مثال: +971XXXXXXXXX).

بالنقر على الزر، فإنك توافق على معالجة بياناتك.