As bases de dados de grafos podem ajudar a descobrir estatísticas através da modelagem das suas entidades de dados e das relações entre elas. JanusGraph é uma base de dados de grafos que suporta o trabalho com grandes quantidades de dados. Esta página apresenta conceitos que podem ajudar a executar o JanusGraph no Google Cloud com o Google Kubernetes Engine como plataforma de orquestração e o Bigtable como armazenamento de back-end.
Este documento destina-se a arquitetos de sistemas, administradores de bases de dados e profissionais de DevOps interessados em executar a base de dados de grafos JanusGraph noGoogle Cloud usando o Bigtable como back-end de armazenamento. Parte do princípio de que conhece o Google Kubernetes Engine (GKE), os pods do Kubernetes, o Bigtable e o Elasticsearch.
Vista geral
Na terminologia de grafos, as entidades são conhecidas como nós ou vértices e as relações são conhecidas como arestas. No JanusGraph, os vértices e as arestas podem ter dados associados adicionais que são disponibilizados através de propriedades.
A ilustração anterior é um exemplo de um gráfico de propriedades.
As bases de dados de grafos ajudam a modelar uma variedade de domínios e atividades:
- Redes sociais
- Transações financeiras (para análise de fraudes)
- Redes de sistemas físicas ou virtuais
Quando cria bases de dados de grafos, por vezes, cria milhões ou até milhares de milhões de vértices e arestas. Quando usa o JanusGraph com o Bigtable como a camada de armazenamento subjacente, pode executar consultas rápidas (conhecidas como travessias de grafos) e dimensionar a camada de armazenamento de forma independente de acordo com o tamanho e o débito de que precisa. O JanusGraph também usa um back-end de indexação conectável para fornecer indexação de texto completo para propriedades de vértices e arestas.
Pode implementar uma infraestrutura JanusGraph escalável no GKE, usando o Elasticsearch como back-end de indexação executado em pods num StatefulSet e usando o Bigtable como back-end de armazenamento. Quando terminar, pode explorar as relações existentes nos dados do gráfico.
O diagrama seguinte mostra como estes elementos se encaixam.
O diagrama seguinte mostra a implementação do JanusGraph no GKE com o Elasticsearch e o Bigtable.
Dados do JanusGraph no Bigtable
O JanusGraph armazena os dados de grafos como uma lista de adjacências. Cada linha representa um vértice, quaisquer vértices adjacentes (arestas) e metadados de propriedades sobre os vértices e as arestas. A chave da linha é o identificador exclusivo do vértice. Cada relação entre o vértice e outro vértice, bem como quaisquer propriedades que definam melhor a relação, são armazenadas como uma coluna de aresta ou de propriedade de aresta. O qualificador de coluna e o valor da coluna armazenam dados que definem a aresta, de acordo com as práticas recomendadas do Bigtable. Cada propriedade de vértice é armazenada como uma coluna separada, novamente usando o qualificador de coluna e o valor da coluna para definir a propriedade.
O diagrama seguinte mostra esta estrutura de armazenamento.
O diagrama mostra a estrutura de armazenamento lógico para um pequeno fragmento de gráfico 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 está etiquetado com uma única propriedade de vértice e está relacionado com outros dois vértices por duas arestas separadas. O segundo vértice contém colunas com duas propriedades e uma aresta.
A seguinte ilustração do modelo de dados lógicos de arestas de vértices fornece alguns detalhes sobre os qualificadores de colunas e os valores de uma coluna de arestas ou de propriedades de arestas.
Para cada vértice adjacente, uma coluna armazena os metadados sobre essa aresta. O qualificador de coluna contém metadados sobre a relação de aresta e sobre a direção da aresta, bem como um ponteiro para o vértice adjacente. O valor da coluna contém a etiqueta de aresta e quaisquer propriedades de aresta adicionais. Uma vez que os atravessamentos podem ser seguidos em qualquer direção, as arestas são armazenadas duas vezes, uma vez para cada extremidade da relação de arestas. O armazenamento de arestas bidirecional aumenta significativamente o desempenho da travessia, mas tem algumas desvantagens devido à redundância do espaço de armazenamento adicional e às mutações de arestas não atómicas.
O diagrama seguinte é o modelo de dados lógico de uma coluna de propriedade de vértice.
A ilustração anterior fornece detalhes sobre os qualificadores e os valores das colunas de arestas.
Cada propriedade de vértice é armazenada como uma coluna separada. O qualificador da coluna é um identificador exclusivo da chave da propriedade. O valor da coluna contém um identificador para a propriedade e o valor da propriedade.
O JanusGraph também se baseia na ordenação lexicográfica das linhas e dos qualificadores de colunas do Bigtable para melhorar o desempenho das consultas.
O que se segue?
- Leia mais acerca do JanusGraph e das bases de dados de grafos.
- Saiba mais sobre a framework de computação de grafos Apache TinkerPop e explore a linguagem de travessia de grafos Gremlin.
- Saiba como o JanusGraph armazena dados no Bigtable.
- Explore mais detalhadamente os exemplos de utilização de grafos implementando uma aplicação JanusGraph de exemplo.