Análisis de Couchbase

N1QL: ¿Consultar o analizar?

Nota: Esta nota de recomendación se ha redactado en colaboración con Till Westmann y Mike Carey, que dirigen el departamento de I+D de análisis de Couchbase.

[La segunda parte de este artículo de Even Pease está en: https://www.couchbase.com/blog/part-2-n1ql-to-query-or-to-analyze/]

Tanto el servicio de consultas como el de análisis de Couchbase soportan N1QL (SQL para JSON). Una pregunta habitual es: "¿Qué servicio debe ejecutar mi consulta?". La respuesta rápida es: "Depende de su carga de trabajo". Este blog explica esta respuesta.

Una transacción es cuando compras café y pastel en el supermercado. El análisis es cuando la tienda de comestibles examina todos los datos de ventas para ver qué día de la semana, qué mes del año se vende más café y/o pasteles, y así poder planificar el inventario, las ventas y los precios.

Todas las empresas hacen estas tres cosas en un ciclo o espiral [El Objetivo].

  1. Ejecutar el proceso empresarial para suministrar productos o servicios a los clientes.
  2. Analizar la empresa para determinar qué hay que cambiar y a qué.
  3. Haz que se produzca el cambio.

En la empresa actual, cada paso requiere aplicaciones que lo realicen.

El Servicio de Consultas es utilizado por las aplicaciones necesarias para el funcionamiento de la empresa; está diseñado para un gran número de consultas concurrentes, cada una de las cuales realiza una pequeña cantidad de trabajo. En el mundo de los RDBMS, esta carga de trabajo se denomina carga de trabajo OLTP.

Las aplicaciones o herramientas utilizadas para el análisis tienen diferentes características de carga de trabajo. Éstas suelen utilizar el Servicio de Análisis; está diseñado para un menor número de consultas concurrentes que analizan un mayor número de documentos. En el mundo de los RDBMS, esta carga de trabajo se denomina carga de trabajo OLAP.  

Profundicemos en los detalles de estos dos servicios.

Servicio de consulta Servicio de análisis
Tutoriales
https://query-tutorial.couchbase.com/tutorial/#1 https://sqlplusplus-tutorial.couchbase.com/tutorial/#1
Comparación a alto nivel
Se utiliza para la manipulación de datos dentro de la lógica de la aplicación Se utiliza para informes, análisis (históricos, interactivos), cuadros de mando
Consultas breves

 - SQL relativamente sencillo

 - Normalmente se trata de pequeñas cantidades de datos

Operaciones más largas

 - SQL complejo con análisis

 - Suelen implicar grandes cantidades de datos

Ejecutar SELECT, INSERT, UPDATE, DELETE, MERGE para aplicaciones operativas Ejecutar SELECT para el análisis
Actualizaciones aleatorias

 - Actualizar pocos documentos por consulta

No hay actualizaciones

 - Cambios introducidos desde el Servicio de Datos

Latencia de un milisegundo a un segundo,

alto rendimiento (10-1000 qps), el objetivo de rendimiento es consultas/segundo

Tiempo de respuesta de segundos a minutos,

<1-10 consultas por segundo,

el objetivo de rendimiento es segundos/consulta

Gran número de índices Menos índices
Consultas escritas por el desarrollador; las consultas generadas son bien conocidas Consultas ad hoc; informes complejos, cuadros de mando, carga de trabajo de BI
Las consultas se ejecutan en un único nodo de consulta utilizando la infraestructura de datos e índices distribuidos. Las consultas se ejecutan en todos los nodos de análisis utilizando su infraestructura distribuida de cálculo, índices y datos.
Comparación técnica: Arquitectura
Las consultas se ejecutan en modo SMP, el rendimiento es escalable añadiendo nuevos nodos de consulta. Las consultas se ejecutan en modo MPP, pueden manejar datos más grandes o reducir los tiempos de ejecución de las consultas añadiendo nuevos nodos de análisis.
Comparación técnica: Optimizer
Unión de bucles anidados por defecto

Hash join mediante sugerencia de consulta

Hash join paralelo por defecto,

Unión de bucles anidados (índice) o unión de difusión mediante sugerencia de consulta

Comparación técnica: Índices
Índices secundarios globales Índices secundarios locales (ubicados junto a las particiones de datos)
Utiliza índices optimizados para memoria; índices secundarios estándar (Plasma) Índices secundarios basados en árboles combinados con estructura logarítmica (LSM)
Soporte para escaneos de índices cubiertos y no cubiertos Exploraciones de índices no cubiertas
Puede utilizar el índice de texto completo para las consultas (6.5)
Comparación técnica: Ejecución
La mayoría de las consultas se preparan una vez y se ejecutan muchas veces Consultas ad hoc y exploratorias
Los SDK utilizan el modelo preparar-ejecutar basado en una bandera ad hoc Los SDK ofrecen consultas ad hoc y parametrizadas
La mayoría de las operaciones se realizan en memoria; sólo cuando una exploración de índices devuelve datos de gran tamaño se escriben en el disco de relleno Operaciones de memoria limitada en datos de gran tamaño (superior a la memoria del clúster) con un desbordamiento gradual según sea necesario.
Paralelismo de consultas en un único nodo Operadores de unión, ordenación, agregación y agregación agrupada multinodo en paralelo con partición
Espera un único dispositivo de almacenamiento (posiblemente RAID) Uso sin RAID de varios dispositivos de almacenamiento
Aislamiento del rendimiento mediante índices de cobertura que admiten operaciones de escaneado, agrupación y agregación en nodos Index Service. Aislamiento del rendimiento para todas las consultas mediante la sombra de los datos en los nodos del Servicio de Análisis.
Documentación técnica
https://docs.couchbase.com/server/6.0/n1ql/n1ql-language-reference/index.html https://docs.couchbase.com/server/6.0/analytics/introduction.html
Información técnica
https://www.couchbase.com/products/n1ql https://www.couchbase.com/sqlplusplus
Libros técnicos
https://www.couchbase.com/blog/a-guide-to-n1ql-features-in-couchbase-5-5-special-edition/ https://resources.couchbase.com/sql_tutorial

https://www.amazon.com/SQL-Users-Tutorial-Don-Chamberlin/dp/0692184503/

 

  1. [El OBJETIVO] El Objetivo: El proceso de mejora continua. https://www.amazon.com/Goal-Process-Ongoing-Improvement/dp/0884271951/ref=sr_1_1?keywords=the+goal&qid=1547969233&sr=8-1
  2. Sistemas de compromiso para los puestos de trabajo de los clientes: https://marketing.cioreview.com/cxoinsight/systems-of-engagement-for-customer-jobs-nid-24677-cid-51.html
  3. Parte 2 de este artículo de Even Pease: https://www.couchbase.com/blog/part-2-n1ql-to-query-or-to-analyze/
Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Keshav Murthy

Keshav Murthy es vicepresidente de I+D en Couchbase. Anteriormente, trabajó en MapR, IBM, Informix y Sybase, y cuenta con más de 20 años de experiencia en diseño y desarrollo de bases de datos. Dirigió el equipo de I+D de SQL y NoSQL en IBM Informix. Ha recibido dos premios President's Club en Couchbase y dos premios Outstanding Technical Achievement Awards en IBM. Keshav es licenciado en Informática e Ingeniería por la Universidad de Mysore (India) y ha obtenido veinticuatro patentes estadounidenses.

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.