Consulta SQL++ / N1QL

Uso do N1QL com o Couchbase Eventing Functions.

Agora, isso não é o fim. Não é nem mesmo o começo do fim. Mas, talvez, seja o fim do começo. - Winston Churchill

A atualização de dados geralmente não é o fim, mas sim o progresso de um fluxo de trabalho. O envio segue o pedido; a atualização do estoque segue o envio; o ajuste do crédito segue a devolução; a próxima etapa do processo deve agir para manter o fluxo de trabalho em andamento. Os fluxos de trabalho podem ser simples, com poucas etapas, ou complexos, com centenas de etapas.  Gerenciamento de processos de negócios (BPM) é um setor por si só.

Apresentação do Couchbase 5.5 Serviço noturno. Os desenvolvedores podem escrever uma função Javascript para ser executada após uma alteração nos dados. Referimo-nos a inserções, atualizações, mesclagens e exclusões como mutações. Vários casos de uso específicos foram documentados para o desenvolvimento desses eventos funções.

JSON modelo de dados no Couchbase veio de JavaScript.  N1QL é SQL para JSON. As funções de eventos são escritas em Javascript e têm N1QL integrado. Usando as funções de eventos, é fácil escrever lógica comercial processual com acesso instantâneo aos dados.

Este é o ciclo de vida das funções do ponto de vista do desenvolvedor. Para cada mutação, você pode definir qualquer número dessas funções a serem executadas. É responsabilidade do desenvolvedor dimensionar os tempos de execução das funções, dependendo do número de mutações.

Este é o ciclo de vida das funções Eventing:

 

Para cada inserção, atualização ou exclusão (direta ou de expiração), você pode executar uma ou mais funções javascript. Essas funções podem ler os novos dados e o tipo de ação e, em seguida, executar a ação subsequente. Essa funcionalidade está bem descrita nos blogs e artigos do Couchbase.

Tipo de declaração Função de evento invocada
SELECIONAR Nenhum
INSERIR OnUpdate(). A função é chamada uma vez por documento inserido. A inserção simples insere um único documento. As inserções podem ter vários documentos usando vários documentos na cláusula VALUES ou podem inserir vários documentos por meio da instrução INSERT INTO...SELECT.
ATUALIZAÇÃO OnUpdate() é chamado uma vez por documento atualizado, exceto quando várias atualizações no mesmo documento forem deduzidas em uma única atualização. O comando Update pode atualizar vários documentos.
UPSERT OnUpdate(). O comportamento é semelhante ao do INSERT.
DELETE OnDelete(). Invocado uma vez por documento excluído.
MERGE OnUpdate() e/ou OnDelete(), dependendo das ações de inserção, atualização e exclusão.
CRIAR ÍNDICE, ELIMINAR ÍNDICE, EXPLICAR, PREPARAR, CONCEDER, REVOGAR Nenhuma função de evento é invocada.
EXECUTAR Depende do tipo de declaração executada.

Essas funções também podem executar instruções N1QL. O restante do artigo aborda todos os aspectos do N1QL executados em Eventing Functions.

Declarações N1QL em funções Eventing.

Declaração Casos de uso para instruções N1QL em Eventing Functions
CRIAR ÍNDICE Como o esquema é flexível, você poderia inspecionar os dados com frequência/periodicamente para detectar novos campos e, em seguida, criar índices sobre eles.
DELETE Exclusões em cascata.
DROP INDEX Um corolário do caso de uso CREATE INDEX.
INFER Introspecção periódica do bucket para a estrutura. Em seguida, tomar medidas (validar, criar índice, atualizar o modelo de dados), se necessário.
INSERIR Manutenção de dados referenciais (eventualmente).

Atualização de outros documentos com referências a esses dados. Por exemplo, dados de um novo CEP, estado etc.

Cópia de dados (total ou parcialmente) para documentos secundários/terciários. Semelhante à ação pós-disparo.

MERGE Mantenha os dados secundários em sincronia.
SELECIONAR Obter dados, executar relatórios periodicamente, etc.

Verifique vários aspectos, como qualidade e validade dos dados,

Quando você souber a chave do documento de destino, use as referências diretas a documentos incorporadas. Veja exemplos em: https://docs.couchbase.com/server/5.5/eventing/eventing-examples.html

UPSERT Manter os dados secundários/terciários em sincronia.

Semelhante à ação pós-disparo.

ATUALIZAÇÃO Manter os dados secundários/terciários em sincronia.

Semelhante à ação pós-disparo.

Exemplos: Vamos experimentar algumas funções de eventos com o N1QL.

  1. N1QL simples em funções para registro em log e exclusão em cascata.

Salve todos os documentos excluídos em um compartimento separado.

  1. função OnUpdate() para manter as informações agregadas prontas periodicamente.

Referências:

  1. Documentação do Couchbase: https://docs.couchbase.com/server/5.5/eventing/eventing-overview.html
  2. Blogs do Couchbase sobre eventos: https://www.couchbase.com/blog/tag/eventing/
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.