View a markdown version of this page

Gestione della compressione basata su dizionario in Amazon DocumentDB 8.0 - Amazon DocumentDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Gestione della compressione basata su dizionario in Amazon DocumentDB 8.0

Amazon DocumentDB 8.0 introduce un nuovo algoritmo di compressione dei documenti, Zstd, come alternativa migliorata a LZ4. Quando abiliti la compressione del dizionario su una raccolta Amazon DocumentDB 8.0 selezionando Zstd come algoritmo di compressione, i documenti della tua raccolta vengono campionati per creare un dizionario di compressione personalizzato. I documenti nuovi e aggiornati vengono compressi utilizzando questo dizionario e l'algoritmo Zstd. Questo approccio consente in genere di ottenere rapporti di compressione più elevati rispetto ai metodi di compressione standard, in particolare per le raccolte con schemi di documenti coerenti o nomi di campo ripetuti.

LZ4 è un algoritmo progettato per la compressione e la decompressione rapide. È noto per essere leggero sulla CPU pur ottenendo una compressione notevole. Zstd è un algoritmo generico che, con le impostazioni predefinite, utilizza più CPU ma ottiene rapporti di compressione migliori rispetto a LZ4. L'uso dei dizionari migliora ulteriormente la compressione per la maggior parte dei documenti JSON. Alcuni vantaggi dell'algoritmo Zstd sono:

  • Costi di archiviazione ridotti — Rapporti di compressione più elevati significano un minore utilizzo dello storage e minori costi.

  • Più bassi I/O — I documenti compressi richiedono meno I/O, migliorando potenzialmente le prestazioni.

  • Ottimizzato per la tua collezione — Il dizionario è formato specificamente per i modelli di dati della tua raccolta.

Nota

Dictionary-based la compressione non è supportata nelle versioni 3.6, 4.0 e 5.0 di Amazon DocumentDB.

Considerazioni sulle prestazioni

La compressione Zstd comporta i seguenti compromessi:

  • Spazio di archiviazione rispetto alla CPU — La compressione Zstd consente di ottenere rapporti di compressione migliori ma può utilizzare leggermente più risorse della CPU rispetto alla compressione LZ4.

  • Compressione iniziale — Le nuove raccolte potrebbero non raggiungere una compressione ottimale finché non viene inserito un numero sufficiente di documenti per formare un dizionario efficace. Attualmente, Amazon DocumentDB addestra un dizionario quando una raccolta contiene almeno 100 documenti.

  • Tipo di carico di lavoro — Read-intensive i carichi di lavoro in cui tutti i dati vengono inseriti nella cache del buffer possono subire un aumento della latenza e dell'utilizzo della CPU a causa del sovraccarico di decompressione.

La compressione Zstd è particolarmente efficace per raccolte con documenti di piccole dimensioni, array di documenti e nomi di campo ripetuti.

Abilitazione della compressione basata sul dizionario

Per le nuove raccolte puoi usare il comando seguente per abilitare la compressione Zstd:

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

Puoi anche abilitare o modificare la compressione su una raccolta esistente:

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

Per abilitare l'algoritmo Zstd per tutte le nuove raccolte nel cluster, imposta default_collection_compression parametro nel gruppo di parametri del cluster su zstd.

Nozioni di base

In Amazon DocumentDB 8.0, le nuove raccolte utilizzano la compressione Zstd per impostazione predefinita. Per disattivare la compressione per le nuove raccolte, imposta default_collection_compression parametro nel gruppo di parametri del cluster su disabled.

A partire da Amazon DocumentDB 8.0, enabled non è più un valore valido per default_collection_compression. I valori validi sono zstd, lz4 e disabled.

Monitoraggio

È possibile visualizzare le informazioni sulla compressione per una raccolta utilizzando uno dei seguenti comandi:

  • db.runCommand ({collStats: «myCollection»}) OPPURE

  • db.collection.stats ()

Questi comandi restituiscono statistiche chiave che è possibile utilizzare per calcolare il rapporto di compressione:

  • compressione.algoritmo — L'algoritmo utilizzato (lz4 o zstd)

  • Dimensioni di archiviazione — La memoria effettiva utilizzata dalla raccolta, dopo la compressione. Nota che questo numero include la frammentazione (ovvero lo spazio inutilizzato nelle pagine del database)

  • mediaObjSize — La dimensione logica media dei documenti della raccolta, decompressi. Nota che se la tua raccolta contiene più di 20.000 documenti, questo numero sarà un'approssimazione basata su un campione di 20.000 documenti.

  • taglia — La dimensione logica della raccolta senza compressione. Questo numero si ottiene moltiplicando avgObjSize per il numero totale di documenti della raccolta, quindi se medioObjSize è un'approssimazione, anche questo numero sarà un'approssimazione.

  • contare — Numero di documenti della collezione

Quanto segue CloudWatch le metriche possono essere utili durante la valutazione della compressione basata sul dizionario:

  • CPUUtilization

  • FreeableMemory

  • VolumeBytesUsed

  • VolumeReadIOPs

  • VolumeWriteIOPs

Metriche CollStats:

  • Dimensioni dello spazio di archiviazione

  • formato

Inoltre, può essere utile tenere traccia delle metriche specifiche dell'applicazione, come latenza e velocità effettiva per tipo di query o API.