Como o Neptune processa consultas do Gremlin usando índices de declaração - Amazon Neptune

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como o Neptune processa consultas do Gremlin usando índices de declaração

As declarações são acessadas no Amazon Neptune por meio de três índices de declaração, conforme detalhado em Como as declarações são indexadas no Neptune. O Neptune extrai um padrão de declaração de uma consulta do Gremlin na qual algumas posições são conhecidas e o restante é deixado para descoberta por pesquisa de índice.

O Neptune pressupõe que o tamanho do esquema do grafo de propriedades não seja grande. Isso significa que o número de rótulos de borda e nomes de propriedade distintos é bastante baixo, resultando em um número total baixo de predicados distintos. O Neptune monitora predicados distintos em um índice separado. Ele usa esse cache de predicados para fazer uma varredura de união de { all P x POGS }, em vez de usar um índice OSGP. Evitar a necessidade de um índice OSGP de travessia reversa economiza espaço de armazenamento e taxa de transferência de carga.

A API Neptune Explain/Profile Gremlin permite que você obtenha a contagem de predicados em seu gráfico. Depois, é possível determinar se a aplicação invalida a pressuposição do Neptune de que o esquema do grafo de propriedades é pequeno.

Os exemplos a seguir ajudam a ilustrar como o Neptune usa índices para processar consultas do Gremlin.

Pergunta: quais são os rótulos do vértice v1?

Gremlin code: g.V('v1').label() Pattern: (<v1>, <~label>, ?, ?) Known positions: SP Lookup positions: OG Index: SPOG Key range: <v1>:<~label>:*

Pergunta: quais são as bordas externas do vértice v1 conhecidas?

Gremlin code: g.V('v1').out('knows') Pattern: (<v1>, <knows>, ?, ?) Known positions: SP Lookup positions: OG Index: SPOG Key range: <v1>:<knows>:*

Pergunta: quais vértices têm um rótulo de vértice Person?

Gremlin code: g.V().hasLabel('Person') Pattern: (?, <~label>, <Person>, <~>) Known positions: POG Lookup positions: S Index: POGS Key range: <~label>:<Person>:<~>:*

Pergunta: Quais são os from/to vértices de uma determinada arestae1?

Gremlin code: g.E('e1').bothV() Pattern: (?, ?, ?, <e1>) Known positions: G Lookup positions: SPO Index: GPSO Key range: <e1>:*

Um índice de declaração que o Neptune não tem é um índice OSGP de percurso reverso. Esse índice pode ser usado para reunir todas as bordas de entrada em todos os rótulos de borda, como no exemplo a seguir.

Pergunta: Quais são os vértices adjacentes de entrada v1?

Gremlin code: g.V('v1').in() Pattern: (?, ?, <v1>, ?) Known positions: O Lookup positions: SPG Index: OSGP // <-- Index does not exist