Análise do Couchbase

Analise isso: MongoDB e Couchbase Analytics.

O objetivo da computação é o insight, não os números. - Richard Hamming

A espiral de administrar o negócio, analisar o que mudar e para que mudar, e depois mudar o negócio é eterna. Se fizer a análise correta, sua espiral aumentará. Caso contrário, você entrará em uma espiral descendente.

CouchbaseO Couchbase, assim como os outros pioneiros dos sistemas NoSQL, foi criado para atender aos requisitos extremos de escala, desempenho e disponibilidade do mundo da Web 2.0. Do simples valor-chave, o Couchbase evoluiu para lidar com consulta, pesquisa e análises - em escala. Cada um deles é um mecanismo criado para fins específicos, integrado por meio do multidimensional arquitetura. Tanto o serviço de consulta quanto o de análise falam N1QL. Por que criar dois mecanismos distintos que falam a mesma linguagem? Porque...

O tamanho único serve para todos: An Idea Whose Time Has Come and Gone. - Michael Stonebraker

O mecanismo de consulta foi criado para a carga de trabalho operacional e o mecanismo do Analytics para a carga de trabalho de análise. Nós comparado os dois motores e dado o orientação. O MongoDB seguiu um caminho semelhante, passando de um banco de dados em cluster que lidava com uma carga de trabalho simples para uma carga de trabalho complexa para análises e consultas em data lakes. 

No ano passado, o MongoDB anunciou nós analíticos em seus clusters para processamento analítico. Neste blog, comparamos e contrastamos os dois mecanismos para o caso de uso de análise.

Couchbase: Arquitetura de alto nível

Por dentro do Couchbase Analytics: Arquitetura de alto nível
Nós de análise do MongoDB:

Vamos comparar e contrastar o suporte de análise nos nós do MongoDB Analytic e do Couchbase Analytics.

Nós analíticos do MongoDB Análise do Couchbase
Documentos https://docs.atlas.mongodb.com/reference/replica-set-tags/ https://docs.couchbase.com/server/6.5/analytics/introduction.html
Arquitetura Use um conjunto de nós de réplica secundários com uma cópia completa dos dados operacionais. A linguagem de consulta é a mesma (MQL); o processamento da consulta é o mesmo da carga de trabalho operacional. Nós analíticos distintos que têm um subconjunto definido pelo usuário dos dados operacionais. A linguagem de consulta é a mesma (N1QL); o processamento de consultas é projetado para conjuntos de dados maiores (veja abaixo).
Detalhes da arquitetura Nós analíticos mapeados do Atlas Análise do Couchbase: NoETL para análise escalável de dados NoSQL
Modelo de dados BSON JSON
Linguagem de consulta MQL - Linguagem de consulta do MongoDB N1QL - Linguagem de consulta de formato normal não 1; SQL para JSON
Página de consulta Consulta ao MongoDB Consulta do Analytics
Processamento de consultas O mesmo que o processamento de consultas operacionais, usando mongos e mongod para o processamento de consultas distribuídas.  Mecanismo de análise projetado para processamento paralelo massivo (MPP) dos dados. Cada N1QL 
Otimizador de consultas Otimizador baseado em forma; requer gerenciamento de planos. Otimizador baseado em regras. Não é necessário gerenciamento de planos. 
Explicar Texto e gráficos. Texto e gráficos.
Indexação É necessário criar o índice no operacional e copiá-lo. Indexação somente de análises
Processamento paralelo Cada nó Mongod executa as operações básicas e os mongos as combinam (por exemplo, grupo final e agregação).  Para lidar com consultas analíticas complexas de forma eficiente e fornecer

as propriedades desejadas de aumento de escala e de velocidade, o Analytics Service

emprega os mesmos tipos de MPP de última geração, sem compartilhamento

(processamento paralelo massivo) com base em estratégias de processamento de consultas [Do documento do VLDB].

Indexação Indexação local  Indexação local
Uniões - Idioma $lookup suporta uniões de igualdade simples entre duas coleções; somente campos escalares simples são permitidos. As matrizes precisam ser desdobradas antes das uniões.

  1. Uma das duas coleções NÃO PODE ser fragmentada. Isso significa que não é possível participar de coleções grandes.
  2. Necessidade de um estágio de pipeline separado para uniões simples e não iguais. Isso significa que as consultas são ineficientes e consomem muitos recursos; 
  3. Isso é mais ou menos equivalente a LEFT OUTER JOINs no SQL. Os usuários terão que fazer um processamento de pipeline adicional para obter o INNER JOIN e outras junções.
Operações INNER JOIN, LEFT OUTER JOIN, NEST e UNNEST.

  1. Sintaxe SQL padrão
  2. Oferece suporte a conjuntos de dados fragmentados por padrão.
  3. Oferece suporte à igualdade e a expressões de união arbitrariamente complexas.
Processamento de consultas: tamanho dos dados Os estágios intermediários do pipeline aggregate() não podem ser maiores que 100 MiB em tamanho. Os redatores/usuários de consultas devem usar um sinalizador especial para permitir isso. Sem limitações; quando os dados intermediários (por exemplo, tabela de hash, dados de classificação) ficam maiores, eles são transferidos para o disco.
Processamento de consultas: Tipo de união (aproximadamente) LEFT OUTER JOIN INNER JOIN

UNIÃO EXTERNA ESQUERDA

Pesquisa Oferece suporte à pesquisa dentro da consulta. Usa a pesquisa do Atlas na nuvem e a pesquisa básica baseada em árvore B no local.  O serviço Analytics não tem uma pesquisa integrada. Precisamos usar o serviço de consulta com o FTS para combinar a pesquisa em uma consulta.
Consultas suportadas find() e aggregate() Instrução SELECT (do SQL e SQL++)
Tipos de JOIN (idioma) $lookup - isso é mais ou menos LEFT OUTER JOIN via  INNER JOIN

UNIÃO EXTERNA ESQUERDA 

Tipos de JOIN (Implementação)
  1. Unir somente entre uma coleção fragmentada e outra não fragmentada.
  2. Somente loop aninhado (NL). (O NL é ruim para o desempenho ao lidar com dados grandes).
  3. Os resultados intermediários são limitados a 100 MB de memória. O usuário terá que saber o tamanho e usar opções para permitir o transbordamento.
  1. Une conjuntos de dados fragmentados; todos os conjuntos de dados são fragmentados por padrão.
  2. Oferece suporte a loop aninhado, broadcast e junção de hash paralelo
  3. Oferece suporte a junção de loop aninhado e junção de hash. 
  4. Use a junção de hash por padrão - adequada para processamento de dados em grande escala. 
  5. Não há limitações de tamanho para os dados intermediários.
Agregação Suporta o agrupamento e a agregação comuns por meio do método aggregate(). Oferece suporte ao agrupamento e à agregação comuns por meio do GROUP BY e das respectivas agregações. Veja abaixo as agregações em janela. 
Funções agregadas em janela: Provavelmente, o recurso mais legal do SQL. Indisponível. Totalmente suportado.

RANK()

PERCENT_RANK()

DENSERANK()

ROW_NUMBER()

CUME_DIST()

FIRST_VALUE()

LAST_VALUE()

NTH_VALUE()
LAG()

LEAD()

NTILE()

RATIO_TO_REPORT()

Análise de dados de vários clusters Todos os dados analisados são de um único cluster do MongoDB. 6.5: Todos os dados analisados são de um único cluster do Couchbase.

6.6: Pode ingerir e analisar os dados de vários clusters do Couchbase.

Dados externos Oferece suporte ao processamento de consultas em dados do S3. Oferece suporte aos formatos BSON, CSV, TSV, Avro e Parquet. 6.6: Suporte a dados externos JSON, CSV e TSV no S3
Fontes de dados externas Oferece suporte a fontes de dados adicionais por meio do driver JDBC. Integrado com o pipeline de agregação via, você terá que esperar por ele, Operador $sql. Nenhum, exceto os mencionados acima. 
Subconsultas Subconsultas por meio do pipeline de agregação. Subconsultas SQL padrão.
Plano de consulta 1TP4Explicar EXPLICAR
DataViz Gráficos integrados do MongoDB Nenhum DataViz incorporado
Inteligência de negócios  Conhecer

Tableau e outros mecanismos de BI compatíveis com ODBC e JDBC.

Conhecer

Tableau e outros mecanismos de BI compatíveis com ODBC e JDBC.

 

Referências:

  1. Comparação de duas abordagens baseadas em SQL para consulta de JSON: SQL++ e SQL:2016
  2. SQL para NoSQL - 7 métricas para comparar a linguagem de consulta
  3. Análise do Couchbase: NoETL para análise escalável de dados NoSQL

 

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Keshav Murthy

Keshav Murthy é vice-presidente de P&D da Couchbase. Anteriormente, ele trabalhou na MapR, IBM, Informix e Sybase, com mais de 20 anos de experiência em design e desenvolvimento de bancos de dados. Ele liderou a equipe de P&D de SQL e NoSQL na IBM Informix. Ele recebeu dois prêmios President's Club na Couchbase e dois Outstanding Technical Achievement Awards na IBM. Keshav é bacharel em Ciência da Computação e Engenharia pela Universidade de Mysore, Índia, e recebeu vinte e quatro patentes nos EUA.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.