View a markdown version of this page

在 Amazon DocumentDB 8.0 中管理字典型壓縮 - Amazon DocumentDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Amazon DocumentDB 8.0 中管理字典型壓縮

Amazon DocumentDB 8.0 推出新的文件壓縮演算法 Zstd,作為 LZ4 的改善替代方案。當您選取 Zstd 做為壓縮演算法,在 Amazon DocumentDB 8.0 集合上啟用字典壓縮時,會取樣集合中的文件,以建立自訂壓縮字典。新的和更新的文件會使用此字典和 Zstd 演算法壓縮。這種方法通常會達到比標準壓縮方法更高的壓縮比率,特別是對於具有一致文件結構描述或重複欄位名稱的集合。

LZ4 是一種專為快速壓縮和解壓縮所設計的演算法。已知在 CPU 上很亮,同時實現明顯的壓縮。Zstd 是一種一般用途演算法,具有預設設定,使用更多的 CPU,但壓縮率比 LZ4 更好。字典的使用可進一步改善大多數 JSON 文件的壓縮。Zstd 演算法的一些優點如下:

  • 降低儲存成本 - 較高的壓縮比率意味著較低的儲存用量和較低的成本。

  • 較低的 I/O — 壓縮的文件需要較少的 I/O,可能改善效能。

  • 針對您的集合進行最佳化 — 字典專門針對集合的資料模式進行訓練。

注意

Amazon DocumentDB 3.6、4.0 和 5.0 版不支援以字典為基礎的壓縮。

效能考量

Zstd 壓縮涉及下列權衡:

  • 儲存體與 CPU 的比較 — Zstd 壓縮可達到更好的壓縮率,但相較於 LZ4 壓縮,可能使用稍微多的 CPU 資源。

  • 初始壓縮 — 在插入足夠的文件來訓練有效的字典之前,新集合可能無法達到最佳壓縮。目前,當集合至少有 100 個文件時,Amazon DocumentDB 會訓練字典。

  • 工作負載類型 — 讀取密集型工作負載,其中整個資料都符合緩衝區快取,可能會因為解壓縮負荷而增加延遲和 CPU 用量。

Zstd 壓縮對於具有小型文件、文件陣列和重複欄位名稱的集合特別有效。

啟用字典型壓縮

對於新集合,您可以使用下列命令來啟用 Zstd 壓縮:

db.createCollection("myCollection", { storageEngine: { documentDB: { compression: { enable: true, algorithm: "zstd" } } } } )

您也可以在現有集合上啟用或修改壓縮:

db.runCommand({ collMod: "myCollection", storageEngine: { documentDB: { compression: { enable: true, algorithm: "zstd" } } } })

若要為叢集中的所有新集合啟用 Zstd 演算法,請將叢集default_collection_compression參數群組中的 參數設定為 zstd。

開始使用

在 Amazon DocumentDB 8.0 中,新集合預設使用 Zstd 壓縮。若要關閉新集合的壓縮,請將叢集default_collection_compression參數群組中的 參數設定為 disabled。

從 Amazon DocumentDB 8.0 開始, enabled 不再是 的有效值。 default_collection_compression有效值為 zstd、lz4 和 disabled。

監控

您可以使用下列其中一個命令來檢視集合的壓縮資訊:

  • db.runCommand({ collStats: "myCollection" }) 或

  • db.collection.stats()

這些命令會傳回可用於計算壓縮比率的金鑰統計資料:

  • compression.algorithm — 使用的演算法 (lz4 或 zstd)

  • storageSize — 壓縮後集合使用的實際儲存體。請注意,此數字包含分段 (也就是資料庫頁面中未使用的空間)

  • avgObjSize — 解壓縮的集合文件的平均邏輯大小。請注意,如果您的集合有超過 20,000 個文件,此數字將根據 20,000 個文件的範例進行估算。

  • size — 沒有壓縮的集合邏輯大小。此數字是透過將 avgObjSize 乘以集合中的文件總數來取得,因此如果 avgObjSize 是近似值,則此數字也會是近似值。

  • count — 集合中的文件數量

下列 CloudWatch 指標在評估字典型壓縮時很有幫助:

  • CPUUtilization

  • FreeableMemory

  • VolumeBytesUsed

  • VolumeReadIOPs

  • VolumeWriteIOPs

collStats 指標:

  • storageSize

  • size

此外,追蹤應用程式特定的指標很有用,例如每個查詢類型或 API 的延遲和輸送量。