À 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 |
1. http://query.couchbase.com 2. https://www.couchbase.com/blog/n1ql-practical-guide-second-edition/ |
| Consulta | Consulta baseada em
1. Single key |
Declarações de consulta
1. SELECT |
| Indexação | Índice simples para visualizações. |
1. Índice primário 2. Named primary index 3. Secondary index 4. Índice secundário composto 5. Functional index 6. Índice da matriz 7. ALL array 8. ALL DISTINCT array 9. Partial Index 10. Adaptive Index 11. Duplicate Indices 12. Covering Index |
| 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. |