GH GambleHub

Վերլուծական տվյալների սեղմումը

1) Ինչու՞ սեղմել վերլուծական տվյալները

Սեղմումը նվազեցնում է պահեստավորման և պահեստավորման ծավալը, արագացնում է անիվները ավելի փոքր IO-ի և ավելի լավ քեշիրացման պատճառով։ Գինը CPU-ն է և (երբեմն) մրցույթի բարդությունը։ Նպատակը IO www.CPU-ի լավատեսությունն է ձեր SLO-ի տակ։

Հիմնական մետրերը

Compression Ratio (CR) = `raw_size / compressed_size`.
Scan Cost ≈ bytes_scanned / throughput_storage + cpu_decode_time`.
Total Cost = `storage_cost + compute_cost + egress_cost`.


2) Շերտեր, որտեղ ապրում է սեղմումը

1. Ձևաչափի մակարդակում 'Parquet/ORC/Avro (էջ/սթրիփներ/սյունակներ)։

2. Էնկոդինգի մակարդակում սյուները ՝ Dictionary, RLE, Delta, FoR/Bit-packing, Gorilla/XOR։

3. Թողարկման մակարդակում 'ZSTD, Snappy, LZ4, Gzip։

4. Հարցման/շարժիչի մակարդակում 'վեկտորիզացիա, էջեր (min/max), bloom/zone-map։

5. Պահեստավորման մակարդակում 'tiered storage (hot/warm/cold), կոմպակշն, page cache։


3) Ոսկեզօծ պարամետրերը և նրանց առավելությունները

Parquet: Էջեր սյուներով; սլովարների աջակցություն, RLE/Bit-packing, min/max վիճակագրությունը և national-count։

ORC: սթրիփներ, որոնք ունեն ինդեքսներ, բլոում ֆիլտրեր։ արդյունավետ է երկար սկանների համար։

Avro (row): հարմար է սթրիմի/լոգարանների համար, ավելի վատ է վերլուծական սկանների համար։

Պրակտիկա 'լռելյայն վերլուծաբանների համար օգտագործեք Parquet/ORC-ը, միացրեք column stats և dictionary, որտեղ կարդինալությունը ցածր/միջին է։


4) Էնկոդինգները (lossless)

Dictionary: փոխարինում է արժեքները ինդեքսներով (իդեալական է ցածր կարդինալության համար)։

RLE (Run-Length Encoding) 'կրկնվող հաճախորդների արժեքները (value, run)։ Լավ է տեսակավորված/կլաստավորված գաղութների համար։

Delta/Delta-of-Delta: պահպանում է տարբերությունները (թվեր/ժամանակ)։

FoR (Frame-of-Reference) + Bit-packing: արժեքը = big + www.set; www.set փաթեթավորված է N բիթերով։

Gorilla/XOR (Time-series) 'պահպանում է XOR հարևան արժեքները փոփոխական երկարությամբ։ լավ է մետրի համար։

Nullablable-բիթմասկան. nme հոսքը բարձրացնում է CR-ը։

Խորհուրդը 'նախնական կլաստերիզացիան/ֆիլտրման բեկորների տեսակավորումը կտրուկ բարելավում է RLE/zone-maps և CR-ը։


5) Մոսկվան և ընդհանուր նշանակումը

ZSTD: լավագույն CR-ը CPU-ի չափավոր գնով։ աջակցում է 1-22 մակարդակները։ Համընդհանուր ընտրություն։

Delappy 'արագ, ցածր CR; հարմար է տաք տվյալների համար 'ընթերցանության բարձր տեմպերով։

LZ4 'նույնիսկ ավելի արագ, քան Drappy, նման CR; հաճախ 'strima/logs/kash-ի համար։

Gzip/Winlate: բարձր CR, CPU բարձր գինը; հազվադեպ է արդարացված ինտերակտիվ վերլուծության մեջ։

Կանոն 'տաք շերտ - Snappy/LZ4, տաք/սառը - ZSTD (Level 3-7)։


6) Ժամանակավոր շարքեր և լույսեր

TSDB/Gorilla/XOR, Delta-RLE-Bitmap, Sparse-run հազվագյուտ ազդանշանների համար։

Logs: JSON 35Parquet + ZSTD; նորմալացրեք բանալիները և տեսակները (մի պահպանեք «կառուցվածքային int»)։

Downsampling և roll-ups (lossy): պահեք միավորներ պատուհանների վրա (1m/5m/1h) տաք շերտում։ հում 'սառը։

Sketch կառուցվածքներ ՝ HMS (կարդինալիզմ), TDigest/KMS (քվանալի), CBS (հաճախականություններ) - կոմպակտ, բայց ապրոքսիմացիոն։


7) Lossless vs Lossy (երբ կարող եք կորցնել ճշգրտությունը)

Lossless-ը հաշվետվություններ, ֆինանսներ, աուդիտ է։

Lossy-ը ռուսական, A/B վերլուծաբանն է մեծ պատուհանների վրա, հեռուստատեսությունը (ակնհայտ մակնշմամբ)։

Որակի վերահսկումը 'ենթադրաբար սխալվել (օրինակ, P99 240)։ 5 pp) և ստուգել այն CI-ում։


8) Կուսակցություն, էջ և կոմպակշն

Կուսակցությունը 'ամսաթվով/տարածաշրջանում/տենանտան ավելի քիչ է, քան CR-ը։

Էջի չափսը/սթրիփը '64-256 KB էջի վրա, 64-512 MB ֆայլի վրա - հավասարակշռություն seek և CPU-ի միջև։

Կոմպակշն 'միացրեք փոքրիկ ֆայլերը (small medes problem) - CR-ից բարձր և արագությունը։

Zone-maps/Bloom: արագացնում են էջերի բացերը։ արդյունավետ են ֆիլտրերի տեսակավորման ժամանակ։


9) Սեղմումը և կոդավորումը/գաղտնիությունը

Վիրահատության կարգը 'նախ սեղմումը, հետո կոդավորումը։ Հակառակ դեպքում CR 351։

TDE/at-rest չի խանգարում CR-ին (կոդավորվում է արդեն սեղմված բլոկը)։

In-transit (TFC) չի ազդում ձևաչափի վրա։

PII-ի դիմակավորումը/հյուսելը մինչև սեղմումը պահպանում է վերահսկվող էնտրոպիան։

Զգուշորեն OPE/DET-կոդավորումը կարող է վատթարանալ CR և/կամ վտանգել գաղտնիությունը։


10) Արժեքը և SLO (տնտեսագիտություն)

Storage: ավելի քիչ բայթ է ցածր/TB-mo։

Compium: ավելի քիչ IO-ն ավելի արագ է, քան ժայռերը։ բայց դեկոմպրեսիան ծախսում է CPU-ն։

Egress: ավելի քիչ բայթ է արտադրվում ավելի ցածր քան 112/ժամանակը։

SLO փոխզիջում 'վերցրեք կոդերը/մակարդակը այնպես, որ «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/Winowflake/BigQuery/Redshift/Presto)

ClickHouse: CODEC "և սյուների վրա (LZ4/ZSTD/DoublePorta), ORDER BY-ի համար RLE/սկան, TTL/կոմպակշն։

Winowflake/BigQuery 'ձևերի/կլաստերիզացիայի ավտոմատիկա; օգնեք cluster by (ամսաթիվը, tenault, բանալիները)։

Redshift/Presto/Trino: Parquet/ORC-ը ZSTD-ի հետ, «hive»։ exec. compress. www.put ', վիճակագրությունը և ֆայլերի բաժանումը։


12) Proplines: Որտեղ ներառել սեղմումը

Ingest: սեղմված մարտերը (ZSTD/LZ4) lake-ում ձայնագրելիս։

Transform/DBT 'ստեղծեք հսկայական նպատակներ, որոնք անհրաժեշտ են և տեսակավորում։

Serve/OLAP 'նյութականացված ներկայացումներ համապատասխան օրինակով։ կանխատեսում են տաք դաշնամուրի համար։

Export: для CSV/JSON — gzip/zstd; ավելի լավ է տալ Parquet-ը։


13) Փորձարկում և վալիդացիա

AB-ավելացումը 'հարցումների մի շարք նախատեսվում է համեմատել p50/p95, bytes scanned, CPU time, CR։

Գոլդեն հավաքածուներ 'ճիշտ ստուգում փոխարկումից հետո/կոմպակշան։

Regression perf tes.ru: alerts, եթե p95-> X տոկոսը փոփոխությունից հետո։

DQ կանոնները 'տեսակներ/միջակայքներ/NMS-rate չպետք է փոխվեն խաչմերուկում։


14) Պահեստավորման քաղաքականությունը և TTL-ը

Tiered: hot (7-14 dn.) , warm (30-90 դն.) , cold (38180 դն.) .

Downsampling: Քանի որ «հովացման» պահեք ագրեգատները/էսքիզները հում փոխարեն։

Retention/Legal hold: Մի հեռացրեք փոխհարաբերությունները ստանդարտների հետ։ պահեք և տարբերակները։


15) Անտիպատերնի

«Ամենուրեք Gzip level 9 «, թանկ CPU, ոչ։

Առանց տեսակավորման/կլաստերիզացիայի 'վատ RLE/zone-maps-ը թանկ են։

JSON-ը որպես կոդավորման ձևաչափ, հարմար է ingest-ի համար, վատ է վերլուծության համար։

Չափազանց փոքր ֆայլեր 'փչացնում են մետատվյալները/seek; CR ընկնում է։

Կոդավորումը մինչև սեղմումը 'գրեթե զրոյական CR։

Lossy առանց մակնշման 'վստահության և հաշվետվության խախտում։


16) Իրականացման ճանապարհային քարտեզը

1. Discovery: Հարցումների/տվյալների պրոֆիլներ, SLO և բյուջեներ։

2. MVP: Parquet + ZSTD/Corappy, ռուսական տեսակավորում/կլաստերիզացիա, կոմպակշն։

3. Tuning: ZSTD մակարդակներ, էջերի չափսեր, cluster by, bloom/zone-maps։

4. Warm/Cold: tiered storage, downsampling/էսքիզներ, egress քաղաքականություն։

5. Hardening: ռեգրեսիայի թեստեր, DQ, runbooks։


17) Չեկի թուղթը նախքան թողարկումը

  • Ձևաչափ ՝ Parquet/ORC; ներառում են վիճակագրություններ/բառարաններ։
  • Կլաստերիզացիա ֆիլտրի բեկորներով. կուսակցություններ ամսաթվով/տենանտով։
  • Alti: hot = Corappy/LZ4, warm/cold = ZSTD (3-7); p95 նորմալ է։
  • Կոմպակշնը տրամադրված է; ոչ մի small dies; ֆայլերի/էջերի չափերը։
  • DQ և golden հավաքածուներ կանաչ; տեսակները/միջակայքները պահպանված են։
  • Սեղմումից հետո կոդավորումը; PII դիմակավորված; Ռետենշն/Legal-hold պահպանված են։
  • Ռեգրեսիան վերահսկվում է. p95/bytes scanned/CR։
  • Պահեստային քաղաքականության և փոխանակման հրահանգների իրականացումը պատրաստ է։

18) Մինի ձևանմուշները

DBT (Parquet-ը ZSTD-ի և կլաստերիզացիայի հետ)

sql create table if not exists analytics.sales_daily cluster by (event_date, tenant_id)
as select from {{ ref('sales_daily_view') }};
-- в конфиге модели: materialized=table, file_format=parquet, compression=zstd

Կոմպակշնա քաղաքականությունը (կեղծ)

yaml compaction:
target_file_mb: 256 small_file_threshold_mb: 32 schedule: "hourly"

Քրեյգ downsampling (կեղծ)

yaml timeseries:
raw:  keep: 14d rollup_1m: keep: 90d rollup_1h: keep: 365d rollup_1d: keep: 1825d

Արդյունքում, վերլուծական տվյալների սեղմումը ոչ միայն «միացնելն» է, այլ ամբողջական ռազմավարությունը 'ճիշտ ձևաչափը, գաղութների էնկոդինգը, տեսակավորումը և նվագարկումը, կոմպակշինը և պահեստավորման մակարդակները, ծածկագրման և SLO-ի հարգանքը։ Գրագիտության դիզայնը տալիս է ավելի արագ խոզանակներ, ցածր հաշիվներ և կանխատեսելի արտադրողականություն 'առանց տվյալների վստահության փոխզիջման։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։