Os bancos de dados de grafos ajudam você a descobrir insights com a modelagem das entidades de dados e os relacionamentos entre elas. O JanusGraph é um banco de dados gráfico compatível com grandes volumes de dados. Esta página apresenta conceitos que podem ajudar você a executar o JanusGraph no Google Cloud com o Google Kubernetes Engine como a plataforma de orquestração e o Bigtable como back-end de armazenamento.
O documento é destinado a arquitetos de sistemas, administradores de bancos de dados e profissionais de DevOps interessados em executar o banco de dados de grafos do JanusGraph no Google Cloud usando um Bigtable como back-end de armazenamento. Pressupomos que você conheça o Google Kubernetes Engine (GKE), os pods do Kubernetes, o Bigtable e o Elasticsearch.
Visão geral
Na terminologia de grafos, as entidades são chamadas de nós ou vértices e as relações são chamadas de arestas. No JanusGraph, os vértices e as arestas podem ter outros dados associados, disponibilizados pelas propriedades.
A ilustração anterior é um exemplo de um grafo de propriedade.
Os bancos de dados de gráficos ajudam a modelar vários domínios e atividades:
- redes sociais
- Transações financeiras (para análise de fraude)
- Redes de sistema físicas ou virtuais
Ao criar bancos de dados de grafos, às vezes são criados milhões ou até bilhões de vértices e arestas. Quando você usa o JanusGraph com o Bigtable como camada de armazenamento subjacente, é possível executar consultas rápidas (conhecidas como transversais em grafos) e escalonar a camada de armazenamento de maneira independente, de acordo com o tamanho e a capacidade de processamento que você necessita. O JanusGraph também usa um back-end de indexação plugável para fornecer indexação de texto completo para propriedades de vértice e aresta.
É possível implantar uma infraestrutura escalonável do JanusGraph no GKE usando o Elasticsearch como back-end de indexação em execução em pods em um StatefulSet e o Bigtable como back-end de armazenamento. Quando terminar, transfira os relacionamentos atuais dos dados do grafo.
No diagrama a seguir, você vê como esses elementos se encaixam.
Esse diagrama exibe a implantação do JanusGraph no GKE com o ElasticSearch e o Bigtable.
Dados do JanusGraph no Bigtable
Os dados do grafo são armazenados pelo JanusGraph como uma lista de adjacências. Cada linha representa um vértice, todos os vértices adjacentes (arestas) e metadados de propriedade sobre os vértices e as arestas. A chave de linha é o identificador exclusivo do vértice. Cada relação entre o vértice e outro vértice e quaisquer propriedades que definam melhor o relacionamento são armazenados como uma aresta ou coluna de propriedades de arestas. O qualificador de coluna e o valor da coluna armazenam dados que definem a borda, de acordo com as práticas recomendadas do Bigtable. Cada propriedade de vértice é armazenada como uma coluna separada, mais uma vez usando o qualificador de coluna e o valor da coluna para definir a propriedade.
No diagrama a seguir, você vê essa estrutura de armazenamento.
O diagrama mostra a estrutura de armazenamento lógico para um pequeno fragmento de grafo com detalhes lógicos para duas linhas de vértices. No diagrama, as duas linhas de exemplo representam dois vértices. O primeiro vértice é rotulado com uma única propriedade de vértice e está relacionado a dois outros vértices por duas arestas separadas. O segundo vértice contém colunas com duas propriedades e uma aresta.
A ilustração a seguir, do modelo de dados lógico de borda do vértice, mostra alguns detalhes sobre os qualificadores e valores de coluna para uma coluna de borda ou de propriedade de borda.
Para cada vértice adjacente, uma coluna armazena os metadados sobre a aresta. O qualificador de coluna contém metadados sobre o relacionamento da aresta e sobre a direção da aresta, além de um ponteiro para o vértice adjacente. O valor da coluna contém o rótulo da aresta e quaisquer outras propriedades dela. Como as transversais podem ser seguidas em qualquer direção, as bordas são armazenadas duas vezes, uma para cada extremidade da relação da borda. O armazenamento bidirecional da aresta aumenta de forma significativa o desempenho da transversal, mas tem algumas compensações devido à redundância do espaço de armazenamento extra e de mutações de arestas não atômicas.
O diagrama a seguir é o modelo de dados lógico de uma coluna de propriedade de vértice.
A ilustração anterior fornece detalhes sobre os qualificadores de coluna e os valores de uma coluna de aresta.
Cada propriedade de vértice é armazenada como uma coluna separada. O qualificador de coluna é um identificador exclusivo da chave de propriedade. O valor da coluna contém um identificador da propriedade e o valor da propriedade.
O JanusGraph também depende da ordenação lexicográfica de linhas e qualificadores de coluna do Bigtable para melhorar o desempenho da consulta.
A seguir
- Leia mais sobre o JanusGraph e os bancos de dados gráficos.
- Saiba mais sobre o framework de computação de grafos Apache TinkerPop e conheça a linguagem de percurso de grafos Gremlin.
- Saiba mais sobre como o JanusGraph armazena dados no Bigtable.
- Para ver mais detalhes sobre casos de uso de grafos, implante um exemplo de aplicativo do JanusGraph.