GH GambleHub

壓縮分析數據

1)為什麼壓縮分析

壓縮減少了存儲量和流量,通過更小IO和更好的緩存加快了掃描速度。價格-CPU和(有時)更新的復雜性。目標是SLO下的「IO↔CPU↔tochnost↔stoimost」最佳。

基本指標:
  • 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(頁面/strips/揚聲器)。
2.在編碼級別,專欄:詞典,RLE,Delta,FoR/Bit-packing,Gorilla/XOR。
3.編解碼器級別:ZSTD,Snappy,LZ4,Gzip。

4.在查詢/引擎級別: 矢量化,頁面跳過(min/max), bloom/zone-map.

5.在存儲級別:分層存儲(hot/warm/cold),復合,頁面緩存。


3)柱形格式及其優點

Parquet:按列排列的頁面;支持字典,RLE/Bit-packing,min/max統計和null計數。
ORC: strips with index on strims, bloom過濾器;對長掃描有效。
Avro (row):便於流媒體/博客,分析掃描更糟糕。

實踐:對於默認分析,請使用Parquet/ORC,在基數低/中位數時包括色譜和字典。


4)揚聲器(lossless)

字典:用索引替換值(對於低基數而言是理想的)。
RLE (Run-Length編碼):重復的→值(value, run)。適合排序/聚類揚聲器。
Delta/Delta of Delta:存儲差異(數字/時間)。
FoR(參考框架)+位包:值=base+offset;offset裝有N位。
大猩猩/XOR(時間系列):以可變長度存儲相鄰值的XOR;對指標有好處。
Nullable-bitmask:單獨的null流增加CR。

提示:通過過濾密鑰進行預聚類/分類大大改善了RLE/zone-maps和CR。


5)通用編解碼器

ZSTD:CPU價格適中的最佳CR;支持1-22級別。通用選擇。
Snappy:快速,低CR;適用於高讀取率的熱數據。
LZ4:Snappy更快,類似於CR;通常-用於流/登錄/緩存。
Gzip/Deflate:高CR,高CPU價格;在交互式分析中很少有理由。

規則:熱層-Snappy/LZ4,溫暖/寒冷-ZSTD(3-7級)。


6)時間序列和徽標

TSDB/柱狀 DB:大猩猩/XOR,Delta-RLE-Bitmap,Sparse-run用於稀有信號。
Logi: JSON→Parquet+ZSTD;使密鑰和類型正常化(不要存儲「字符串int」)。
Downsampling和roll-ups (lossy):將單元存儲在熱層中的窗口(1m/5m/1h);生的-在寒冷中。
素描結構:HLL(基數),TDigest/KLL(分數),CMS(頻率)-緊湊但近似。


7)Lossless vs Lossy(當可能失去準確性時)

Lossless-報告,財務和審計。
Lossy-監視,大窗口上的A/B分析,遙測(帶有明顯的標記!)。
質量控制:設置允許的誤差(例如P99 ± 0。5 pp)並在CI中檢查。


8)參與,頁面和復合

分期付款:按日期/地區/tenant →少掃描,優於CR。
頁面大小/突擊:每頁64-256 KB,每文件64-512 MB-seek和CPU之間的平衡。
編譯:合並小文件(小文件問題)-高於CR和速度。
Zone-maps/Bloom:加快頁面跳過;對過濾器進行排序是有效的。


9)壓縮和加密/隱私

操作順序:首先是壓縮,然後是加密。否則CR ≈ 1。
TDE/at rest不會幹擾CR(已壓縮單元已加密)。
Transit(TLS)不會影響格式。
壓縮前的PII掩蔽/令牌化使熵保持可控。
小心OPE/DET加密:可能會降低CR和/或冒隱私風險。


10)成本和SLO(經濟)

Storage:少於字節→低於$/TB-mo。
計算:IO更少→掃描速度更快;但是減壓浪費了CPU。
Egress:少於字節→少於流量/拷貝時間。
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/Snowflake/BigQuery/Redshift/Presto)

ClickHouse:CODEC"和揚聲器(LZ4/ZSTD/DoubleDelta),RLE/掃描的 ORDER BY,TTL/復合。
Snowflake/BigQuery:格式/群集自動化;幫助cluster by(日期,tenant,過濾器鍵)。
Redshift/Presto/Trino:帶有ZSTD的Parquet/ORC,設置'hive。exec.compress.輸出、統計數據和文件分離。


12) Piplines: 在哪裏啟用壓縮

Ingest:在湖中錄制時壓縮蹦床(ZSTD/LZ4)。
Transform/DBT:使用所需的編解碼器和排序創建柱狀目標。
Serve/OLAP:具有適當編解碼器的實例化視圖;熱達什板的預裝料。
Export: для CSV/JSON — gzip/zstd;最好給派克。


13)測試和驗證

AB分析:一組查詢→比較p50/p95、bytes掃描、CPU時間、CR。
金色套件:重新編碼/復合後驗證正確性。
Regression perf tests:變換編解碼器/層後,如果p95 ↑> X%的話。
DQ規則:類型/範圍/NULL-rate不得在交叉時更改。


14)存儲策略和TTL

Tiered: hot (7-14 dn.),warm(30-90 dn。),cold(≥180 dn。).

Downsampling:當「冷卻」時,存儲單元/草圖而不是原始的。
Retention/Legal hold:不要消除與法規沖突;儲存目錄和版本。


15)反模式

「無處不在的Gzip level 9「:昂貴的CPU,沒有好處。
沒有分類/聚類:壞的RLE/zone-maps →掃描昂貴。
JSON作為存儲格式:方便,不利於分析。
文件太小:誇大元數據/seek;CR下降。
壓縮前加密:幾乎為零CR。
Lossy無標記:違反信任和報告。


16)實施路線圖

1.發現:查詢/數據配置文件,SLO和預算。
2.MVP:Parquet+ZSTD/Snappy,基本排序/聚類,復合。
3.調音:ZSTD級別,頁面大小,cluster by,bloom/zone-maps。
4.Warm/Cold:分層存儲,downsampling/草圖,egress策略。
5.硬化:回歸perf測試,DQ,runbooks重新編碼。


17)發行前的支票清單

  • 格式:Parquet/ORC;包括統計/詞典。
  • 通過過濾密鑰進行聚類;按日期/特南特劃分的政黨。
  • 編解碼器:hot=Snappy/LZ4,warm/cold=ZSTD(3-7);p95是正常的。
  • 合並設置;沒有小文件;目標文件/頁面大小。
  • DQ和黃金套件是綠色的;保留類型/範圍。
  • 壓縮後加密;PII被偽裝;合格/法律保留。
  • 對Perf回歸進行監測;p95/bytes scanned/CR上的差異。
  • 存儲策略文檔和重新編碼說明已準備就緒。

18)迷你模板

DBT(帶有ZSTD和群集的Parquet表):
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"
Config 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 之外,同步於 Telegram 回覆您。
WhatsApp 選填
格式:國碼 + 電話號碼(例如:+886XXXXXXXXX)。

按下此按鈕即表示您同意我們處理您的資料。