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á.
O Amazon Neptune é um serviço de banco de dados de grafos rápido, confiável e totalmente gerenciado que facilita a criação e a execução de aplicações que trabalham com conjuntos de dados altamente conectados. O recurso principal do Neptune é um mecanismo de banco de dados de grafos com projeto específico e alto desempenho. Esse mecanismo é otimizado para armazenar bilhões de relacionamentos e consultar grafos com latência de milissegundos. O Neptune suporta as populares linguagens de consulta gráfica TinkerPop Apache Gremlin e SPARQL do W3C. Para obter mais informações sobre o Amazon Neptune, consulte O que é o Amazon Neptune? no Guia do usuário do Amazon Neptune.
Sem um banco de dados de grafo, como o Neptune, é provável que você modele os dados altamente conectados em um banco de dados relacional. Como os dados têm conexões potencialmente dinâmicas, as aplicações que utilizam essas fontes de dados precisam modelar consultas de dados conectadas no SQL. Essa abordagem exigirá que você grave uma camada extra para converter consultas gráficas em SQL. Além disso, os bancos de dados relacionais vêm com rigidez de esquema. Quaisquer alterações no esquema para modelar conexões alteradas requerem tempo de inatividade e manutenção adicional da conversão da consulta para oferecer suporte ao novo esquema. Além disso, o desempenho da consulta é outra grande restrição a ser considerada ao projetar seus aplicativos.
Os bancos de dados de grafos podem simplificar muito essas situações. Livre de um esquema, uma camada de consulta de grafos avançada (Gremlin ou SPARQL) e índices otimizados para consultas de grafos aumentam a flexibilidade e o desempenho. O banco de dados de grafo Amazon Neptune também tem recursos corporativos, como a criptografia em repouso, uma camada de autorização segura, backups padrão, suporte a multi-AZ, suporte a réplicas de leitura e outros.
Usando AWS DMS, você pode migrar dados relacionais que modelam um gráfico altamente conectado para um endpoint de destino do Neptune a partir de um endpoint de origem do DMS para qualquer banco de dados SQL compatível.
Para obter mais detalhes, consulte as informações a seguir.
Tópicos
Visão geral da migração para o Amazon Neptune como destino
Antes de iniciar uma migração para um alvo do Neptune, crie os seguintes recursos em sua conta: AWS
-
Um cluster do Neptune para o endpoint de destino.
-
Um banco de dados relacional SQL suportado AWS DMS pelo endpoint de origem.
-
Um bucket do Amazon S3 para o endpoint de destino. Crie esse bucket do S3 na mesma AWS região do seu cluster Neptune. AWS DMS usa esse bucket do S3 como armazenamento intermediário de arquivos para os dados de destino que ele carrega em massa no banco de dados Neptune. Para obter mais informações sobre como criar um bucket do S3, consulte Criar um bucket, no Guia do usuário do Amazon Simple Storage Service.
-
Um endpoint de nuvem privada virtual (VPC) para o S3 na mesma VPC que o cluster do Neptune.
-
Uma função AWS Identity and Access Management (IAM) que inclui uma política de IAM. Essa política deve especificar as permissões
GetObject
,PutObject
,DeleteObject
eListObject
para o bucket do S3 do endpoint de destino. Essa função é assumida por ambos AWS DMS e por Neptune com acesso do IAM ao bucket S3 de destino e ao banco de dados Neptune. Para obter mais informações, consulte Criar um perfil de serviço do IAM para acessar o Amazon Neptune como destino.
Depois de ter esses recursos, a configuração e a inicialização de uma migração para um destino do Neptune é semelhante a qualquer migração de carga máxima utilizando o console ou a API do DMS. No entanto, uma migração para um destino do Neptune exige algumas etapas exclusivas.
Para migrar um banco de dados AWS DMS relacional para o Neptune
-
Crie uma instância de replicação conforme descrito em Criar uma instância de replicação.
-
Crie e teste um banco de dados relacional SQL compatível AWS DMS com o endpoint de origem.
-
Crie e teste o endpoint de destino do banco de dados Neptune.
Para conectar o endpoint de destino ao banco de dados Neptune, especifique o nome do servidor para o endpoint do cluster do Neptune ou para o endpoint da instância do gravador do Neptune. Além disso, especifique a pasta de bucket do S3 AWS DMS para armazenar seus arquivos intermediários para carregamento em massa no banco de dados Neptune.
Durante a migração, AWS DMS armazena todos os dados de destino migrados nessa pasta de bucket do S3 até o tamanho máximo de arquivo especificado por você. Quando esse armazenamento de arquivos atinge esse tamanho máximo, carrega AWS DMS em massa os dados do S3 armazenados no banco de dados de destino. Ele limpará a pasta para ativar o armazenamento de quaisquer dados de destino adicionais para carregamento posterior no banco de dados de destino. Para obter mais informações sobre como especificar essas configurações, consulte Especificar as configurações do endpoint do Amazon Neptune como destino.
-
Crie uma tarefa de replicação de carga máxima com os recursos criados nas etapas 1 a 3 e siga estas etapas:
-
Utilize o mapeamento da tabela de tarefas como de costume para identificar esquemas, tabelas e visualizações de origem específicos para migrar do banco de dados relacional utilizando as regras de seleção e de transformação apropriadas. Para obter mais informações, consulte Utilizar o mapeamento de tabela para especificar as configurações da tarefa.
-
Especifique os mapeamentos de destino, escolhendo uma das opções a seguir para especificar as regras de mapeamento de tabelas e visualizações de origem para o grafo do banco de dados de destino do Neptune:
-
JSON do Gremlin: para obter informações sobre como utilizar o JSON do Gremlin para carregar um banco de dados Neptune, consulte Formato de dados de carga do Gremlin no Guia do usuário do Amazon Neptune.
-
SPARQL RDB to Resource Description Framework Mapping Language (R2RML): para obter informações sobre como utilizar SPARQL R2RML, consulte a especificação do W3C R2RML: RDB para a linguagem de mapeamento RDF
.
-
-
Execute um dos seguintes procedimentos:
-
Usando o AWS DMS console, especifique as opções de mapeamento gráfico usando as regras de mapeamento gráfico na página Criar tarefa de migração de banco de dados.
-
Usando a AWS DMS API, especifique essas opções usando o parâmetro de
TaskData
solicitação da chamada daCreateReplicationTask
API.
Para obter mais informações e exemplos que utilizam JSON de Gremlin e o SPARQL R2RML para especificar regras de mapeamento de grafos, consulte Especificar regras de mapeamento de grafos utilizando Gremlin e R2RML para o Amazon Neptune como destino.
-
-
-
Iniciar a replicação para sua tarefa de migração.
Especificar as configurações do endpoint do Amazon Neptune como destino
Para criar ou modificar um endpoint de destino, é possível usar o console CreateEndpoint
ou as operações de API ModifyEndpoint
.
Para um alvo do Neptune no console, especifique as configurações específicas AWS DMS do Endpoint na página Criar endpoint ou Modificar endpoint do console. Para CreateEndpoint
e ModifyEndpoint
, especifique os parâmetros de solicitação para a opção NeptuneSettings
. O exemplo a seguir mostra como fazer isso utilizando a CLI.
dms create-endpoint --endpoint-identifier my-neptune-target-endpoint
--endpoint-type target --engine-name neptune
--server-name my-neptune-db.cluster-cspckvklbvgf.us-east-1.neptune.amazonaws.com
--port 8192
--neptune-settings
'{"ServiceAccessRoleArn":"arn:aws:iam::123456789012:role/myNeptuneRole",
"S3BucketName":"my-bucket",
"S3BucketFolder":"my-bucket-folder",
"ErrorRetryDuration":57,
"MaxFileSize":100,
"MaxRetryCount": 10,
"IAMAuthEnabled":false}‘
Aqui, a opção da CLI --server-name
especifica o nome do servidor para o endpoint do gravador de cluster do Neptune. Ou é possível especificar o nome do servidor para um endpoint de instância do gravador do Neptune.
Os parâmetros de solicitação de opção --neptune-settings
são:
-
ServiceAccessRoleArn
: (obrigatório) o nome do recurso da Amazon (ARN) do perfil de serviço criado para o endpoint de destino do Neptune. Para obter mais informações, consulte Criar um perfil de serviço do IAM para acessar o Amazon Neptune como destino. -
S3BucketName
: (obrigatório) o nome do bucket do S3 em que o DMS pode armazenar temporariamente dados de grafo migrados em arquivos .csv antes de carregá-los em massa para o banco de dados de destino Neptune. O DMS mapeia os dados de origem SQL para dados de grafo antes de armazená-los nesses arquivos .csv. -
S3BucketFolder
: (obrigatório) o caminho de uma pasta em que você deseja que o DMS armazene dados de grafo migrados no bucket do S3 especificado porS3BucketName
. -
ErrorRetryDuration
: (opcional) o número de milissegundos de espera do DMS para repetir uma carga de dados de grafo migrados para o banco de dados de destino Neptune antes de gerar um erro. O padrão é 250. -
MaxFileSize
: (opcional) o tamanho máximo em KB de dados de grafo migrados armazenados em um arquivo .csv antes que o DMS execute a carga em massa dos dados para o banco de dados de destino Neptune. O padrão é 1.048.576 KB (1 GB). Se for bem-sucedido, o DMS limpará o bucket, pronto para armazenar o próximo lote de dados de grafo migrados. -
MaxRetryCount
: (opcional) o número de vezes para o DMS repetir uma carga em massa de dados de grafo migrados para o banco de dados de destino do Neptune antes de gerar um erro. O padrão é 5. -
IAMAuthEnabled
: (opcional) se desejar a autorização do IAM ativada para esse endpoint, defina esse parâmetro comoServiceAccessRoleArn
e anexe o documento de política do IAM apropriado ao perfil de serviço especificado portrue
. O padrão éfalse
.
Criar um perfil de serviço do IAM para acessar o Amazon Neptune como destino
Para acessar o Neptune como destino, crie um perfil de serviço utilizando o IAM. Dependendo da configuração do endpoint do Neptune, anexe a esse perfil alguns ou todos os documentos de confiança e de política do IAM. Ao criar o endpoint do Neptune, forneça o ARN desse perfil de serviço. Isso permite AWS DMS que o Amazon Neptune assuma permissões para acessar o Neptune e seu bucket Amazon S3 associado.
Se você definir o parâmetro IAMAuthEnabled
em NeptuneSettings
como true
na configuração do endpoint do Neptune, anexe uma política do IAM como a seguinte ao perfil de serviço. Se definir IAMAuthEnabled
como false
, é possível ignorar esta política.
// Policy to access Neptune
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "neptune-db:*",
"Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-CLG7H7FHK54AZGHEH6MNS55JKM/*"
}
]
}
A política do IAM anterior permite acesso total ao cluster de destino do Neptune especificado por Resource
.
Anexe uma política do IAM como a seguinte ao perfil de serviço. Essa política permite que o DMS armazene temporariamente dados de grafos migrados no bucket do S3 criados para carregamento em massa no banco de dados de destino do Neptune.
//Policy to access S3 bucket
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "ListObjectsInBucket0",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": [
"arn:aws:s3:::my-bucket"
]
},
{
"Sid": "AllObjectActions",
"Effect": "Allow",
"Action": ["s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::my-bucket/"
]
},
{
"Sid": "ListObjectsInBucket1",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/"
]
}
]
}
A política do IAM anterior permite que a sua conta consulte o conteúdo do bucket do S3 (arn:aws:s3:::my-bucket
) criado para o destino do Neptune. Ela também permite que sua conta opere totalmente no conteúdo de todos os arquivos e pastas do bucket (arn:aws:s3:::my-bucket/
).
Edite a relação de confiança e anexe a seguinte função do IAM à sua função de serviço para permitir que tanto o serviço de banco de dados Amazon Neptune AWS DMS quanto o Amazon Neptune assumam a função.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "dms.amazonaws.com"
},
"Action": "sts:AssumeRole"
},
{
"Sid": "neptune",
"Effect": "Allow",
"Principal": {
"Service": "rds.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Para obter informações sobre como especificar esse perfil de serviço para o endpoint de destino Neptune, consulte Especificar as configurações do endpoint do Amazon Neptune como destino.
Especificar regras de mapeamento de grafos utilizando Gremlin e R2RML para o Amazon Neptune como destino
As regras de mapeamento de grafos criadas especificam como os dados extraídos de uma origem de banco de dados relacional SQL são carregados em um destino de cluster de banco de dados Neptune. O formato dessas regras de mapeamento difere dependendo se as regras são para carregar dados do gráfico de propriedades usando o Apache TinkerPop Gremlin ou dados do Resource Description Framework (RDF) usando R2RML. A seguir, você encontrará informações sobre esses formatos e muito mais.
É possível especificar essas regras de mapeamento ao criar a tarefa de migração utilizando o console ou a API do DMS.
Utilizando o console, especifique essas regras de mapeamento utilizando Regras de mapeamento de grafos na página Criar tarefa de migração de banco de dados. Em Regras de mapeamento de grafos, é possível inserir e editar as regras de mapeamento diretamente utilizando o editor fornecido. Ou é possível procurar um arquivo que contenha as regras de mapeamento no formato apropriado de mapeamento de grafos.
Utilizando a API, especifique essas opções utilizando o parâmetro de solicitação TaskData
da chamada de API CreateReplicationTask
. Defina TaskData
como o caminho de um arquivo que contém as regras de mapeamento no formato de mapeamento de grafos apropriado.
Regras de mapeamento de grafos para geração de dados de grafo de propriedade utilizando o Gremlin
Utilizando o Gremlin para gerar os dados de grafos de propriedade, especifique um objeto JSON com uma regra de mapeamento para cada entidade de grafo a ser gerada dos dados de origem. O formato deste JSON é definido especificamente para carga em massa do Amazon Neptune. O modelo a seguir mostra como é cada regra nesse objeto:
{
"rules": [
{
"rule_id": "(an identifier for this rule)",
"rule_name": "(a name for this rule)",
"table_name": "(the name of the table or view being loaded)",
"vertex_definitions": [
{
"vertex_id_template": "{col1}",
"vertex_label": "(the vertex to create)",
"vertex_definition_id": "(an identifier for this vertex)",
"vertex_properties": [
{
"property_name": "(name of the property)",
"property_value_template": "{col2} or text",
"property_value_type": "(data type of the property)"
}
]
}
]
},
{
"rule_id": "(an identifier for this rule)",
"rule_name": "(a name for this rule)",
"table_name": "(the name of the table or view being loaded)",
"edge_definitions": [
{
"from_vertex": {
"vertex_id_template": "{col1}",
"vertex_definition_id": "(an identifier for the vertex referenced above)"
},
"to_vertex": {
"vertex_id_template": "{col3}",
"vertex_definition_id": "(an identifier for the vertex referenced above)"
},
"edge_id_template": {
"label": "(the edge label to add)",
"template": "{col1}_{col3}"
},
"edge_properties":[
{
"property_name": "(the property to add)",
"property_value_template": "{col4} or text",
"property_value_type": "(data type like String, int, double)"
}
]
}
]
}
]
}
A presença de um rótulo de vértice implica que o vértice está sendo criado aqui. Sua ausência implica que o vértice está sendo criado por uma origem diferente, e essa definição está adicionando apenas propriedades de vértice. Especifique quantas definições de vértice e borda forem necessárias para especificar os mapeamentos para toda a origem do banco de dados relacional.
Veja a seguir uma regra de exemplo para uma tabela employee
.
{
"rules": [
{
"rule_id": "1",
"rule_name": "vertex_mapping_rule_from_nodes",
"table_name": "nodes",
"vertex_definitions": [
{
"vertex_id_template": "{emp_id}",
"vertex_label": "employee",
"vertex_definition_id": "1",
"vertex_properties": [
{
"property_name": "name",
"property_value_template": "{emp_name}",
"property_value_type": "String"
}
]
}
]
},
{
"rule_id": "2",
"rule_name": "edge_mapping_rule_from_emp",
"table_name": "nodes",
"edge_definitions": [
{
"from_vertex": {
"vertex_id_template": "{emp_id}",
"vertex_definition_id": "1"
},
"to_vertex": {
"vertex_id_template": "{mgr_id}",
"vertex_definition_id": "1"
},
"edge_id_template": {
"label": "reportsTo",
"template": "{emp_id}_{mgr_id}"
},
"edge_properties":[
{
"property_name": "team",
"property_value_template": "{team}",
"property_value_type": "String"
}
]
}
]
}
]
}
Aqui, as definições de vértice e borda mapeiam uma relação hierárquica de um nó employee
com ID de funcionário (EmpID
) e um nó employee
com um ID de gerente (managerId
).
Para obter mais informações sobre como criar regras de mapeamento de grafos utilizando JSON do Gremlin, consulte Formato de dados de carga do Gremlin no Guia do usuário do Amazon Neptune.
Regras de mapeamento de grafos para geração de dados RDF/SPARQL
Se você estiver carregando dados RDF a serem consultados utilizando SPARQL, grave as regras de mapeamento de grafos no R2RML. R2RML é uma linguagem W3C padrão de mapeamento de dados relacionais para RDF. Em um arquivo R2RML, um mapa triplo (por exemplo, <#TriplesMap1>
a seguir) especifica uma regra para transformar cada linha de uma tabela lógica em RDF triplos. Um mapa de assunto (por exemplo, rr:subjectMap
a seguir) especifica uma regra para gerar os assuntos dos RDF triplos gerados por um mapa triplo. Um mapa de objeto de predicado (por exemplo, qualquer rr:predicateObjectMap
a seguir) é um perfil que cria um ou mais pares de objetos de predicado para cada linha de uma tabela lógica.
Segue um exemplo simples para uma tabela de nodes
.
@prefix rr: <http://www.w3.org/ns/r2rml#>.
@prefix ex: <http://example.com/ns#>.
<#TriplesMap1>
rr:logicalTable [ rr:tableName "nodes" ];
rr:subjectMap [
rr:template "http://data.example.com/employee/{id}";
rr:class ex:Employee;
];
rr:predicateObjectMap [
rr:predicate ex:name;
rr:objectMap [ rr:column "label" ];
]
No exemplo anterior, o mapeamento define nós de grafo mapeados a partir de uma tabela de funcionários.
Veja outro exemplo simples de tabela Student
.
@prefix rr: <http://www.w3.org/ns/r2rml#>.
@prefix ex: <http://example.com/#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
<#TriplesMap2>
rr:logicalTable [ rr:tableName "Student" ];
rr:subjectMap [ rr:template "http://example.com/{ID}{Name}";
rr:class foaf:Person ];
rr:predicateObjectMap [
rr:predicate ex:id ;
rr:objectMap [ rr:column "ID";
rr:datatype xsd:integer ]
];
rr:predicateObjectMap [
rr:predicate foaf:name ;
rr:objectMap [ rr:column "Name" ]
].
No exemplo anterior, o mapeamento define nós gráficos que friend-of-a-friend mapeiam relacionamentos entre pessoas em uma Student
tabela.
Para obter mais informações sobre como criar regras de mapeamento de grafos utilizando SPARQL R2RML, consulte a especificação W3C R2RML: RDB to RDF Mapping Language
Tipos de dados para migração de Gremlin e R2RML para o Amazon Neptune como destino
AWS DMS executa o mapeamento do tipo de dados do endpoint de origem do SQL para o destino do Neptune de duas maneiras. O modo utilizado depende do formato do mapeamento de grafos utilizado para carregar o banco de dados Neptune:
-
Apache TinkerPop Gremlin, usando uma representação JSON dos dados de migração.
-
SPARQL do W3C, utilizando uma representação R2RML dos dados de migração.
Para obter mais informações sobre esses dois formatos de mapeamento de grafos, consulte Especificar regras de mapeamento de grafos utilizando Gremlin e R2RML para o Amazon Neptune como destino.
Veja a seguir descrições dos mapeamentos de tipos de dados para cada formato.
Mapeamentos de tipos de dados de origem SQL para destino Gremlin
A tabela a seguir mostra os mapeamentos de tipos de dados de uma origem SQL para um destino Gremlin formatado.
AWS DMS mapeia qualquer tipo de dados de origem SQL não listado para um String
Gremlin.
Tipos de dados de origem SQL |
Tipos de dados de destino Gremlin |
---|---|
NUMERIC (e variantes) |
Double |
DECIMAL |
|
TINYINT |
Byte |
SMALLINT |
Short |
INT, INTEGER |
Int |
BIGINT |
Long |
FLOAT |
Float |
DOUBLE PRECISION |
|
REAL |
Double |
BIT |
Boolean |
BOOLEAN |
|
DATE |
Date |
TIME |
|
TIMESTAMP |
|
CHARACTER (e variantes) |
String |
Para obter mais informações sobre os tipos de dados do Gremlin para carregamento do Neptune, consulte Tipos de dados do Gremlin no Guia do usuário do Neptune.
Mapeamentos de tipos de dados de origem SQL para destino R2RML (RDF)
A tabela a seguir mostra os mapeamentos de tipos de dados de uma origem SQL para um destino R2RML formatado.
Todos os tipos de dados RDF listados diferenciam maiúsculas de minúsculas, exceto RDF literal. AWS DMS mapeia qualquer tipo de dados de origem SQL não listado para um literal RDF.
Um RDF literal é uma de muitas formas e tipos de dados lexicais e literais. Para obter mais informações, consulte RDF Literals
Tipos de dados de origem SQL |
Tipos de dados de destino R2RML (RDF) |
---|---|
BINARY (e variantes) |
xsd:hexBinary |
NUMERIC (e variantes) |
xsd:decimal |
DECIMAL |
|
TINYINT |
xsd:integer |
SMALLINT |
|
INT , INTEGER |
|
BIGINT |
|
FLOAT |
xsd:double |
DOUBLE PRECISION |
|
REAL |
|
BIT |
xsd:boolean |
BOOLEAN |
|
DATE |
xsd:date |
TIME |
xsd:time |
TIMESTAMP |
xsd:dateTime |
CHARACTER (e variantes) |
RDF literal |
Para obter mais informações sobre os tipos de dados RDF para carregamento do Neptune e de seus mapeamentos para tipos de dados de origem SQL, consulte Conversões de tipo de dados
Limitações da utilização do Amazon Neptune como destino
Aplicam-se as seguintes limitações ao utilizar o Neptune como destino:
-
AWS DMS atualmente suporta tarefas de carga total somente para migração para um destino de Neptune. A migração de captura de dados de alterações (CDC) para um destino do Neptune não é compatível.
-
Verifique se o banco de dados Neptune de destino é limpo manualmente de todos os dados antes de iniciar a tarefa de migração, como nos exemplos a seguir.
Para descartar todos os dados (vértices e bordas) dentro do grafo, execute o seguinte comando do Gremlin.
gremlin> g.V().drop().iterate()
Para descartar vértices com o rótulo
'customer'
, execute o seguinte comando do Gremlin.gremlin> g.V().hasLabel('customer').drop()
nota
A remoção de um grande conjunto de dados pode levar algum tempo. Talvez você queira iterar
drop()
com uma limitação, por exemplo,limit(1000)
.Para descartar bordas com o rótulo
'rated'
, execute o seguinte comando do Gremlin.gremlin> g.E().hasLabel('rated').drop()
nota
A remoção de um grande conjunto de dados pode levar algum tempo. Talvez você queira iterar
drop()
com uma limitação, por exemplo,limit(1000)
. -
A operação da API do DMS
DescribeTableStatistics
pode retornar resultados imprecisos sobre determinada tabela devido à natureza das estruturas de dados do grafo do Neptune.Durante a migração, AWS DMS verifica cada tabela de origem e usa o mapeamento gráfico para converter os dados de origem em um gráfico de Netuno. Os dados convertidos são armazenados primeiro na pasta de bucket do S3 especificada para o endpoint de destino. Se a origem for verificada e esses dados intermediários do S3 forem gerados com êxito,
DescribeTableStatistics
pressupõe que os dados foram carregados com êxito no banco de dados de destino do Neptune. Entretanto, isso nem sempre é verdade. Para verificar se os dados foram carregados corretamente para determinada tabela, compare os valores de retornocount()
nas extremidades da migração para essa tabela.No exemplo a seguir, AWS DMS carregou uma
customer
tabela do banco de dados de origem, à qual é atribuído o rótulo'customer'
no gráfico do banco de dados Neptune de destino. É possível certificar-se de que esse rótulo seja gravado no banco de dados de destino. Para isso, compare o número de linhas docustomer
disponíveis no banco de dados de origem com o número de linhas rotuladas do'customer'
carregadas no banco de dados de destino do Neptune após a conclusão da tarefa.Para obter o número de linhas disponíveis do cliente no banco de dados de origem utilizando SQL, execute o seguinte procedimento.
select count(*) from customer;
Para obter o número de linhas rotuladas
'customer'
carregadas no grafo do banco de dados de destino utilizando Gremlin, execute o seguinte procedimento.gremlin> g.V().hasLabel('customer').count()
-
Atualmente, se uma única tabela não for carregada, toda a tarefa falhará. Diferentemente de um banco de dados relacional de destino, os dados no Neptune são altamente conectados, o que torna impossível, em muitos casos, retomar uma tarefa. Se uma tarefa não puder ser retomada com êxito devido a esse tipo de falha de carga de dados, crie uma nova tarefa para carregar a tabela que apresentou falha no carregamento. Antes de executar essa nova tarefa, limpe manualmente a tabela parcialmente carregada do destino do Neptune.
nota
É possível retomar uma tarefa com falha na migração para um destino do Neptune se a falha for recuperável (por exemplo, um erro de trânsito de rede).
-
AWS DMS suporta a maioria dos padrões para R2RML. No entanto, AWS DMS não é compatível com determinados padrões R2RML, incluindo expressões inversas, junções e visualizações. Uma solução alternativa para uma exibição R2RML é criar uma exibição SQL personalizada correspondente no banco de dados de origem. Na tarefa de migração, utilize o mapeamento de tabela para escolher a exibição como entrada. Mapeie a exibição para uma tabela que seja então consumida pelo R2RML para gerar dados de grafo.
-
Ao migrar dados de origem com tipos de dados SQL não é compatível com dos, os dados de destino resultantes podem ter perda de precisão. Para obter mais informações, consulte Tipos de dados para migração de Gremlin e R2RML para o Amazon Neptune como destino.
-
AWS DMS não suporta a migração de dados LOB para um destino do Neptune.