Servidor Couchbase

Percorrer a hierarquia com funções definidas pelo usuário (UDFs) do SQL++

As funções definidas pelo usuário (UDFs) são um recurso que existe na maioria dos RDBMS. Seja no Oracle PL/SQL (Linguagem procedural para SQL), no SQL Server T-SQL (Transact-SQL), no PL/pgSQL (Linguagem procedural/PostgreSQL) ou em outras variantes, todas essas linguagens têm as características gerais de fornecer uma estrutura de blocos, controle de condições, loop de iteração e tratamento de erros. Esses blocos de construção permitem o desenvolvimento de tarefas complexas, que podem ser isoladas para melhorar a manutenção e a integridade do aplicativo.

Para o Couchbase, os critérios para escolher a linguagem para SQL++ As Funções Definidas pelo Usuário são bastante claras: elas devem ser capazes de oferecer suporte a todos os recursos existentes nas implementações atuais de RDBMS ou no mesmo nível que o serviço de consulta do Couchbase e também refletir a preferência dos desenvolvedores atuais. De acordo com as pesquisas de desenvolvedores do Stack Overflow, a linguagem de programação mais usada no mundo em 2020 é JavaScript.

SQL++ UDF/JS

O Couchbase é um banco de dados de documentos que armazena nativamente seus dados no formato JSON (JavaScódigo Oobjeto Notação). Sua linguagem de consulta, SQL++ , é SQL para JSON. A linguagem JavaScript é, portanto, a maneira mais natural de acessar e manipular dados JSON.

Consulte a documentação do Couchbase para obter mais detalhes sobre o implementação completa de JavaScript no Couchbase.

O UDF JavaScript para percorrer árvores

O JavaScript é poderoso, flexível e relativamente fácil de começar a usar. Para mostrar sua versatilidade, criei um UDF em Javascript para este artigo que percorre uma estrutura de árvore, como uma estrutura organizacional.

UDF: traverseTree

O UDF executa uma pesquisa recursiva em uma coleção usando os dois conectar campos (para e de) para a recursão.

Os parâmetros são mostrados na tabela a seguir:

# Nome Descrição
1 kSpace O espaço-chave para a consulta. Pode ser uma coleção ou consulta.
2 começar com Iniciar a pesquisa com esse valor para o connectToFld. Se estiver vazio, a pesquisa será realizada para todos os valores de connectTo
3 connectTo O nome do campo na coleção em que o campo connectTo será usado
4 connectFrom O nome do campo na coleção em que o campo connectFrom será usado
5 relatórioHier O nome do campo para a matriz de hierarquia
6 logKSpace O espaço-chave em que é gravado o registro em log opcional para UDF. Observe que esse parâmetro só pode ser executado quando executado com EXECUTE FUNCTION.

Exemplos de hierarquia

Vamos considerar uma estrutura hierárquica organizacional como a abaixo.

traverse hierarchical data example

O emp A coleção tem os seguintes documentos:

A consulta produz os seguintes resultados:

Criar o traverseTree função definida pelo usuário

No Couchbase SQL++, um UDF pode ser definido de várias maneiras. 

UDF como uma função escalar

 

Como uma função em linha com uma subconsulta

 

Definido como uma função externa

O traverseTree O UDF usa o mecanismo de função externa. Mas, nesse caso, fornecemos a biblioteca de código externo para a função. Consulte a documentação do Couchbase para obter mais detalhes sobre Função externa.

Veja como criar uma biblioteca de funções JavaScript:

1- Criar a biblioteca de funções - Neste exemplo, usamos o Query Workbench para criar a biblioteca JavaScript. 

Managing JavaScript function libraries

2 - Adicionar e editar o código JavaScript

Editing Couchbase JavaScript code

Consulte este [link] para obter o código completo da biblioteca JavaScript traverseTree.

3 - Criar a função definida pelo usuário do SQL++ 

Observe que você também pode criar o UDF usando o Query Workbench.

Add UDF function in SQL++

Observações importantes

O Couchbase 7.0 adicionou UDFs de SQL++ para JavaScript. Para o Couchbase 7.1, adicionamos a capacidade de executar DMLs de SQL++ no código JavaScript. Há também vários aprimoramentos na interface do usuário do Query Workbench para o gerenciamento de UDFs.

Isenção de responsabilidade - Observe que o código JavaScript fornecido neste artigo não faz parte do produto Couchase. Ele é fornecido aqui apenas para ilustrar os recursos do SQL++ UDF usando JavaScript. Os usuários são incentivados a verificar sua exatidão e a fazer modificações para atender às suas necessidades.

Continuar aprendendo

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Binh Le

Binh Le é gerente de produto principal do serviço Couchbase Query. Antes da Couchbase, ele trabalhou na Oracle e liderou a equipe de gerenciamento de produtos para Sales Cloud Analytics e CRM OnDemand. Binh é bacharel em Ciência da Computação pela Universidade de Brighton, no Reino Unido.

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.