Servidor Couchbase

Criação de funções definidas pelo usuário em Python e JavaScript para consultas geoespaciais

As consultas SQL++ podem acessar os dados armazenados no cluster do Couchbase de várias maneiras. Há situações em que ter a lógica de negócios como parte de suas consultas de dados também pode ser benéfico. O SQL++ oferece suporte a isso com as Funções Definidas pelo Usuário (UDFs) que estão disponíveis desde Couchbase 7.0

Nesta postagem do blog, criamos uma UDF em JavaScript que consulta pontos a partir da localização de um usuário, dinamicamente, usando SQL++. Além disso, realizamos os mesmos cálculos de distância com uma UDF em Python dentro do Serviço de análise.

Nosso caso de uso de consulta geoespacial

Nosso aplicativo gerará pontos de interesse geográfico a partir do nosso banco de dados que estão próximos à localização GPS do usuário, semelhante a serviços como o Google Maps, mostrado na captura de tela abaixo. Para este exemplo, usaremos o conjunto de dados de amostra de viagens que está disponível em um bucket de amostra fornecido pelo Couchbase.

Em particular, estamos interessados em ver o marcos históricos e aeroportos em torno da localização atual do usuário. Isso não pode ser feito usando uma consulta SQL++ diretamente, pois o cálculo da distância é baseado na localização geográfica em tempo real do usuário. O SQL++ suporta a definição de UDFs em JavaScript para executar a lógica personalizada nas consultas.

Map shwoing searhc for local points of interest

Cálculo de distâncias a partir de coordenadas de GPS

Há muitas maneiras de calcular a distância entre dois conjuntos de coordenadas de GPS. Neste exemplo, calcularemos a distância usando a função Fórmula Haversine. Ele fornece a distância aproximada entre duas coordenadas de GPS, considerando o caminho como uma esfera em vez de uma distância em linha reta.

O código JavaScript para calcular distâncias geográficas é mostrado neste exemplo:

Definimos duas funções JavaScript - uma que realiza a conversão entre graus e radianos e outra que calcula a distância em quilômetros entre as coordenadas de GPS da outra função.

Importação de UDFs para o Couchbase

Essas funções JavaScript agora podem ser importadas para o Couchbase usando o API RESTcomo mostrado abaixo, com o enrolar comando:

Após essa etapa, o UDF pode ser definido na seção Editor de consultas:

Aqui, o matemática referência é para o JavaScript biblioteca que criamos para avaliar o UDF.

O UDF agora pode ser testado com coordenadas de GPS de amostra no SQL++ usando o Executar Função conforme mostrado abaixo

Podemos observar que a função funciona como pretendido quando fornecemos as coordenadas de GPS manualmente para a função.

Conectando o UDF aos dados do Couchbase

No amostra de viagem conjunto de dados, temos as coordenadas de GPS do marcos históricos e aeroportos juntamente com outros locais de interesse, como hotéis.

Podemos integrá-los em nossas consultas, como a que está abaixo:

Essa consulta retorna uma lista dos dez aeroportos mais próximos da localização do usuário (51.509865, -0.118092). Fornecemos a latitude (a.geo.lat) e longitude (a.geo.lon) que estão incorporados nos documentos usando o poder do SQL++.

Da mesma forma, podemos calcular os pontos de interesse ao redor do usuário usando a função marco histórico em uma distância cada vez maior do usuário:

Resultados da consulta mostrando pontos de referência próximos:

Se executarmos essas consultas para vários usuários ao mesmo tempo, poderemos ter problemas de desempenho, pois estamos usando os recursos de computação que fazem parte do cluster do Couchbase. 

Nesses cenários, o Couchbase Analytics pode reduzir o impacto em seu cluster. O Couchbase Analytics foi projetado para executar com eficiência consultas complexas em muitos registros. As consultas complexas podem incluir grandes operações ad hoc de junção, conjunto, agregação e agrupamento - qualquer uma delas pode resultar em consultas de longa duração, alto uso da CPU, alto consumo de memória ou latência excessiva da rede devido à busca de dados e à coordenação entre nós.

Funções definidas pelo usuário com o Couchbase Analytics

O Couchbase Analytics nos permite definir e usar Funções definidas pelo usuário em Python mas, no momento da redação deste documento, exige que você ativar o Developer Preview no Couchbase Server. Isso pode ser feito com o seguinte comando:

A próxima etapa é criar um pacote Python, localmente, no ambiente de desenvolvimento com o Python UDF. Nesse caso, o UDF é um método para calcular a distância entre duas coordenadas de GPS.

Aqui, calculamos o distância geodésica (a distância mais curta entre pontos ao longo de um caminho curvo) entre as duas coordenadas de GPS com a ajuda de uma biblioteca, geopia.

Empacotamento do UDF

Para empacotar a biblioteca, usamos um pacote shiv que pode empacotar o código junto com seus requisitos para qualquer plataforma. Aqui, estamos usando o Linux, pois o Couchbase Server está sendo executado em um ambiente Linux dentro do Docker.

Para fazer upload desse pacote binário com o UDF para o Couchbase, precisamos usar o comando API REST para o serviço do Analytics. 

Isso faz o upload do UDF empacotado para o pylib na biblioteca padrão escopo (anteriormente universo de dados) do ambiente do Analytics. Agora podemos definir o UDF na seção Workbench de análise.

Essa declaração de definição indica que estamos definindo um UDF chamado distância_em_km que pode ser chamado a partir da função Python calculate_distance definido na classe cálculo de distância dentro do módulo Python distância.

Agora podemos usar o UDF em nossas consultas do Analytics da mesma forma que usamos o UDF em nossas consultas do SQL++.

Mapeamento de dados do Data Service no Analytics Service

Para consultar os dados no Data Service a partir do Analytics Service, precisamos mapa o amostra de viagem coleções de dados no Analytics que cria uma cópia sombra em tempo real dos dados no Data Service no Analytics. Para este exemplo, precisamos mapear as coleções com dados geográficos, ou seja, o ponto de referência, aeroporto e hotel coleções do escopo do inventário no amostra de viagem balde.

Execução do UDF do Analytics nos dados do Couchbase

Agora, podemos executar as mesmas consultas que estávamos executando antes no SQL++, mas com o Analytics Service. Apenas o nome do UDF foi alterado. O restante da interface é semelhante ao que tínhamos com as consultas do SQL++. Os resultados também serão semelhantes aos resultados anteriores.

Essa abordagem é adequada quando queremos executar essas consultas sem afetar o Serviço de dados que é comumente usado para nossos dados transacionais. Os dados são sincronizados entre o Dados e o Serviço de análise internamente em tempo real no Couchbase.

Resumo

Nesta postagem do blog, você aprendeu a criar uma função definida pelo usuário (UDF) em JavaScript que calcula as distâncias entre duas coordenadas de GPS. Você viu como importar a UDF para o Couchbase e, em seguida, integrá-la a uma consulta SQL++ para alimentar aplicativos que poderiam fornecer pontos de interesse em torno de um usuário. Também mostramos como você pode executar o mesmo cálculo de distância em um UDF baseado em Python usando o serviço Analytics para reduzir o impacto no cluster transacional do Couchbase.

Para leitura e referência adicionais, consulte os seguintes recursos:

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

Autor

Postado por Nithish Raghunandanan

Nithish é um engenheiro que adora criar produtos que resolvam problemas do mundo real em um curto espaço de tempo. Ele tem experiência em diferentes áreas do setor, tendo trabalhado em diversas empresas na Alemanha e na Índia. Além do trabalho, ele gosta de viajar, interagir e se envolver com a comunidade de tecnologia por meio de Meetups e Hackathons. Em seu tempo livre, ele gosta de experimentar coisas, criando coisas.

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.