MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Una panoramica di WiredTiger Storage Engine per MongoDB

Ogni sistema di database ha un componente strutturato che è responsabile del mantenimento del modo in cui i dati vengono archiviati e serviti sia in memoria che su disco. Questo è spesso indicato come un motore di archiviazione. Più spesso, quando valutano l'architettura dei database operativi, gli sviluppatori tengono conto di fattori di prima mano come modellazione dei dati, latenza ridotta, operazioni di throughput migliorate, coerenza dei dati, facilità di scalabilità e tolleranza agli errori minima. Nonostante ciò, è necessario avere una conoscenza dettagliata e avanzata del motore di archiviazione sottostante per una migliore messa a punto in modo che fornisca i fattori evidenziati in modo efficiente.

Di seguito è illustrato un semplice ciclo di un'applicazione al sistema db...

Esempio di architettura applicativa comune

Motore di archiviazione WiredTiger

MongoDB supporta principalmente 3 motori di archiviazione le cui prestazioni differiscono in base ad alcuni carichi di lavoro specifici. I motori di archiviazione sono:

  1. Motore di archiviazione WiredTiger
  2. Motore di archiviazione in memoria
  3. Motore di archiviazione MMAPv1

Il motore di archiviazione WiredTiger ha entrambe le configurazioni di un motore basato su B-Tree e un motore basato su un albero di unione strutturato.

Motore basato su B-Tree

Questo è uno degli antichi motori di archiviazione da cui derivano altre sofisticate configurazioni. È una struttura dati ad albero autobilanciante che garantisce l'ordinamento dei dati e consente ricerche, accessi sequenziali, inserimenti ed eliminazioni in modo logaritmico. È un'archiviazione basata su righe in modo tale che ogni riga sia considerata un singolo record nel database

Pregi di un motore di archiviazione B-Tree

  • Alto throughput e letture a bassa latenza. B-Trees ha la tendenza a crescere in modo ampio e poco profondo in modo tale da attraversare pochissimi nodi.
  • Mantiene le chiavi in ​​ordine per l'attraversamento sequenziale e gli indici sono bilanciati con un algoritmo ricorsivo.
  • I nodi di stoccaggio interni sono sempre mantenuti almeno per metà pieni, il che in generale riduce gli sprechi.
  • Facile da gestire un gran numero di inserimenti ed eliminazioni in breve tempo.
  • L'indicizzazione gerarchica viene utilizzata con l'obiettivo di ridurre le letture del disco.
  • Velocezza inserimenti ed eliminazioni grazie all'utilizzo di blocchi parzialmente pieni.

Limitazioni di un motore di archiviazione B-Tree

  • Prestazioni di scrittura scadenti dovute alla necessità di garantire una struttura dati ben ordinata con scritture casuali. Le scritture casuali sono più costose delle scritture sequenziali nella memoria.
  • Penalità di pronto modifica e scrittura di un intero blocco anche per un aggiornamento minore di una riga in un blocco.

Motore basato su albero di unione strutturato log

A causa delle scarse prestazioni di scrittura del motore basato su B-Tree, gli sviluppatori hanno dovuto trovare un modo per far fronte a set di dati più grandi su DBMS. Il Log Structured Merge Tree Based Engine (LSM Tree) è stato quindi creato per migliorare le prestazioni per l'accesso indicizzato ai file con un volume di scrittura elevato per un periodo prolungato. In questo caso, le scritture casuali nella prima fase della memoria a cascata vengono trasformate in scritture sequenziali nel primo componente basato su disco.

Pregi di un motore di archiviazione ad albero LSM

  • La capacità di eseguire scritture sequenziali veloci migliora la gestione rapida di dati di grandi dimensioni in rapida crescita.
  • Adatto per lo storage a più livelli, offrendo così alle organizzazioni una migliore selezione in termini di costi e prestazioni. Gli SSD basati su Flash offrono ottime prestazioni in questo caso.
  • Migliore compressione ed efficienza di archiviazione, quindi risparmio di spazio di archiviazione e miglioramento dello spazio di archiviazione quasi completo
  • I dati sono sempre disponibili per la query immediatamente.
  • Gli inserimenti sono molto veloci.

Limitazioni di un motore di archiviazione B-Tree

Consuma più memoria rispetto a B-Tree durante le operazioni di lettura a causa della lettura e dell'amplificazione dello spazio. Tuttavia, alcuni approcci come i filtri di fioritura hanno attenuato questo effetto nella pratica in modo tale che il numero di file da controllare durante una query puntuale è ridotto.

La tecnologia WiredTiger è stata progettata in modo da sfruttare sia i vantaggi B-Tree che LSM, rendendola sofisticata e il miglior motore di archiviazione per MongoDB. L'IT è in realtà il motore di archiviazione predefinito di MongoDB.

Multiplenines Diventa un DBA MongoDB - Portare MongoDB in produzioneScopri cosa devi sapere per distribuire, monitorare, gestire e ridimensionare MongoDBScarica gratuitamente

Architettura del motore di archiviazione WiredTiger

Come accennato in precedenza, coinvolge il concetto di due motori di archiviazione di base che sono i motori B-Tree e LSM Tree, quindi è un motore di archiviazione di controllo della concorrenza multiversione (MVCC). I meriti dei due combinati consentono al sistema di visualizzare un'istantanea del database nel momento in cui accede a una raccolta. I checkpoint sono stabiliti in modo tale che una visualizzazione coerente dei dati venga registrata su disco tra i checkpoint. In caso di crash tra i checkpoint, è facile recuperare con questi checkpoint o meglio, anche se non ci sono checkpoint per i dati, è possibile recuperarli dai file del diario del disco.

Ampio utilizzo della cache anziché del disco per migliorare la bassa latenza. Il motore di archiviazione WiredTiger fa molto affidamento sulla cache della pagina del sistema operativo in modo tale che i dati compressi vengano recuperati senza coinvolgere il disco. Inoltre, i dati utilizzati meno di recente vengono cancellati dalla RAM preservando più spazio per la cache.

Il concetto di archiviazione B-Tree offre letture altamente efficienti e buone prestazioni di scrittura con un basso utilizzo della CPU. Ha anche un'implementazione di blocco a livello di documento che consente carichi di lavoro altamente simultanei e di conseguenza questa concorrenza facilita al server di sfruttare molte CPU principali. In generale, tutte queste tesi migliorano l'elevata scalabilità del database.

L'edizione aziendale supporta la crittografia su disco per il motore di archiviazione WiredTiger, una funzionalità che migliora notevolmente la sicurezza dei dati.

Il motore di archiviazione WiredTiger abilita una registrazione write-ahead che garantisce un ripristino automatico dell'arresto anomalo e rende le scritture durature.

Vantaggi del motore di archiviazione WiredTiger

  • Archiviazione efficiente grazie a molteplici tecnologie di compressione come Snapp, gzip e compressioni dei prefissi.
  • È altamente scalabile con letture e scritture simultanee. Questo alla fine migliora il throughput e le prestazioni generali del database.
  • Garantisci la durabilità dei dati con il registro write-ahead e l'utilizzo dei checkpoint.
  • Utilizzo della memoria ottimale. WiredTiger utilizza sia la cache interna che la cache del file system.
  • Con la cache del filesystem, MongoDB può facilmente utilizzare la memoria libera non utilizzata dalla cache di WiredTiger.

Bloccate del motore di archiviazione WiredTiger

Difficoltà nell'aggiornamento dei dati. Lo schema di concorrenza impedisce gli aggiornamenti sul posto in modo tale che l'aggiornamento di un valore di campo in un documento riscriva l'intero documento.

Conclusione

Il motore di archiviazione WiredTiger integra i concetti di due principali motori di archiviazione, il motore di archiviazione albero B-Tree e LSM per ottenere prestazioni massime e ottimali. Soppesare i vantaggi di entrambi i casi e utilizzarli collettivamente rende WiredTiger un motore di archiviazione per uso generale. Per questo motivo, nelle attuali versioni di MongoDB, è il motore di archiviazione predefinito. Ciò implica che se davvero non hai una buona ragione per detestarlo, allora è il migliore per i tuoi dati. Tuttavia, la scelta del motore di archiviazione si basa fortemente sul caso d'uso dei dati o piuttosto sul punto in cui WiredTiger non può soddisfare le tue aspettative. In generale, questo è il miglior motore di archiviazione predefinito.