sql >> Base de Datos >  >> NoSQL >> MongoDB

Una descripción general del motor de almacenamiento WiredTiger para MongoDB

Cada sistema de base de datos tiene un componente estructurado que es responsable de mantener cómo se almacenan y sirven los datos tanto en la memoria como en el disco. Esto a menudo se denomina motor de almacenamiento. Con mayor frecuencia, al evaluar la arquitectura de las bases de datos operativas, los desarrolladores tienen en cuenta factores de primera mano, como el modelado de datos, la latencia reducida, las operaciones de rendimiento mejoradas, la consistencia de los datos, la facilidad de escalabilidad y la tolerancia mínima a fallas. A pesar de eso, es necesario tener un conocimiento detallado y avanzado sobre el motor de almacenamiento subyacente para un mejor ajuste para que cumpla con los factores destacados de manera eficiente.

A continuación se ilustra un ciclo simple de una aplicación al sistema db...

Ejemplo de arquitectura de aplicación común

Motor de almacenamiento WiredTiger

MongoDB admite principalmente 3 motores de almacenamiento cuyo rendimiento difiere según algunas cargas de trabajo específicas. Los motores de almacenamiento son:

  1. Motor de almacenamiento WiredTiger
  2. Motor de almacenamiento en memoria
  3. Motor de almacenamiento MMAPv1

El motor de almacenamiento WiredTiger tiene configuraciones de un motor basado en árbol B y un motor basado en árbol de combinación estructurado de registros.

Motor basado en árbol B

Este es uno de los antiguos motores de almacenamiento del que se derivan otras configuraciones sofisticadas. Es una estructura de datos de árbol autoequilibrada que garantiza la clasificación de datos y permite búsquedas, acceso secuencial, inserciones y eliminaciones de forma logarítmica. Es un almacenamiento basado en filas, de modo que cada fila se considera como un único registro en la base de datos

Méritos de un motor de almacenamiento B-Tree

  • Lecturas de alto rendimiento y baja latencia. B-Trees tiene una tendencia a crecer ancho y poco profundo, de modo que se atraviesan muy pocos nodos.
  • Mantiene las claves ordenadas para el recorrido secuencial y los índices se equilibran con un algoritmo recursivo.
  • Los nodos de almacenamiento interior siempre se mantienen al menos a la mitad, lo que en general reduce el desperdicio.
  • Fácil de manejar una gran cantidad de inserciones y eliminaciones en poco tiempo.
  • La indexación jerárquica se emplea con el objetivo de reducir las lecturas de disco.
  • Acelera las inserciones y eliminaciones mediante el uso de bloques parcialmente completos.

Limitaciones de un motor de almacenamiento B-Tree

  • Bajo rendimiento de escritura debido a la necesidad de garantizar una estructura de datos bien ordenada con escrituras aleatorias. Las escrituras aleatorias son más caras que las escrituras secuenciales en el almacenamiento.
  • Penalización de escritura de modificación lista de un bloque completo, incluso para una actualización menor de una fila en un bloque.

Motor basado en árbol de combinación estructurada de registros

Debido al bajo rendimiento de escritura del motor basado en B-Tree, los desarrolladores tuvieron que idear una forma de hacer frente a conjuntos de datos más grandes para DBMS. Por lo tanto, se estableció el motor basado en árboles de combinación estructurada de registros (Árbol LSM) para mejorar el rendimiento del acceso indexado a archivos con un alto volumen de escritura durante un período prolongado. En este caso, las escrituras aleatorias en la primera etapa de la memoria en cascada se convierten en escrituras secuenciales en el primer componente basado en disco.

Méritos de un motor de almacenamiento en árbol LSM

  • La capacidad de realizar escrituras secuenciales rápidas mejora el manejo rápido de grandes datos de rápido crecimiento.
  • Adecuado para el almacenamiento en niveles, lo que brinda a las organizaciones una mejor selección en términos de costo y rendimiento. Los SSD basados ​​en flash ofrecen un gran rendimiento en este caso.
  • Mejor compresión y eficiencia de almacenamiento, por lo tanto, ahorra espacio de almacenamiento y mejora el almacenamiento casi completo
  • Los datos siempre están disponibles para consulta inmediata.
  • Las inserciones son muy rápidas.

Limitaciones de un motor de almacenamiento B-Tree

Consume más memoria en comparación con B-Tree durante las operaciones de lectura debido a la amplificación de lectura y espacio. Sin embargo, algunos enfoques, como los filtros de floración, han mitigado este efecto en la práctica, de modo que se reduce la cantidad de archivos que se deben verificar durante una consulta puntual.

La tecnología WiredTiger se diseñó para aprovechar las ventajas de B-Tree y LSM, lo que la convierte en el mejor motor de almacenamiento sofisticado para MongoDB. En realidad, TI es el motor de almacenamiento predeterminado de MongoDB.

Varios nueves Conviértase en un administrador de bases de datos de MongoDB - Llevando MongoDB a la producción Obtenga información sobre lo que necesita saber para implementar, monitorear, administrar y escalar MongoDBDescargar gratis

Arquitectura del motor de almacenamiento WiredTiger

Como se mencionó anteriormente, involucra el concepto de dos motores de almacenamiento básicos que son los motores B-Tree y LSM Tree, por lo tanto, es un motor de almacenamiento de control de concurrencia multiversión (MVCC). Los méritos de los dos combinados permiten que el sistema vea una instantánea de la base de datos en el momento en que accede a una colección. Los puntos de control se establecen de tal manera que se graba en el disco una vista uniforme de los datos entre los puntos de control. En caso de un bloqueo entre los puntos de control, es fácil recuperarlos con estos puntos de control o, más bien, incluso si no hay puntos de control para los datos, uno puede recuperarlos de los archivos de diario del disco.

Uso extensivo de caché en lugar de disco para mejorar la baja latencia. El motor de almacenamiento de WiredTiger se basa en gran medida en la caché de páginas del sistema operativo, de modo que los datos comprimidos se recuperan sin involucrar el disco. Además, los datos usados ​​menos recientemente se borran de la memoria RAM y se conserva más espacio para la memoria caché.

El concepto de almacenamiento B-Tree ofrece lecturas altamente eficientes y un buen rendimiento de escritura con una baja utilización de la CPU. También tiene una implementación de bloqueo a nivel de documento que permite cargas de trabajo altamente concurrentes y, en consecuencia, esta concurrencia facilita que el servidor aproveche muchas CPU centrales. En general, todas estas tesis mejoran la alta escalabilidad de la base de datos.

La edición empresarial admite el cifrado en disco para el motor de almacenamiento WiredTiger, que es una característica que mejora en gran medida la seguridad de los datos.

El motor de almacenamiento WiredTiger permite un registro de escritura anticipada que garantiza una recuperación automática de fallas y hace que las escrituras sean duraderas.

Ventajas del motor de almacenamiento WiredTiger

  • Almacenamiento eficiente debido a múltiples tecnologías de compresión como Snapp, gzip y compresiones de prefijo.
  • Es altamente escalable con lecturas y escrituras simultáneas. Al final, esto mejora el rendimiento y el rendimiento general de la base de datos.
  • Garantice la durabilidad de los datos con el registro de escritura anticipada y el uso de puntos de control.
  • Uso de memoria óptimo. WiredTiger utiliza tanto la memoria caché interna como la memoria caché del sistema de archivos.
  • Con el caché del sistema de archivos, MongoDB puede usar fácilmente la memoria libre que no usa el caché de WiredTiger.

Retrocesos del motor de almacenamiento WiredTiger

Dificultades en la actualización de datos. El esquema de simultaneidad evita las actualizaciones en el lugar, de modo que la actualización de un valor de campo en un documento reescribe todo el documento.

Conclusión

El motor de almacenamiento WiredTiger integra conceptos de dos motores de almacenamiento principales, el motor de almacenamiento en árbol B-Tree y LSM para lograr un rendimiento máximo y óptimo. Sopesar las ventajas de ambos casos y emplearlos colectivamente hace que WiredTiger sea un motor de almacenamiento de propósito general. Por ello, en las versiones actuales de MongoDB, es el motor de almacenamiento por defecto. Esto implica que si realmente no tiene una razón sólida para aborrecerlo, entonces es lo mejor para sus datos. Sin embargo, la elección del motor de almacenamiento depende en gran medida de su caso de uso de datos o, más bien, de que WiredTiger no pueda cumplir con sus expectativas. En general, este es el mejor motor de almacenamiento predeterminado.