À medida que a plataforma de dados do Couchbase evoluiu, serviços como N1QL e GSI Indexing lidaram com os casos de uso que o Couchbase VIEWS costumava lidar e muito mais. É lógico fazer a pergunta comparativa entre eles. Aqui está uma tabela que compara ambos. Este artigo é destinado a desenvolvedores e arquitetos familiarizados com ambos, e não como um artigo introdutório. Use os links aqui para saber mais e brincar com os respectivos recursos.
Tópico |
Exibições do Couchbase Map-Reduce |
Couchbase N1QL+GSI |
Abordagem | Com base nas funções map() e reduce() definidas pelo usuário que operam nos dados em segundo plano. Como map() e reduce() são escritas em Javascript, você pode codificar lógicas complexas nessas funções. | Baseado na consulta declarativa N1QL (SQL para JSON). Usa índices apropriados para otimizar a execução e é executada dinamicamente por meio da orquestração de serviços de dados de consulta-índice. O N1QL permite consultas facilmente graváveis e legíveis para JSON. Por ser inspirado no SQL, é flexível e compostável. Por ter sido estendido para JSON, funciona com dados JSON avançados. Usa lógica booleana de quatro valores (true, false, NULL, MISSING) |
Mais informações | Documentos do Couchbase: http://bit.ly/2jQrY11 |
|
Consulta | Consulta baseada em
|
Declarações de consulta
Operações de consulta:
|
Indexação | Índice simples para visualizações. |
|
Particionamento | Alinhado ao particionamento de dados. | Serviços independentes.
O N1QL e o GSI são dimensionados independentemente do serviço de dados e entre si. |
Escala | Escalas com serviço de dados | Escalonamento independente por meio de escalonamento multidimensional (MDS) |
Buscar com a chave do documento | Como os dados são particionados na chave do documento, o documento é obtido diretamente do nó | Especifique a consulta por meio da cláusula USE KEYS.
Como os dados são particionados na chave do documento, o documento é obtido diretamente do nó |
Buscar com chave de índice | Dispersão-coleta | Cada varredura de índice em um único nó; dados em vários nós.
Pós-processamento no nó de consulta |
Varredura de alcance | Dispersão-coleta | Varredura de índice em um único nó.
Pós-processamento no nó de consulta |
Agrupamento, agregação | Integrado com a API de visualizações | Incorporado ao N1QL |
Armazenamento em cache | Sistema de arquivos | Pool de buffer de índice
Cache de dados |
Armazenamento | Loja de sofás | Mecanismo de armazenamento de plasma (5.0 e superior)
Índice otimizado para memória (4.5 e superior) ForestDB (comunidade) |
Disponibilidade | Baseado em réplicas | 5.0: Réplicas
4.x: Índices equivalentes |
Latência da consulta
(Consultas simples) |
10 milissegundos a 100 milissegundos | 5 milissegundos+ |
Taxa de transferência de consulta
(Consultas simples) |
3K a 4K consultas por segundo | 40 mil consultas por segundo |
Escalabilidade | Moderado (dimensionamento vinculado ao serviço de dados) | Alta (dimensionamento independente de serviços de índice e consulta: MDS) |
Aplicabilidade | Agregações, o melhor das agregações em grande escala para requisitos de latência baixa e moderada. As operações de redução de mapas nos dados são feitas em segundo plano à medida que os dados são modificados. | Melhor para pesquisa baseada em atributos, varreduras de intervalo, select-join-project-array complexo
Operações. Oferece suporte a agrupamento, agregação e ordenação - essas operações são feitas dinamicamente como parte da execução da consulta. |
Requisitos de aplicação | Relatório sobre métricas bem definidas
Agregações em grande escala Sensível à latência |
Pesquisas de chaves secundárias
Varreduras de alcance Agregações operacionais Consultas filtradas Consultas ad-hoc com predicados complexos, junções, agregações, pesquisa de aplicativos, paginação, atualizações baseadas em chaves secundárias. |
Espacial | Suportado por visualizações espaciais | Não diretamente.
https://dzone.com/articles/speed-up-spatial-search-in-couchbase-n1ql |
Consistência | Vencido = UPDATE_AFTER
Vencido = OK Stale = FALSE |
Não limitado (obsoleto = OK)
AT_PLUS (leia suas próprias gravações) REQUEST_PLUS (lido após as atualizações do índice até now(). Stale = False). |
Ferramentas | Console da Web | Console da Web, Workbench do desenvolvedor, Monitoramento de consultas, Perfil de consultas, Explicação visual, INFER. |