Desde o GA em novembro de 2018, o Couchbase Analytics está sendo usado em vários setores verticais para obter insights rapidamente - análise ad-hoc por um provedor de pagamento, análise de carrinho de compras por um varejista eletrônico, mecanismo de reserva de passagens de última geração por uma companhia aérea global, movimento em tempo real de carrinhos de comida dentro de um estádio de beisebol à medida que os fãs o enchem - e muito mais.
Na versão inicial, um dos objetivos do projeto do sistema era a disponibilidade do serviço Analytics para executar consultas mesmo quando operações de reequilíbrio, failover ou reversão estivessem sendo realizadas em um cluster. Como resultado, o serviço Analytics retornaria os resultados da consulta mesmo quando os dados estivessem sendo movidos ou reparticionados. Esse design foi adaptado para a produtividade do desenvolvedor e permitiu que as equipes de DevOps reequilibrassem, fizessem failover ou revertessem de forma independente um cluster do Couchbase.
À medida que os clientes implementam o Analytics na produção, uma solicitação comum é garantir que não sejam retornados resultados não monotônicos. Comportamento não monotônico é quando uma consulta avaliada em um determinado momento C retorna um resultado que era atual no momento A, um ponto muito anterior no tempo, com consultas intermediárias que retornaram resultados mais recentes. A figura abaixo ilustra o conceito.

Isso é especialmente verdadeiro para clientes que executam aplicativos críticos para os negócios no Couchbase, como gastos do consumidor, vendas por trimestre, itens no carrinho de compras, inventário etc. Os clientes não querem que os relatórios, os painéis, as análises e, consequentemente, os insights sejam afetados pelas operações do cluster durante a execução desses aplicativos essenciais aos negócios.
Para garantir que as consultas futuras só retornem quando a ingestão de dados no Analytics voltar ao estado em que as consultas foram executadas anteriormente, estamos introduzindo a "consistência de varredura" na próxima versão.
A consistência da varredura refere-se ao fato de que os dados no serviço Analytics são consistentes com o estado dos dados no serviço de dados.
O objetivo da consistência da varredura é evitar o comportamento não monotônico, não retornando os resultados da consulta antes que um estado anteriormente válido seja alcançado novamente.
Para fazer isso, basta definir as preferências apropriadas no query workbench. Anexei uma captura de tela abaixo com a preferência "scan consistency" definida como uma das seguintes:
- not_bounded
- request_plus

not_bounded (padrão):
Semelhante ao comportamento na versão 6.0, a consulta será avaliada imediatamente com base nos dados atuais que foram ingeridos (ou reingressados no caso de uma reversão significativa).
request_plus:
Antes de executar a consulta, os conjuntos de dados necessários para responder à consulta serão identificados e o Analytics recuperará o estado atual dos compartimentos dos nós de dados que alimentam esses conjuntos de dados. A consulta não será executada até que os conjuntos de dados tenham ingerido todos os dados até o estado do bucket quando a solicitação de consulta foi recebida.
Opcionalmente, você também pode especificar o tempo de espera antes do tempo limite de uma consulta usando a opção "scan_wait" parâmetro.
A request_plus com uma consulta scan_wait terá um tempo limite se o nível solicitado de consistência da varredura não for alcançado dentro do tempo especificado.
Recursos
Baixar
Faça o download do Couchbase Server 6.5
Documentação
Notas de versão do Couchbase Server 6.5
Couchbase Server 6.5 O que há de novo
Blogs
Blog: Anunciando o Couchbase Server 6.5 - O que há de novo e aprimorado
Blog: O Couchbase traz as transações ACID multi-documento distribuídas para o NoSQL