MongoDB
Motores de almacenamiento enchufables
Buscar..
Observaciones
En MongoDB 3.0, MMAP (predeterminado) y WiredTiger son los motores de almacenamiento estable. Por lo general, si su aplicación es de lectura pesada, use MMAP. Si su escritura es pesada, use WiredTiger.
Su solución también puede tener miembros de un conjunto de réplicas mixtas donde puede tener un nodo configurado con MMAP y otro con WiredTiger. Puede usar uno para insertar datos masivos y el otro para leer con herramientas analíticas.
Después de MongoDB 3.2, WiredTiger se convierte en el motor predeterminado.
MMAP
MMAP es un motor de almacenamiento conectable que lleva el nombre del comando mmap()
Linux. Asigna archivos a la memoria virtual y optimiza las llamadas de lectura. Si tiene un archivo grande pero necesita leer solo una pequeña parte de él, mmap()
es mucho más rápido que una llamada read()
que llevaría todo el archivo a la memoria.
Una desventaja es que no se pueden procesar dos llamadas de escritura en paralelo para la misma colección. Por lo tanto, MMAP tiene un bloqueo a nivel de colección (y no un bloqueo a nivel de documento como lo ofrece WiredTiger). Este bloqueo de recopilación es necesario porque un índice MMAP puede hacer referencia a múltiples documentos y, si esos documentos pudieran actualizarse simultáneamente, el índice sería inconsistente.
WiredTiger
WiredTiger admite árboles LSM para almacenar índices . Los árboles LSM son más rápidos para las operaciones de escritura cuando necesita escribir grandes cargas de trabajo de inserciones aleatorias.
En WiredTiger, no hay actualizaciones en el lugar . Si necesita actualizar un elemento de un documento, se insertará un nuevo documento mientras que se eliminará el documento anterior.
WiredTiger también ofrece concurrencia a nivel de documentos . Se supone que dos operaciones de escritura no afectarán al mismo documento, pero si lo hace, una operación se rebobinará y se ejecutará más adelante. Eso es un gran aumento de rendimiento si los rebobinados son raros.
WiredTiger admite los algoritmos Snappy y zLib para la compresión de datos e índices en el sistema de archivos. Snappy es el predeterminado. Requiere menos CPU, pero tiene una tasa de compresión más baja que zLib.
Cómo usar el motor WiredTiger
mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>
Nota:
- Después de mongodb 3.2, el motor predeterminado es WiredTiger.
-
newWiredTigerDBPath
no debe contener datos de otro motor de almacenamiento. Para migrar sus datos, debe volcarlos y volver a importarlos en el nuevo motor de almacenamiento.
mongodump --out <exportDataDestination>
mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>
mongorestore <exportDataDestination>
En memoria
Todos los datos se almacenan en la memoria (RAM) para una lectura / acceso más rápidos.
rocas mongo
Un motor de valor-clave creado para integrarse con RocksDB de Facebook.
Fusión-io
Un motor de almacenamiento creado por SanDisk que hace posible omitir la capa del sistema de archivos del sistema operativo y escribir directamente en el dispositivo de almacenamiento.
TokuMX
Un motor de almacenamiento creado por Percona que utiliza índices de árboles fractales.