DynamoDB

Saiba mais sobre o conector DynamoDB e como utilizá-lo na Digibee Integration Platform.

O conector DynamoDB permite que pipelines realizem operações em tabelas DynamoDB na AWS. Atualmente, estão disponíveis as seguintes operações:

  • PutItem: cria ou substitui um item em uma tabela DynamoDB.

  • GetItem: busca atributos de um item existente em uma tabela DynamoDB pela chave primária.

  • UpdateItem: edita os atributos de um item existente ou adiciona um item novo a uma tabela DynamoDB.

  • DeleteItem: remove um único item em uma tabela pela chave primária.

  • Query: busca todos os itens com a mesma chave de partição (partition key) de uma tabela ou índice (secundário local ou secundário global).

  • Scan: busca todos os itens de uma tabela ou índice (secundário local ou secundário global). Uma expressão de filtro pode ser aplicada para limitar o número de itens retornados.

Parâmetros

Os parâmetros disponíveis estão divididos em quatro abas e podem variar de acordo com a operação selecionada. Parâmetros suportados por expressões Double Braces estão marcados com (DB).

Aba General

Aba Authentication

Aba Operation Settings

Parâmetros da operação PutItem

Parâmetros da operação GetItem

Parâmetros da operação UpdateItem

Parâmetros da operação DeleteItem

Parâmetros da operação Query

Parâmetros da operação Scan

Saída

Todas as operações retornam:

  • Um atributo booleano "success" para indicar se a operação foi realizada com sucesso (true) ou se falhou (false).

  • Um atributo de contagem, indicando quantos itens foram afetados pela operação. Este parâmetro recebe o nome da operação no seguinte formato: operation's name + Count.

  • Um atributo "data" contendo um array de registros de itens retornados. Isto é restrito às operações que retornam algum resultado.

Exemplo GetItem

{
	"success": true,
	"getItemCount": 1,
	"data": [
		{
	"Age": 8,
	"Colors": [
		"White", 
		"Brown",
		"Black"
],
"Name": "Fido",
"Vaccinations": {
	"Rabies": [
		"2009-03-17",
		"2011-09-21",
		"2014-07-08"
	],
	"Distemper": "2015-10-13"
},
"Breed": "Beagle",
"AnimalType": "Dog"
}
	]
}

Query e Scan - detalhes adicionais

Expressões condicionais

Ao usar as operações Query e Scan, você pode usar expressões condicionais para filtrar os resultados retornados. As expressões condicionais podem ser definidas nos campos Sort Key Expression (disponível apenas na operação Query) e Filter Expression (disponível nas operações Query e Scan).

Estas expressões são similares às opções de filtro em uma query SQL, como pode ser visto nos exemplos a seguir:

Perceba que os valores reais a serem usados nas condições não podem ser colocados diretamente nas expressões. Como alternativa, um placeholder no formato "dois pontos + nome" deve ser usado, e o valor é então passado pelo campo Expression Attribute Values field. No exemplo acima, os seguintes valores de atributos teriam que ser especificados:

Observe que o valor do campo Placeholder deve corresponder exataente aos nomes usados nas expressões condicionais, incluíndo as vírgulas.

Double Braces em expressões condicionais

Ao usar expressões Double Braces dentro de expressões condicionais, não há necessidade de especificar os valores correspondentes pelo campo Expression Attribute Values. O mesmo exemplo acima poderia ter sido especificado desta forma:

Neste caso, o conector infere os tipos de dados e valores da mensagem de entrada JSON. Os placeholders são gerados automaticamente pelo conector usando números sequenciais. Nesta situação, seria esperada uma mensagem de entrada como no exemplo a seguir:

{
	"skMinValue": 8965,
	"skMaxValue": 9165,
	"createdAtBottom": "2024-03-25T16:11:22Z",
	"deletedVal": false
}

Leia a documentação da AWS para mais detalhes sobre expressões condicionais.

Resultados paginados

O DynamoDB pode paginar os resultados de uma operação Query ou Scan operation em duas situações:

  • O número de itens buscados é maior do que o número estabelecido no parâmetro Limit.

  • O tamanho total da resposta supera 1MB.

Em situações onde uma resposta paginada é retornada, um campo extra lastEvaluatedKey será adicionado à saída, contendo as chaves primárias do último item retornado. Estas chaves retornadas podem então ser usadas em operações subsequentes Query ou Scan ao aplicá-las nos campos Exclusive Start Key.

Na sequência, temos um exemplo de saída paginada:

{
	"success": true,
       	"data":[
		{...},
		{...},
		{...},
		...
	],
	"queryCount": 1000,
	"lastEvaluatedKey": {
		"partitionKeyName": 12,
		"sortKeyName" "abc",
		"indexPartitionKeyName": 123,
		"indexSortKeyName": "index-abc"
	}
}

Perceba que nesse caso, temos uma mapa entre os campos com nomes de chaves e seus respectivos valores. Os campos-chave de índice são omitidos se a operação não tiver o campo Index Name especificado.

Os campos Exclusive Start Key teriam que estar especificados conforme a imagem a seguir para a seguinte iteração de página:

Atualizado