Consulta SQL++ / N1QL

Indexación y consulta más rápidas: Introducción a los índices secundarios globales optimizados para memoria - PARTE II

En PARTE I, hemos cubierto las diferencias en la indexación con índices locales y globales. También hemos concluido con las 2 opciones de almacenamiento que Couchbase Server proporciona para los índices secundarios globales: GSI estándar y GSI optimizado para memoria. Vamos a sumergirnos ahora en GSI optimizado para memoria;

¿Qué es un índice secundario global optimizado para memoria?

En post anterior sobre índices globales y localeshemos hablado extensamente de cómo los índices globales reducen la latencia de las consultas frente a los índices locales. También vimos lo difícil que puede ser mantener estos índices globales: Los índices globales requieren un subconjunto de nodos para mantener un gran cluster de nodos. En el caso de Couchbase Server, 10-100K ops/sec es la norma para un cluster.

Desafíos ¡no terminan ahí! La indexación global puede ser aún más difícil en casos como los índices de matrices (más información sobre los índices de matrices aquí). Los índices de matrices indexan los elementos de una incrustado array en un documento JSON y las mutaciones a documentos con arrays amplifican un documento a muchas escrituras de índice. El índice secundario global optimizado para memoria (MOI) se ha creado específicamente para resolver los retos de estas aplicaciones más exigentes. itinerario de viaje, marcador y detección del fraude - No hay problema.

MOI puede proporcionar más de 10 veces mejor latencia y rendimiento bajo mutaciones más rápidas a los datos en comparación con GSI estándar y aquí es cómo lo hace:

  1. El procesamiento sin bloqueo para la indexación simplemente permite una concurrencia masiva al mantener la mutación entrante al índice.
  2. La estructura Skiplist optimiza el almacenamiento en memoria, a diferencia de los índices B+Tree.
  3. Forzar el almacenamiento del índice en memoria, significa que MOI no funciona a velocidades de disco para almacenar el índice - en su lugar toma instantáneas regulares a disco sólo para recuperación.

Índices secundarios globales estándar y optimizados para memoria

Los índices optimizados para memoria se añaden en la versión 4.5 como opción de almacenamiento adicional para los GSI. Los índices secundarios globales estándar existen desde la versión 4.0. Los administradores pueden configurar GSI con el almacenamiento GSI estándar, que utiliza ForestDB por debajo, para los índices que no caben en memoria o pueden elegir el GSI optimizado en memoria para una indexación y consultas en memoria más rápidas.

Normalmente, los índices se crean para reducir la latencia de las consultas y mantener los índices en memoria reduce la latencia mucho más. MOI está diseñado para reducir la latencia y más alto Las necesidades de rendimiento y MOI requieren máquinas con mucha memoria para mantener el índice en RAM. El GSI estándar puede volcarse al disco cuando se agota la memoria. El rendimiento del subsistema IO pasa a ser extremadamente importante para que la GSI estándar pueda funcionar bien. Sin embargo, a diferencia de la GSI estándar, hMOI no requiere un subsistema de E/S de alto rendimiento. Como MOI se ejecuta a velocidades en memoria, los tiempos de indexación inicial y continua son más rápidos con MOI en comparación con GSI estándar. 

La siguiente tabla resume las principales diferencias entre los GSI estándar y los optimizados para memoria;

Creación y gestión de GSI optimizados para memoria

Independientemente del tipo de tienda, CREATE INDEX es la forma de crear índices secundarios globales en Couchbase Server. De hecho no hay opciones específicas de MOI en la sentencia CREATE INDEX. En general, la alta disponibilidad y la mecánica de particionado permanecen iguales con GSI estándar vs optimizado para memoria. Sin embargo, es importante tener en cuenta que MOI viene con estadísticas adicionales y alertas para ayudar con la colocación de índices y con la gestión de índices.

Colocación de índices optimizados en memoria en el clúster del servidor Couchbase

Los índices optimizados para memoria proporcionan 2 estadísticas importantes que pueden guiar la colocación de MOI con la cláusula NODES en CREAR ÍNDICE.

  • MAX Índice RAM Utilizado %: Informa de la cuota máxima de ram utilizada en porcentaje (%) a través del clúster y en cada nodo tanto en tiempo real como con un historial en minutos, horas, días, semanas y más.
  • RAM de índice restante: Informa de la cuota de RAM de índice libre para el clúster como total y en cada nodo, tanto en tiempo real como con un historial en minutos, horas, días, semanas y más.

Cuando coloques el siguiente índice optimizado en memoria, puedes mirar la disponibilidad de memoria en el nodo y colocar tu índice basándote en el tamaño en memoria.

Alertas con índices optimizados para memoria

Quedarse sin memoria detiene la indexación con MOI por lo que es importante para los administradores poder ver visualmente si un nodo se está acercando a su cuota de RAM. La estadística MAX Index RAM Used % (discutida arriba) está construida exactamente para eso. También hay una alerta que avisará al usuario interactivo o notificará a los administradores por correo electrónico. La alerta "acercándose a la cuota completa de RAM del indexador"se dispara si se agotan más de 75% de la Cuota de RAM del Indexador en cualquier nodo del cluster. Puede configurar las alertas en la Consola Web, en Configuración.

La documentación técnica proporciona información más detallada sobre MOI y GSI en general. Puede obtener más información sobre cómo seleccionar el modo de almacenamiento para GSI y cómo administrar el servicio Index y los GSI en la guía para administradores aquí y encuentre la guía de arquitectura para el servicio de indexación y los indexadores aquí.

En Parte III de la serie, hablaremos sobre el nuevo Modo de Escritura Circular con Índices Globales Estándar y cómo el Modo de Escritura Circular mejora el Rendimiento IO al Indexar datos en Couchbase Server 4.5.

Feliz pirateo

-Cihan

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Cihan Biyikoglu, Director de Gestión de Productos, Couchbase

Cihan Biyikoglu es director de gestión de productos en Couchbase, responsable del producto Couchbase Server. Cihan es un entusiasta de los grandes datos que aporta más de veinte años de experiencia al equipo de productos de Redis Labs. Cihan comenzó su carrera como desarrollador de C/C++.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.