Servidor Couchbase

De N1QL para JavaScript e vice-versa - Parte 7: Armazenamento hierárquico em JavaScript

Em blogs anteriores, abordamos a execução do N1QL (SQL++) a partir do JavaScript funções, processamento de documentos por meio de iteradoresmanipulação de dados, tratamento de erros, declarações preparadas e outros tópicos avançados. O último tópico a ser abordado é um recurso recém-adicionado à versão 7.1 que permite opções de armazenamento de bibliotecas JavaScript.

Armazenamento hierárquico de bibliotecas JavaScript

Outra grande mudança na versão 7.1 é o fato de o armazenamento da biblioteca JavaScript ter mudado de plano para hierárquico.

Isso significa que, além das bibliotecas globais, agora você pode ter bibliotecas criadas em um bucket e um escopo.

As bibliotecas globais estão disponíveis para uso como UDFs globais e de escopo, enquanto as bibliotecas de escopo só estão disponíveis para uso em UDFs de escopo criados no mesmo escopo da biblioteca.

Isso significa que, ao usar bibliotecas globais, você pode continuar a tratar as bibliotecas como uma extensão do seu aplicativo e, ao publicar uma nova biblioteca, você altera automaticamente todas as suas instâncias em diferentes compartimentos e escopos, se você só tiver recebido o manage_external_scope_functions e quiser criar bibliotecas para seu próprio uso, você pode.

Ou talvez, como desenvolvedor de aplicativos, você queira criar implementações específicas de escopo de determinadas bibliotecas globais, por exemplo, uma instância local com o novo código que você está implementando para a próxima versão do seu aplicativo.

Manipulação de bibliotecas

O jsevaluator O endpoint REST usado para manipular as bibliotecas mostradas no início deste blog foi ampliado para aceitar buckets e escopo.

Isso é feito da seguinte forma:

Biblioteca global

Biblioteca de escopo

É evidente que o usuário autenticado precisa ter os privilégios adequados para criar bibliotecas em cada nível: manage_external_functions para bibliotecas globais e manage_external_scope_functions para bibliotecas de escopo.

Além disso, o bucket e o escopo referenciados já devem existir.

Para não me repetir, o comando curl deve conter toda a biblioteca, e não apenas qualquer nova função que você queira definir: lembre-se de que qualquer alteração que você fizer será refletida em todos os UDFs que usam a biblioteca, e qualquer função que você descartar por engano poderá afetar vários escopos e UDFs, portanto, tenha cuidado.

Para evitar dúvidas, isso também se aplica à interface do usuário. 

Referência a bibliotecas em UDFs

Todos os exemplos de CRIAR FUNÇÃO vistos até agora usam um identificador de string simples para a biblioteca, o que significa que eles usam uma biblioteca global.

CRIAR FUNÇÃO ... LINGUAGEM JAVASCRIPT suporta os três formatos a seguir para nomes de bibliotecas:

    • Um identificador, por exemplo, biblioteca: isso aponta para uma biblioteca global
    • O ./ notação, por exemplo, ./biblioteca: isso significa que uma biblioteca sob o atual contexto_de_consulta, uma biblioteca global para uma função global e a biblioteca de escopo correspondente para uma função de escopo
    • Um caminho de escopo completo, por exemplo, bucket/scope/bibliotecaFunções de escopo podem apontar para bibliotecas de escopo, mas lembre-se de que a polinização entre escopos não é permitida - as funções de escopo só podem apontar para bibliotecas em seu próprio escopo.

Qualquer outro formato de nome de biblioteca não é permitido.

Dicas e truques para cachos

Alteração de bibliotecas

Ao alterar as bibliotecas usando a API REST, por exemplo, para adicionar uma nova função, lembre-se de que é necessário enviar toda a biblioteca novamente: se você passar apenas o texto da nova função, todas as funções anteriores serão apagadas!

Opções e switches de linha de comando úteis

A ondulação -data-binary A opção de linha de comando instrui o curl a não descartar novas linhas e retornos de carro.

Isso é útil porque, se sua função retornar um erro, a mensagem de erro conterá as informações de linha corretas para o erro, em vez de usar -d ou -dados fará com que os erros sejam sempre relatados como tendo ocorrido na linha 1!

Por exemplo:

Outro recurso útil é salvar o conteúdo de uma biblioteca em um arquivo e, em seguida, fazer referência ao arquivo na função -data-binary (ou -d), prefixando com um argumento "@", por exemplo:

Onde sua biblioteca seria salva em path/to/file.

Conclusão

Esta breve postagem mostra como essas novas opções de armazenamento oferecem flexibilidade na maneira de gerenciar hierarquicamente o código que você cria e implanta.

Uma última atualização para você: embora existam referências baseadas em código para o termo N1QL Nesta série, nos referimos à linguagem de consulta como SQL++ - uma extensão do padrão SQL. As consultas no Couchbase geralmente são baseadas em SQL++, permitindo que você aproveite seu conhecimento de consulta SQL padrão, mas aplique-o a documentos JSON e muito mais. Daqui para frente, você provavelmente poderá trocar o termo N1QL para SQL++ e você estará atualizado.

Obrigado por acompanhar esta série de tópicos sobre N1QL e JavaScript. Uma lista resumida dos tópicos está incluída abaixo para sua referência.

Recursos

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

Autor

Postado por Marco Greco, arquiteto de software, Couchbase

Em uma vida anterior, Marco foi CTO, físico de radiação, arquiteto de software, administrador de sistemas, DBA, instrutor e faz-tudo na maior clínica de radioterapia da Itália. Depois de mudar de carreira e de país, ele passou mais de duas décadas em vários cargos de suporte e desenvolvimento na Informix, primeiro, e na IBM, depois, antes de finalmente mergulhar de cabeça e entrar para a Couchbase, para ajudá-los a fazer do N1QL um ouro. Ele é detentor de várias patentes e é autor de seus próprios projetos de código aberto.

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.