O que é o Azure Cosmos DB para Apache Gremlin?

APLICA-SE A: Gremlin

O Azure Cosmos DB é um NoSQL totalmente gerenciado e um banco de dados relacional para desenvolvimento de aplicativos modernos.

O Azure Cosmos DB para Apache Gremlin é um serviço de banco de dados de gráficos que pode ser usado para armazenar gráficos massivos com bilhões de vértices e arestas. Você pode consultar os gráficos com latência de milissegundos e evoluir a estrutura do gráfico facilmente. A API para Gremlin é construída com base no Apache TinkerPop, uma estrutura de computação gráfica que usa a linguagem de consulta Gremlin.

Importante

O mecanismo de gráfico do Azure Cosmos DB segue de perto a especificação Apache TinkerPop. No entanto, há algumas diferenças nos detalhes de implementação que são específicos para o Azure Cosmos DB. Alguns recursos suportados pelo Apache TinkerPop não estão disponíveis no Azure Cosmos DB, para saber mais sobre os recursos sem suporte, consulte o artigo compatibilidade com o Apache TinkerPop .

A API para Gremlin combina o poder dos algoritmos de banco de dados gráficos com infraestrutura altamente escalável e gerenciada. Essa abordagem fornece uma solução única e flexível para problemas de dados comuns associados a restrições inflexíveis ou relacionais.

Gorjeta

Quer experimentar a API para Gremlin sem compromisso? Crie uma conta do Azure Cosmos DB usando Experimente o Azure Cosmos DB gratuitamente.

Benefícios da API para Gremlin

A API para Gremlin adicionou benefícios de ser criada no Azure Cosmos DB:

  • Throughput e armazenamento elasticamente escaláveis: os gráficos no mundo real precisam ser dimensionados além da capacidade de um único servidor. O Azure Cosmos DB dá suporte a bancos de dados gráficos horizontalmente escalonáveis que podem ter um tamanho ilimitado em termos de armazenamento e taxa de transferência provisionada. À medida que a escala do banco de dados gráfico cresce, os dados são distribuídos automaticamente usando o particionamento de gráficos.

  • Replicação de várias regiões: o Azure Cosmos DB pode replicar automaticamente seus dados gráficos para qualquer região do Azure em todo o mundo. A replicação global simplifica o desenvolvimento de aplicativos que exigem acesso global aos dados. Além de minimizar a latência de leitura e gravação em qualquer lugar do mundo, o Azure Cosmos DB fornece um mecanismo de failover regional gerenciado por serviço. Esse mecanismo pode garantir a continuidade do seu aplicativo no caso raro de uma interrupção de serviço em uma região.

  • Consultas rápidas e travessias com o padrão de consulta gráfica mais amplamente adotado: armazene vértices e arestas heterogêneos e consulte-os através de uma sintaxe Gremlin familiar. Gremlin é uma linguagem de consulta imperativa e funcional que fornece uma interface rica para implementar algoritmos gráficos comuns. A API para Gremlin permite consultas e travessias ricas em tempo real sem a necessidade de especificar dicas de esquema, índices secundários ou exibições. Para obter mais informações, consulte gráficos de consulta usando Gremlin.

  • Banco de dados gráfico totalmente gerenciado: o Azure Cosmos DB elimina a necessidade de gerenciar recursos de banco de dados e máquina. A maioria das plataformas de banco de dados de gráficos existentes está vinculada às limitações de sua infraestrutura e muitas vezes requer um alto grau de manutenção para garantir seu funcionamento. Como um serviço totalmente gerenciado, o Cosmos DB elimina a necessidade de gerenciar máquinas virtuais, atualizar software de tempo de execução, gerenciar fragmentação ou replicação ou lidar com atualizações complexas da camada de dados. São criadas cópias de segurança automáticas de todos os gráficos e estes são protegidos contra falhas regionais. Esse gerenciamento permite que os desenvolvedores se concentrem em fornecer valor ao aplicativo em vez de operar e gerenciar seus bancos de dados gráficos.

  • Indexação automática: Por padrão, a API para Gremlin indexa automaticamente todas as propriedades dentro de nós (também chamados de vértices) e arestas no gráfico e não espera ou requer qualquer esquema ou criação de índices secundários. Para obter mais informações, consulte indexação no Azure Cosmos DB.

  • Compatibilidade com Apache TinkerPop: A API para Gremlin suporta o padrão de código aberto Apache TinkerPop. O padrão Apache TinkerPop tem um amplo ecossistema de aplicativos e bibliotecas que podem ser facilmente integrados com a API.

  • Níveis de consistência ajustáveis: o Azure Cosmos DB fornece cinco níveis de consistência bem definidos para alcançar a compensação certa entre consistência e desempenho para seu aplicativo. Para consultas e operações de leitura, o Azure Cosmos DB oferece cinco níveis de consistência distintos: forte, consistência vinculada, sessão, prefixo de consistência e eventual. Estes níveis de consistência granulares e bem definidos permitem-lhe atingir um equilíbrio eficaz entre a consistência, a disponibilidade e a latência. Para obter mais informações, consulte Níveis de consistência de dados ajustáveis no Azure Cosmos DB.

Cenários comuns para API para Gremlin

Aqui estão alguns cenários em que o suporte gráfico do Azure Cosmos DB pode ser útil:

  • Redes sociais/Cliente 365: Ao combinar dados sobre seus clientes e suas interações com outras pessoas, você pode desenvolver experiências personalizadas, prever o comportamento do cliente ou conectar pessoas com outras com interesses semelhantes. O Azure Cosmos DB pode ser utilizado para gerir redes sociais e registar os dados e preferências dos clientes.

  • Mecanismos de recomendação: Este cenário é comumente usado no setor de varejo. Ao combinar informações sobre produtos, utilizadores e as respetivas interações, como compras, pesquisas ou classificações de produtos, pode criar recomendações personalizadas. A baixa latência, a escala elástica e o suporte a gráficos nativos do Azure Cosmos DB são ideais para esses cenários.

  • Geoespacial: Muitas aplicações em telecomunicações, logística e planejamento de viagens precisam encontrar um local de interesse dentro de uma área ou localizar a rota mais curta/ideal entre dois locais. O Azure Cosmos DB é uma solução natural para estes problemas.

  • Internet das Coisas: Com a rede e as conexões entre dispositivos IoT modeladas como um gráfico, você pode criar uma melhor compreensão do estado de seus dispositivos e ativos. Também pode saber como as alterações numa parte da rede podem potencialmente afetar outra parte.

Introdução às bases de dados gráficas

Os dados, tal como são apresentados no mundo real, estão ligados naturalmente. A modelagem de dados tradicional se concentra na definição de entidades separadamente e na computação de seus relacionamentos em tempo de execução. Embora esse modelo tenha suas vantagens, dados altamente conectados podem ser difíceis de gerenciar sob suas restrições.

Em vez disso, uma abordagem de banco de dados gráfico depende de relacionamentos persistentes na camada de armazenamento, o que leva a operações de recuperação de gráficos altamente eficientes. A API para Gremlin suporta o modelo de gráfico de propriedades.

Objetos de gráfico de propriedade

Um gráfico de propriedades é uma estrutura composta por vértices e arestas. Ambos os objetos podem ter um número arbitrário de pares chave-valor como propriedades.

  • Vértices/nós: Vértices denotam entidades discretas, como uma pessoa, lugar ou evento.

  • Arestas/relações: Arestas denotam relações entre vértices. Por exemplo, uma pessoa pode conhecer outra pessoa, estar envolvida em um evento ou ter estado recentemente em um local.

  • Propriedades: As propriedades expressam informações (ou metadados) sobre os vértices e arestas. Pode haver qualquer número de propriedades em vértices ou arestas, e elas podem ser usadas para descrever e filtrar os objetos em uma consulta. Propriedades de exemplo incluem um vértice que tem nome e idade, ou uma borda, que pode ter um carimbo de data/hora e/ou um peso.

  • Rótulo - Um rótulo é um nome ou o identificador de um vértice ou de uma aresta. Os rótulos podem agrupar vários vértices ou arestas de tal forma que todos os vértices/arestas de um grupo tenham um determinado rótulo. Por exemplo, um grafo pode ter vários vértices com um rótulo de "pessoa".

Os bancos de dados gráficos geralmente são incluídos na categoria de banco de dados NoSQL ou não relacional, pois não há dependência de um esquema ou modelo de dados restrito. Essa falta de esquema permite modelar e armazenar estruturas conectadas de forma natural e eficiente.

Exemplo de uma base de dados de grafo

Vamos utilizar um gráfico de exemplo para compreender como as consultas podem ser expressadas no Gremlin. A imagem seguinte apresenta uma aplicação empresarial que gere dados sobre os utilizadores, interesses e dispositivos sob a forma de um gráfico.

Exemplo de gráfico de propriedades mostrando pessoas, dispositivos e interesses.

Este gráfico tem os seguintes tipos de vértices . Estes tipos também são chamados de rótulos em Gremlin:

  • Pessoas: O gráfico tem três pessoas; Robin, Thomas e Ben.

  • Interesses: Os seus interesses, neste exemplo, incluem o jogo de Futebol.

  • Dispositivos: os dispositivos que as pessoas usam.

  • Sistemas Operativos: Os sistemas operativos em que os dispositivos são executados.

  • Local: o(s) local(is) onde os dispositivos são acedidos.

Representamos as relações entre estas entidades através dos seguintes tipos de borda :

  • Sabe: Representa familiaridade. Por exemplo, "Thomas conhece Robin".

  • Interessados: Representar os interesses das pessoas no nosso gráfico. Por exemplo, "Ben está interessado em futebol".

  • RunsOS: Representa o sistema operacional que um dispositivo executa. Por exemplo, "Laptop executa o sistema operacional Windows".

  • Usos: Representam qual dispositivo uma pessoa usa. Por exemplo, "Robin usa um telefone Motorola com número de série 77".

  • Localizado: representa o local a partir do qual os dispositivos são acessados.

O Gremlin Console é um terminal interativo oferecido pelo Apache TinkerPop e este terminal é usado para interagir com os dados do gráfico. Para obter mais informações, consulte o início rápido do console Gremlin. Também pode efetuar estas operações com os controladores do Gremlin na plataforma que preferir (Java, Node.js, Python ou .NET). Os exemplos a seguir mostram como executar consultas nesses dados de gráfico usando o Console Gremlin.

Primeiro, vamos analisar, criar, ler, atualizar e excluir (CRUD). A seguinte instrução Gremlin insere o vértice Thomasno gráfico com algumas propriedades:

g.addV('person').
  property('id', 'thomas.1').
  property('firstName', 'Thomas').
  property('lastName', 'Andersen').
  property('age', 44)

Gorjeta

Se você estiver acompanhando esses exemplos, poderá usar qualquer uma dessas propriedades (age, firstName, lastName) como uma chave de partição ao criar o gráfico. A id propriedade não é suportada como uma chave de partição em um gráfico.

Em seguida, a seguinte declaração de Gremlin insere uma vantagem conhecida entre Thomas e Robin.

g.V('thomas.1').
  addE('knows').
  to(g.V('robin.1'))

A consulta a seguir retorna os vértices da pessoa em ordem decrescente de seus nomes:

g.V().
  hasLabel('person').
  order().
  by('firstName', decr)

Os gráficos são bastante úteis quando tem de responder a perguntas como "What operating systems do friends of Thomas use?" (Que sistemas operativos utilizam os amigos do Thomas?). Você pode executar esta travessia de Gremlin para obter essas informações do gráfico:

g.V('thomas.1').
  out('knows').
  out('uses').
  out('runsos').
  group().
  by('name').
  by(count())

Próximos passos