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á.
Usar os fluxos do Neptune
Com o atributo de fluxos do Neptune, é possível gerar uma sequência completa de entradas no log de alterações que registram todas as alterações feitas em dados de grafos à medida que elas ocorrem. Para obter uma visão geral desse recurso, consulte Capturar alterações do grafo em tempo real usando os fluxos do Neptune.
Tópicos
Habilitar os fluxos do Neptune
É possível habilitar ou desabilitar os fluxos do Neptune a qualquer momento ao configurar o parâmetro do cluster de banco de dados do neptune_streams. Definir o parâmetro como 1
habilita o Streams e defini-lo como 0
desabilita o Streams.
nota
Depois de alterar o parâmetro de cluster de banco de dados neptune_streams
, é necessário reinicializar todas as instâncias de bancos de dados no cluster para que a alteração tenha efeito.
É possível definir o parâmetro do cluster de banco de dados neptune_streams_expiry_days para controlar quantos dias, de um a noventa, esses registros de fluxo permanecem no servidor antes de serem excluídos. O padrão é 7.
Os fluxos do Neptune foram inicialmente introduzidos como um atributo experimental que você habilitou ou desabilitou no modo de laboratório usando o parâmetro neptune_lab_mode
de cluster de banco de dados (consulte Modo de laboratório do Neptune). O uso do modo de laboratório para habilitar o Streams está defasado e será desativado no futuro.
Desabilitar os fluxos do Neptune
Você pode desativar os fluxos do Neptune a qualquer momento em que ele estiver em execução.
Para desativar o Streams, atualize o grupo de parâmetros do cluster de banco de dados para que o valor do parâmetro neptune_streams
seja definido como 0.
Importante
Assim que o Streams for desativado, você não poderá mais acessar os dados do log de alterações. Leia o que é de seu interesse antes de desativar o Streams.
Chamar a API REST de fluxos do Neptune
Você acessa os fluxos do Neptune usando uma API REST que envia uma solicitação GET HTTP a um dos seguintes endpoints locais:
Para um banco de dados gráfico do SPARQL:
https://
.Neptune-DNS
:8182/sparql/streamPara um banco de dados de grafos do Gremlin ou do openCypher:
https://
ouNeptune-DNS
:8182/propertygraph/streamhttps://
.Neptune-DNS
:8182/pg/stream
nota
A partir da versão 1.1.0.0 do mecanismo, o endpoint de fluxos do Gremlin (https://
) está sendo descontinuado, junto com o formato de saída associado (Neptune-DNS
:8182/gremlin/streamGREMLIN_JSON
). Ele ainda é compatível com versões anteriores, mas pode ser removido em versões futuras.
Somente uma operação HTTP GET
é permitida.
O Neptune é compatível com a compactação gzip
da resposta, desde que a solicitação HTTP inclua um cabeçalho Accept-Encoding
que especifique gzip
como um formato de compactação aceito (ou seja, "Accept-Encoding: gzip"
).
Parâmetros
-
limit
: longo, opcional. Intervalo: de um a cem mil. Padrão: 10.Especifica o número máximo de registros a serem retornados. Há também um limite de tamanho de 10 MB na resposta que não pode ser modificado e que tem precedência sobre o número de registros especificado no parâmetro
limit
. A resposta incluirá um registro de violação de limite se o limite de 10 MB tiver sido atingido. -
iteratorType
: string, opcional.Esse parâmetro pode ter um dos valores a seguir:
AT_SEQUENCE_NUMBER
(padrão): indica que a leitura deve começar a partir do número de sequência de eventos especificado em conjunto pelos parâmetroscommitNum
eopNum
.AFTER_SEQUENCE_NUMBER
: indica que a leitura deve começar logo após o número de sequência de eventos especificado em conjunto pelos parâmetroscommitNum
eopNum
.TRIM_HORIZON
: indica que a leitura deve começar no último registro não truncado no sistema, que é o registro mais antigo não expirado (ainda não excluído) no fluxo de logs de alterações. Esse modo é útil durante a inicialização do aplicativo, quando você não tem um número inicial específico de sequência de eventos.LATEST
: indica que a leitura deve começar no registro mais recente no sistema, que é o registro mais recente não expirado (ainda não excluído) no fluxo de logs de alterações. Isso é útil quando há a necessidade de ler registros da parte superior atual dos fluxos para não processar registros antigos, como durante a recuperação de desastres ou uma atualização sem tempo de inatividade. Observe que, nesse modo, há no máximo apenas um registro exibido.
-
commitNum
: longo, obrigatório quando iteratorType éAT_SEQUENCE_NUMBER
ouAFTER_SEQUENCE_NUMBER
.O número de confirmação do registro inicial a ser lido no fluxo do log de alterações.
Este parâmetro é ignorado quando
iteratorType
éTRIM_HORIZON
ouLATEST
. -
opNum
: longo, opcional (o padrão é1
).O número de sequência da operação dentro da confirmação especificada da qual começar a ler nos dados do fluxo do log de alterações.
As operações que alteram os dados do gráfico do SPARQL geralmente geram apenas um único registro de alteração por operação. No entanto, as operações que alteram dados de gráficos do Gremlin podem gerar vários registros de alterações por operação, como nos exemplos a seguir:
INSERT
: um vértice do Gremlin pode ter vários rótulos, e um elemento do Gremlin pode ter várias propriedades. Um registro de alteração separado é gerado para cada rótulo e propriedade quando um elemento é inserido.UPDATE
: quando uma propriedade de elemento do Gremlin é alterada, dois registros de alteração são gerados: o primeiro para remover o valor anterior e o segundo para inserir o novo valor.-
DELETE
: um registro de alteração separado é gerado para cada propriedade de elemento excluída. Por exemplo, quando uma borda do Gremlin com propriedades é excluída, um registro de alteração é gerado para cada uma das propriedades e, depois disso, é gerado um para a exclusão do rótulo da borda.Quando um vértice do Gremlin é excluído, todas as propriedades de borda de entrada e saída são excluídas primeiro, depois os rótulos da borda, depois as propriedades do vértice e, por fim, os rótulos do vértice. Cada uma dessas exclusões gera um registro de alteração.
Formato de resposta da API de fluxos do Neptune
Uma resposta a uma solicitação de API REST dos fluxos do Neptune tem os seguintes campos:
-
lastEventId
: identificador da sequência da última alteração na resposta do fluxo. Um ID de evento é composto de dois campos: umcommitNum
identifica uma transação que alterou o gráfico, e umopNum
identifica uma operação específica dentro dessa transação. Isso é mostrado no exemplo a seguir."eventId": { "commitNum": 12, "opNum": 1 }
lastTrxTimestamp
: a hora em que a confirmação da transação foi solicitada, em milissegundos a partir da época do Unix.format
: o formato da serialização dos registros de alterações que estão sendo gerados. Os valores possíveis sãoPG_JSON
para registros de alterações do Gremlin ou do openCypher,NQUADS
para registros de alterações do SPARQL.-
records
: uma matriz de registros serializados do fluxo de logs de alterações incluídos na resposta. Cada registro na matrizrecords
contém os seguintes campos:commitTimestamp
: a hora em que a confirmação da transação foi solicitada, em milissegundos a partir da época do Unix.eventId
: o identificador da sequência da registro de alteração do fluxo.data
— O registro serializado de Gremlin, SPARQL ou alteração. OpenCypher Os formatos de serialização de cada registro são descritos em mais detalhes na próxima seção, Formatos de serialização nos fluxos do Neptune.op
: a operação que criou a alteração.isLastOp
: presente somente se essa operação for a última da transação. Quando presente, está definido comotrue
. Útil para garantir que uma transação inteira seja consumida.
totalRecords
: o número total de registros na resposta.
Por exemplo, a seguinte resposta exibe dados de alteração do Gremlin para uma transação que contém mais de uma operação:
{ "lastEventId": { "commitNum": 12, "opNum": 1 }, "lastTrxTimestamp": 1560011610678, "format": "PG_JSON", "records": [ { "commitTimestamp": 1560011610678, "eventId": { "commitNum": 1, "opNum": 1 }, "data": { "id": "d2b59bf8-0d0f-218b-f68b-2aa7b0b1904a", "type": "vl", "key": "label", "value": { "value": "vertex", "dataType": "String" } }, "op": "ADD" } ], "totalRecords": 1 }
A resposta a seguir gera dados de alteração do SPARQL para a última operação em uma transação (a operação identificada por EventId(97, 1)
na transação número 97).
{ "lastEventId": { "commitNum": 97, "opNum": 1 }, "lastTrxTimestamp": 1561489355102, "format": "NQUADS", "records": [ { "commitTimestamp": 1561489355102, "eventId": { "commitNum": 97, "opNum": 1 }, "data": { "stmt": "<https://test.com/s> <https://test.com/p> <https://test.com/o> .\n" }, "op": "ADD", "isLastOp": true } ], "totalRecords": 1 }
Exceções da API de fluxos do Neptune
A tabela a seguir descreve as exceções dos fluxos do Neptune.
Código de erro | Código HTTP | OK para repetir? | Message |
---|---|---|---|
|
400 |
Não |
Um out-of-range valor ou inválido foi fornecido como parâmetro de entrada. |
|
400 |
Não |
Todos os registros solicitados excedem a idade máxima permitida e expiraram. |
|
500 |
Sim |
A taxa de solicitações excede a taxa de transferência máxima. |
|
404 |
Não |
Não foi possível encontrar o recurso solicitado. O fluxo pode não ter sido especificado corretamente. |
|
500 |
Sim |
O processamento da solicitação não foi bem-sucedido devido à falta de memória, mas pode ser repetido quando o servidor estiver menos ocupado. |