Otimizar uma carga em massa do Amazon Neptune - 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á.

Otimizar uma carga em massa do Amazon Neptune

Use as seguintes estratégias para reduzir ao mínimo o tempo de carregamento de uma carga em massa do Neptune:

  • Limpe os dados:

    • Converta os dados em um formato de dados compatível antes de carregá-los.

    • Remova todas as duplicações ou erros conhecidos.

    • Reduza o número de predicados exclusivos (como propriedades de bordas e vértices) o máximo possível.

  • Otimize os arquivos:

    • Se você carregar arquivos grandes, como arquivos CSV, de um bucket do Amazon S3, o carregador gerenciará a simultaneidade para você, analisando-os em partes que poderão ser carregadas paralelamente. Usar um número muito grande de arquivos pequenos pode retardar esse processo.

    • Se você carregar vários arquivos de uma pasta do Amazon S3, o carregador carregará automaticamente os arquivos de vértice primeiro e depois os arquivos de borda.

    • A compactação dos arquivos reduz o tempo de transferência. O carregador é compatível com a compactação gzip dos arquivos de origem.

  • Confira as configurações do carregador:

    • Se você não precisar realizar nenhuma outra operação durante o carregamento, use o parâmetro OVERSUBSCRIBE parallelism. Essa configuração de parâmetro faz com que o carregador em massa use todos os recursos de CPU disponíveis ao ser executado. Geralmente, são necessários de 60% a 70% de capacidade da CPU para manter a operação funcionando tão rápido quanto permitem as restrições de E/S.

      nota

      Quando parallelism é definido como OVERSUBSCRIBE ou HIGH (a configuração padrão), há o risco de, ao carregar dados do openCypher, que os threads encontrem uma condição de corrida e um deadlock, gerando um erro LOAD_DATA_DEADLOCK. Nesse caso, defina parallelism como uma configuração mais baixa e repita o carregamento.

    • Se o trabalho de carregamento incluir várias solicitações de carregamento, use o parâmetro queueRequest. A configuração de queueRequest como TRUE permite que o Neptune coloque suas solicitações na fila para que você não precise esperar que uma termine antes de emitir outra.

    • Se suas solicitações de carregamento estiverem sendo colocadas na fila, você poderá configurar níveis de dependência usando o parâmetro dependencies, para que a falha de um trabalho cause falhas nos trabalhos dependentes. Isso pode evitar inconsistências nos dados carregados.

    • Se um trabalho de carregamento envolver a atualização de valores carregados anteriormente, defina o parâmetro updateSingleCardinalityProperties como TRUE. Caso contrário, o carregador tratará uma tentativa de atualizar um valor de cardinalidade único existente como um erro. No caso de dados do Gremlin, a cardinalidade também é especificada nos cabeçalhos de coluna de propriedades (consulte Cabeçalhos de coluna de propriedade).

      nota

      O parâmetro updateSingleCardinalityProperties não está disponível para dados do Resource Description Framework (RDF).

    • É possível usar o parâmetro failOnError para determinar se as operações de carregamento em massa devem falhar ou continuar quando um erro for encontrado. Além disso, você pode usar o parâmetro mode para garantir que uma tarefa de carregamento seja retomada a partir do ponto em que uma tarefa anterior falhou, em vez de recarregar dados que já haviam sido carregados.

  • Aumentar a escala verticalmente: defina a instância de gravador do cluster de banco de dados como o tamanho máximo antes do carregamento em massa. Observe que, se você fizer isso, também deverá aumentar a escala verticalmente de todas as instâncias de réplica de leitura no cluster de banco de dados ou removê-las até terminar de carregar os dados.

    Quando o carregamento em massa estiver concluído, não se esqueça de reduzir a escala verticalmente da instância de gravador novamente.

Importante

Se você tiver um ciclo de reinicializações repetidas de réplica de leitura em virtude do atraso na replicação durante o carregamento em massa, é provável que as réplicas não consigam acompanhar o gravador no cluster de banco de dados. Escale os leitores para serem maiores do que o gravador ou remova-os temporariamente durante o carregamento em massa e, depois, recrie-os após a conclusão.

Consulte Parâmetros de solicitação para obter mais detalhes sobre como definir os parâmetros de solicitação do carregador.