Iniciante7 min de leitura

Como visualizar, navegar e editar dados DynamoDB

Cada "olhar" ou "mudança" que você faz em uma tabela DynamoDB é mapeada para um pequeno conjunto de Operações API – GetItem, Query, Scan, PutItem, UpdateItem, DeleteItem. Não há nenhum visualizador de tabela relacional abaixo: "navegar em uma tabela" é literalmente uma Scan, e "editar uma linha" é um UpdateItem contra um . Sabendo qual operação para a qual cada clique é mapeado é a diferença entre uma leitura barata e uma tabela completa varredura que você não pretendia executar.

DynoTable é uma GUI exatamente para essas operações - mostra qual delas você está prestes a funcionar, e o custo, antes de atingir o fio.

Como navegar em uma tabela DynamoDB

Abrir uma tabela para "ver o que há nela" é um Scan — ele lê todos os itens da tabela. tabela ou índice (AWS: "Uma operação Scan no Amazon DynamoDB lê cada item em uma tabela ou arquivo secundário índice."). Ótimo para mesas pequenas; em um grande é a arma de custo clássico abordado em consulta vs verificação.

Um único Scan retorna no máximo 1 MB de dados e depois entrega um LastEvaluatedKey para buscar a próxima página - então "navegar pela tabela inteira" é realmente um loop de paginação (AWS: "Uma única solicitação Scan pode recuperar no máximo 1 MB de dados" e "o LastEvaluatedKey de uma resposta Scan deve ser usado como ExclusiveStartKey para a próxima solicitação Scan"). Veja paginação para saber como o cursor funciona e por que a página no estilo offset números não existem aqui.

Como filtrar/verificar dados do DynamoDB

Um não economiza uma digitalização. DynamoDB aplica o filtre após a conclusão da leitura, para que você pague por cada item digitalizado - não apenas pelo linhas que você mantém.

Uma expressão de filtro é aplicada após o término de um Scan, mas antes que os resultados sejam retornou. Portanto, um Scan consome a mesma quantidade de capacidade de leitura, independentemente de uma expressão de filtro estar presente. — Documentos de digitalização do AWS

A resposta torna isso visível: ScannedCount é “o número de itens avaliados, antes de qualquer ScanFilter ser aplicado" enquanto Count é o que sobreviveu ao filtro (AWS). Um ScannedCount alto com um Count minúsculo é a assinatura de uma varredura ineficiente.

Como consultar uma tabela DynamoDB

Um Query é a leitura barata e direcionada – mas requer uma chave de partição. Por AWS: "Você deve fornecer o nome do atributo chave de partição e um valor único para esse atributo. Query retorna todos os itens com esse valor de chave de partição. Opcionalmente, você pode fornecer um atributo de chave de classificação e usar um operador de comparação para refinar o resultados da pesquisa."

Portanto, um Query lê apenas os itens sob uma chave de partição, opcionalmente restringida por um condição de chave de classificação - nunca a tabela inteira. Sem chave de partição, sem Query: você está de volta para um Scan. Essa escolha é a decisão de custo mais importante no DynamoDB; o detalhamento completo está em query vs scan.

Sob demanda no us-east-1, abrindo uma tabela para "navegar" ele executa um Scan paginado que cobra 0,5 RCU por 4 KB eventualmente consistente por item examinado — uma GUI percorrer uma tabela de 10 GB com linhas de 1 KB é da ordem de 2,5 milhões de RCU se você carregar tudo. Um Query direcionado em uma chave de partição lê apenas aquela coleção de itens. Estime a navegação versus consulta no calculadora de preços.Para montar o KeyConditionExpression / FilterExpression sem escrever à mão a sintaxe do espaço reservado, use o DynamoDB Expression Builder — emite o nomes exatos/values mapeia o que API espera.

Como editar um item no DynamoDB

Editar um item é um UpdateItem em relação à sua chave primária completa. Você não reescrever o item inteiro - você fornece um nomeando apenas o atributos que você está alterando:

UpdateItem
  Key:              { "PK": "USER#42", "SK": "PROFILE" }
  UpdateExpression: SET email = :e, updatedAt = :t

Dois fatos que confundem as pessoas, tanto do ponto de vista Documentos de itens AWS:

  • Você deve especificar toda a chave primária, não apenas parte dela. Em um Tabela que é chave de partição e chave de classificação. Você não pode "editar uma linha" por um atributo arbitrário — que precisa de uma varredura para encontrar a chave primeiro.
  • UpdateItem é um upsert. "Se um item com a chave especificada não existir, UpdateItem cria um novo item. Caso contrário, ele modifica o item existente atributos." Um erro de digitação na chave cria silenciosamente um novo item em vez de um erro.

Como excluir um item

Um DeleteItem, novamente codificado pela chave primária completa: "DeleteItem exclui o item com a chave especificada" (AWS). Mesma regra da edição - você precisa da chave inteira, portanto, exclua "todas as linhas onde status = 'aberto'" não é uma chamada; você escaneia /query para encontrar as chaves e, em seguida, exclua cada uma delas. BatchWriteItem agrupa até 25 solicitações put/delete (AWS: "A operação BatchWriteItem pode conter até 25 PutItem individuais e solicitações DeleteItem"), mas cada uma ainda tem como alvo uma chave — não há DELETE … WHERE.

Como visualizar dados aninhados / JSON

Os itens DynamoDB são armazenados em um formato de fio com etiqueta de tipo (DynamoDB-JSON), onde cada valor carrega um descritor de tipo de uma ou duas letras (S, N, M, L, SS… - o a lista completa de descritores está no Documentos sobre tipos de dados AWS). O JSON simples não tem um tipo definido, portanto, uma matriz viaja de ida e volta como uma lista (L), nunca uma string set (SS) — uma limitação de conversão real, não um bug de exibição. O mapa de tipo completo está em Tipos de dados DynamoDB; para converter um blob DynamoDB-JSON em simples JSON e vice-versa, use o conversor DynamoDB JSON.

Além de navegar e editar: questionando se o DynamoDB não pode

Scan/Query/UpdateItem cobrem visualização e edição, mas não podem analisar - DynamoDB não possui JOIN, GROUP BY ou funções agregadas como COUNT/SUM, e PartiQL também não os adiciona: sua gramática SELECT é apenas SELECT … FROM table [WHERE …] [ORDER BY …], sem cláusula de junção ou agrupamento (Referência SELECIONADA AWS PartiQL), portanto, cada instrução é mapeada para um único Get/Query/Scan/Put/Update/Delete. SQL do DynoTable O Workbench preenche essa lacuna materializando suas tabelas por meio da consulta real do DynamoDB tempo de execução e execução do SQL na parte superior — SQL dentro das regras de padrão de acesso do DynamoDB — mas para navegar e editar diariamente, as operações acima são toda a caixa de ferramentas.

FAQ

Como posso visualizar os dados do DynamoDB sem o console AWS? Use uma GUI de desktop que emita as mesmas chamadas Scan/Query. O console AWS navega nas tabelas por meio de varreduras paginadas; um cliente dedicado como DynoTable faz o mesmo, mas mostra a capacidade consumida e a operação que você está executando.

Como edito um item DynamoDB? Emita um UpdateItem com base na chave primária completa do item com uma atualização do SET expressão nomeando apenas os atributos que você está alterando. Em uma GUI, edite em linha o cell – ele compila para aquele UpdateItem para você.

Por que a filtragem ainda custa uma verificação completa? Porque o DynamoDB aplica o filtro após a varredura lê os itens. Filtrado os itens ainda são lidos e medidos. Para reduzir custos, consulte por uma chave de partição (ou um GSI) em vez de digitalizar.

Posso atualizar muitos itens de uma vez? Não há UPDATE … WHERE – cada UpdateItem/DeleteItem tem como alvo um único primário chave. Para alterar vários itens em uma solicitação atômica, o TransactWriteItems aplica até 100 ações de gravação (incluindo Update) todas bem-sucedidas ou todas revertidas. Caso contrário você scan/query para coletar as chaves e, em seguida, escreva cada uma (até 25 por BatchWriteItem).Posso navegar em uma tabela local DynamoDB da mesma maneira? Sim – aponte a mesma GUI para o endpoint local. Veja DynamoDB Local.

Deseja navegar, filtrar e editar tabelas DynamoDB em linha - e executar o SQL PartiQL não pode? Baixar DynoTable.

Atualizado