Análise do Couchbase

N1QL: Consultar ou analisar?

Observação: esta nota de recomendação foi escrita em colaboração com Till Westmann e Mike Carey, que lideram o P&D de análise do Couchbase.

[A parte 2 deste artigo de Even Pease está disponível em: https://www.couchbase.com/blog/part-2-n1ql-to-query-or-to-analyze/]

Os serviços de consulta e análise do Couchbase são compatíveis com N1QL (SQL para JSON). Uma pergunta comum é: "Qual serviço deve executar minha consulta?". A resposta rápida é: "Depende de sua carga de trabalho". Este blog explica essa resposta.

Uma transação é quando você compra café e bolo no supermercado. A análise é quando o supermercado examina todos os dados de vendas para ver em que dia da semana, em que mês do ano o café e/ou o bolo vendem mais, para poder planejar o estoque, as vendas e os preços.

Toda empresa faz essas três coisas em um ciclo ou em uma espiral [A meta].

  1. Executar o processo de negócios para fornecer produtos ou serviços aos clientes.
  2. Analisar a empresa para determinar o que deve ser mudado e para que deve ser mudado.
  3. Faça a mudança acontecer.

Nos negócios modernos, cada etapa exige que os aplicativos executem as etapas.

O Query Service é usado pelos aplicativos necessários para executar os negócios; ele foi projetado para um grande número de consultas simultâneas, cada uma delas realizando uma pequena quantidade de trabalho. No mundo do RDBMS, essa carga de trabalho é chamada de carga de trabalho OLTP.

Os aplicativos ou ferramentas usados para análise têm características diferentes de carga de trabalho. Normalmente, eles usam o Analytics Service; ele foi projetado para um número menor de consultas simultâneas que analisam um número maior de documentos. No mundo do RDBMS, essa carga de trabalho é chamada de carga de trabalho OLAP.  

Vamos nos aprofundar nos detalhes desses dois serviços.

Serviço de consulta Serviço de análise
Tutoriais
https://query-tutorial.couchbase.com/tutorial/#1 https://sqlplusplus-tutorial.couchbase.com/tutorial/#1
Comparação de alto nível
Usado para manipulação de dados dentro da lógica do aplicativo Usado para relatórios, análises (históricas, interativas), painéis de controle
Consultas curtas

 - SQL relativamente simples

 - Normalmente, envolve pequenas quantidades de dados

Operações mais longas

 - SQL complexo com análises

 - Normalmente, envolve grandes quantidades de dados

Executar SELECT, INSERT, UPDATE, DELETE, MERGE para aplicativos operacionais Executar o SELECT para análise
Atualizações aleatórias

 - Atualizar poucos documentos por consulta

Sem atualizações

 - Alterações ingeridas do Data Service

Latência de um milissegundo a um segundo,

alta taxa de transferência (10-1000 qps), a meta de desempenho é consultas/segundo

Tempo de resposta de segundos a minutos,

<1-10 consultas por segundo,

A meta de desempenho é de segundos/consulta

Grande número de índices Menos índices
Consultas escritas pelo desenvolvedor; as consultas geradas são bem conhecidas Consultas ad-hoc; relatórios complexos, painéis de controle, carga de trabalho de BI
As consultas são executadas em um único nó de consulta usando o índice distribuído e a infraestrutura de dados As consultas são executadas em todos os nós de análise usando sua infraestrutura distribuída de computação, índice e dados
Comparação técnica: Arquitetura
As consultas são executadas no modo SMP, a taxa de transferência é escalonável com a adição de novos nós de consulta As consultas são executadas no modo MPP, podem lidar com dados maiores ou reduzir o tempo de execução da consulta adicionando novos nós de análise
Comparação técnica: Otimizador
Junção de loop aninhado por padrão

Junção de hash por meio de dica de consulta

Junção de hash paralelo por padrão,

União de loop aninhado (índice) ou união de broadcast por meio de dica de consulta

Comparação técnica: Índices
Índices secundários globais Índices secundários locais (co-localizados com partições de dados)
Usa índices otimizados para memória; índices secundários padrão (Plasma) Índices secundários baseados em árvore de mesclagem estruturada em log (LSM)
Suporte para varreduras de índices cobertos e não cobertos Varreduras de índice não cobertas
Pode usar o índice de texto completo para consultas (6.5)
Comparação técnica: Execução
A maioria das consultas é preparada uma vez e executada várias vezes Consultas ad-hoc e exploratórias
Os SDKs usam o modelo preparar-executar com base em um sinalizador ad-hoc Os SDKs oferecem consultas ad-hoc e parametrizadas
A maioria das operações é feita na memória; somente quando uma varredura de índice retorna dados grandes é que ela é gravada no backfill do disco Operações de memória limitada em dados grandes (maiores do que a memória do cluster) com derramamento gracioso conforme necessário
Paralelismo de consulta de nó único Operadores de junção, classificação, agregação e agregação agrupada de vários nós em paralelo particionado
Espera um único dispositivo de armazenamento (possivelmente com RAID) Uso sem RAID de vários dispositivos de armazenamento
Isolamento do desempenho por meio de índices de cobertura que suportam operações de varredura, agrupamento e agregação nos nós do Serviço de Índice Isolamento de desempenho para todas as consultas por meio de sombreamento de dados nos nós do Analytics Service
Documentação 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
Informações técnicas
https://www.couchbase.com/products/n1ql https://www.couchbase.com/sqlplusplus
Livros 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. [A META]: A meta: o processo de aprimoramento contínuo. 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 engajamento para trabalhos com clientes: https://marketing.cioreview.com/cxoinsight/systems-of-engagement-for-customer-jobs-nid-24677-cid-51.html
  3. Parte 2 deste artigo de Even Pease: https://www.couchbase.com/blog/part-2-n1ql-to-query-or-to-analyze/
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. 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, detém dez patentes nos EUA e tem três patentes pendentes 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.