Análisis de Couchbase

Analiza esto: MongoDB & Couchbase Analytics.

El objetivo de la informática es el conocimiento, no los números. - Richard Hamming

La espiral de dirigir el negocio, analizar qué cambiar y a qué cambiar, y luego cambiar el negocio es eterna. Si haces el análisis correcto, tu espiral aumentará. Si no, caerás en espiral.

CouchbaseCouchbase, al igual que otros pioneros de los sistemas NoSQL, se creó para dar respuesta a los requisitos extremos de escala, rendimiento y disponibilidad del mundo web 2.0. De la simple clave-valor, Couchbase ha evolucionado para manejar consulta, busque en y análisis - a escala. Cada uno de ellos son motores creados específicamente e integrados a través de la plataforma de Couchbase multidimensional arquitectura. Tanto el servicio de consulta como el de análisis hablan N1QL. ¿Por qué construir dos motores distintos que hablan el mismo idioma? Porque...

Talla única: Una idea cuyo tiempo ha llegado y se ha ido. - Michael Stonebraker

El motor de consulta se creó para la carga de trabajo operativa y el motor de análisis para la carga de trabajo analítica. Hemos en comparación con los dos motores y dado el orientación. MongoDB ha seguido un camino similar, pasando de ser una base de datos en clúster que gestionaba cargas de trabajo sencillas a cargas de trabajo complejas para análisis y consultas en lagos de datos. 

El año pasado, MongoDB anunció nodos analíticos en sus clústeres para el procesamiento analítico. En este blog, comparamos y contrastamos los dos motores para el caso de uso analítico.

Couchbase: Arquitectura de alto nivel

Dentro de Couchbase Analytics: Arquitectura de alto nivel
Nodos de análisis MongoDB:

Vamos a comparar y contrastar el soporte analítico en los nodos MongoDB Analytic y Couchbase Analytics.

Nodos analíticos MongoDB Análisis de Couchbase
Docs https://docs.atlas.mongodb.com/reference/replica-set-tags/ https://docs.couchbase.com/server/6.5/analytics/introduction.html
Arquitectura Utilizar un conjunto de nodos réplica secundarios con una copia completa de los datos operativos. El lenguaje de consulta es el mismo (MQL); el procesamiento de las consultas es el mismo que el de la carga de trabajo operativa. Distintos nodos de análisis que disponen de un subconjunto de datos operativos definido por el usuario. El lenguaje de consulta es el mismo (N1QL); el procesamiento de consultas está diseñado para conjuntos de datos más grandes (véase más adelante).
Detalles de la arquitectura Nodos analíticos mapeados de Atlas Couchbase Analytics: NoETL para el análisis escalable de datos NoSQL
Modelo de datos BSON JSON
Lenguaje de consulta MQL - Lenguaje de consulta de MongoDB N1QL - Lenguaje de consulta de forma normal no 1; SQL para JSON
Página de consulta Consulta MongoDB Consulta analítica
Tratamiento de consultas Igual que el procesamiento de consultas operativas, utilizando mongos y mongod para el procesamiento de consultas distribuidas.  Motor de análisis diseñado para el procesamiento paralelo masivo (MPP) de los datos. Cada N1QL 
Optimizador de consultas Optimizador basado en formas; Requiere gestión de planes. Optimizador basado en reglas. No requiere gestión de planes. 
Explique Texto y gráficos. Texto y gráficos.
Indexación Hay que crear el índice en el operativo y hacer que se copie. Sólo análisis Indexación
Procesamiento paralelo Cada nodo Mongod ejecuta las operaciones básicas y los mongos las combinan (por ejemplo, el grupo final y la agregación).  Gestionar consultas analíticas complejas de forma eficaz y ofrecer

las propiedades de escalado y aceleración deseadas, el Servicio de Análisis

emplea los mismos tipos de MPP de última generación y no comparte nada

(procesamiento paralelo masivo) basadas en estrategias de procesamiento de consultas [Del documento de VLDB]

Indexación Indexación local  Indexación local
Uniones - Lengua 1TP4Búsqueda admite uniones de igualdad simple entre dos colecciones; sólo se permiten campos escalares simples. Las matrices deben desenrollarse antes de unirse.

  1. Una de las dos colecciones NO PUEDE ser fragmentada. Es decir, no se puede unir en colecciones grandes.
  2. Necesidad de una etapa de canalización separada para las uniones simples sin igualdad. Esto significa que las consultas son ineficientes y consumen muchos recursos; 
  3. Esto es más o menos equivalente a los LEFT OUTER JOINs en SQL. Los usuarios tendrán que realizar un procesamiento de canalización adicional para obtener el INNER JOIN y otras uniones.
Operaciones INNER JOIN, LEFT OUTER JOIN, NEST y UNNEST.

  1. Sintaxis SQL estándar
  2. Soporta sharded dataset por defecto.
  3. Admite la igualdad y expresiones de unión arbitrariamente complejas.
Tratamiento de consultas: tamaño de los datos Las etapas intermedias de la canalización de aggregate() no pueden ser superiores a 100 MB en tamaño. Los escritores/usuarios de consultas deben utilizar un indicador especial para permitirlo. Sin limitaciones; Cuando los datos intermedios (por ejemplo, tabla hash, datos de ordenación) se hacen más grandes, se vuelcan al disco.
Procesamiento de consultas: Tipo de unión (aproximadamente) LEFT OUTER JOIN INNER JOIN

LEFT OUTER JOIN

Buscar en Admite la búsqueda dentro de la consulta. Utiliza la búsqueda Atlas en la nube y la búsqueda básica basada en el árbol B en las instalaciones.  El servicio Analytics no tiene una búsqueda integrada. Tenemos que utilizar el servicio de consulta con FTS para combinar la búsqueda dentro de una consulta.
Consultas admitidas find() y aggregate() Sentencia SELECT (de SQL y SQL++)
Tipos de JOIN (Idioma) $lookup - esto es aproximadamente LEFT OUTER JOIN a través de  INNER JOIN

LEFT OUTER JOIN 

Tipos de JOIN (Aplicación)
  1. Unir sólo entre una colección sharded y otra no sharded.
  2. Sólo bucle anidado (NL). (NL es malo para el rendimiento en el manejo de datos de gran tamaño).
  3. Los resultados intermedios están limitados a 100 MB de memoria. El usuario tendrá que conocer el tamaño y utilizar las opciones para permitir el desbordamiento.
  1. Une conjuntos de datos fragmentados; todos los conjuntos de datos están fragmentados por defecto.
  2. Admite bucle anidado, broadcast y hash join paralelo
  3. Admite tanto Nested Loop join como Hash join. 
  4. Utiliza Hash join por defecto - muy adecuado para el procesamiento de datos a gran escala. 
  5. No hay limitaciones de tamaño para los datos intermedios.
Agregación Admite la agrupación y agregación común mediante el método aggregate(). Admite la agrupación y agregación común mediante GROUP BY y las respectivas agregaciones. Consulte a continuación los agregados con ventanas. 
Funciones agregadas en ventana: Probablemente, la función SQL más interesante. No disponible. Completamente compatible.

RANGO()

PERCENT_RANK()

DENSERANK()

ROW_NUMBER()

CUME_DIST()

PRIMER_VALOR()

ÚLTIMO_VALOR()

NTH_VALUE()
LAG()

LEAD()

NTILE()

RATIO_TO_REPORT()

Análisis de datos de clústeres múltiples Todos los datos analizados proceden de un único clúster MongoDB. 6.5: Todos los datos analizados proceden de un único clúster Couchbase.

6.6: Puede ingerir y analizar los datos de múltiples clusters Couchbase.

Datos externos Admite el procesamiento de consultas sobre datos S3. Admite los formatos BSON, CSV, TSV, Avro y Parquet. 6.6: Soporta datos externos JSON, CSV y TSV en S3
Fuentes de datos externas Admite fuentes de datos adicionales a través del controlador JDBC. Integrado con la tubería de agregación a través de, tienes que esperar para ello, Operador $sql. Ninguna, excepto las mencionadas anteriormente. 
Subconsultas Subconsultas a través del canal de agregación. Subconsultas SQL estándar.
Plan de consulta 1TP4Explicar EXPLICAR
DataViz Gráficos MongoDB integrados Sin DataViz integrado
Inteligencia empresarial  Knowi

Tableau y otros motores de BI compatibles con ODBC y JDBC.

Knowi

Tableau y otros motores de BI compatibles con ODBC y JDBC.

 

Referencias:

  1. Comparación de dos enfoques basados en SQL para consultar JSON: SQL++ y SQL:2016
  2. De SQL a NoSQL - 7 métricas para comparar lenguajes de consulta
  3. Couchbase Analytics: NoETL para el análisis escalable de datos NoSQL

 

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

Author

Posted by Keshav Murthy

Keshav Murthy is a Vice President at Couchbase R&D. Previously, he was at MapR, IBM, Informix, Sybase, with more than 20 years of experience in database design & development. He lead the SQL and NoSQL R&D team at IBM Informix. He has received two President's Club awards at Couchbase, two Outstanding Technical Achievement Awards at IBM. Keshav has a bachelor's degree in Computer Science and Engineering from the University of Mysore, India, and has received twenty four US patents.

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.