Cómo ver, explorar y editar DynamoDB datos
Cada "mirada" o "cambio" que realiza en una tabla DynamoDB se asigna a uno de un pequeño conjunto de
API operaciones — GetItem, Query, Scan, PutItem, UpdateItem, DeleteItem.
No hay ningún visor de tablas relacionales debajo: "explorar una tabla" es literalmente una
Scan, y "editar una fila" es un UpdateItem contra una . saber cual
La operación a la que se asigna cada click es la diferencia entre una lectura barata y una tabla completa.
scan no quisiste huir.
DynoTable es una GUI que cubre exactamente estas operaciones: te muestra cuál estás a punto de ejecutarse, y el costo, antes de que llegue al mercado.
Cómo navegar por una tabla DynamoDB
Abrir una tabla para "ver lo que hay en ella" es Scan: lee todos los elementos de la tabla.
tabla o índice (AWS:
"Una operación Scan en Amazon DynamoDB lee cada elemento en una tabla o en una tabla secundaria
índice."). Bien para mesas pequeñas; en uno grande es la clásica pistola de costo
cubierto en query vs scan.
Un solo Scan devuelve como máximo 1 MB de datos y luego te entrega un LastEvaluatedKey para
buscar la página siguiente, por lo que "examinar toda la tabla" es en realidad un bucle de paginación
(AWS:
"Una sola solicitud Scan puede recuperar un máximo de 1 MB de datos" y "el
LastEvaluatedKey de una respuesta Scan debe usarse como ExclusiveStartKey
para la próxima Scan solicitud"). Ver
pagination para saber cómo funciona el cursor y por qué la página con estilo desplazado
Los números no existen aquí.
Cómo filtrar / scan DynamoDB datos
Una no le ahorra un scan. DynamoDB aplica la filtro después de que se completa la lectura, por lo que paga por cada elemento scan nado, no solo por el filas que mantienes.
Se aplica una expresión de filtro después de que finaliza
Scanpero antes de que se muestren los resultados. regresó. Por lo tanto, unScanconsume la misma cantidad de capacidad de lectura, independientemente de si hay una expresión de filtro presente. — AWS Scan documentos
La respuesta hace esto visible: ScannedCount es "el número de elementos evaluados,
antes de que se aplique cualquier ScanFilter", mientras que Count es lo que sobrevivió al filtro
(AWS).
Un ScannedCount alto con un Count pequeño es la firma de un scan ineficiente.
Cómo query una tabla DynamoDB
Un Query es la lectura dirigida y económica, pero requiere una clave de partición. por
AWS:
"Debe proporcionar el nombre del atributo de clave de partición y un valor único para
ese atributo. Query devuelve todos los elementos con ese valor de clave de partición. Opcionalmente,
puede proporcionar un atributo de clave de clasificación y utilizar un operador de comparación para refinar la
resultados de búsqueda."
Entonces, un Query lee solo los elementos bajo una clave de partición, opcionalmente limitada por una
condición de clave de clasificación: nunca toda la tabla. Sin clave de partición, sin Query: estás
volver a un Scan. Esa elección es la decisión de costos más importante en
DynamoDB; el desglose completo está en query frente a scan.
A pedido en us-east-1, al abrir una tabla para "navegar", se ejecuta un Scan paginado.
que factura 0,5 RCU por 4 KB eventualmente consistente por elemento examinado: una GUI
desplazarse por una tabla de 10 GB de filas de 1 KB es del orden de 2,5
millones RCU si cargas todo. Un Query objetivo en una clave de partición lee
solo esa colección de artículos. Estimar la navegación frente a query en el
calculadora de precios.
Para montar el KeyConditionExpression / FilterExpression sin escritura a mano
la sintaxis del marcador de posición, utilice el
DynamoDB Generador de expresiones — emite el
nombres/valores exactos asignan lo que API espera.
Cómo editar un elemento en DynamoDB
Editar un elemento supone un UpdateItem respecto de su clave principal completa. tu no
reescribe todo el elemento: proporcionas una nombrando solo el
atributos que estás cambiando:
UpdateItem
Key: { "PK": "USER#42", "SK": "PROFILE" }
UpdateExpression: SET email = :e, updatedAt = :tDos hechos que hacen tropezar a la gente, tanto desde el punto de vista AWS documentos de elementos:
- Debe especificar la clave principal completa, no solo parte de ella. En un tabla que es la clave de partición y la clave de clasificación. No puedes "editar una fila" por un atributo arbitrario, que necesita un scan para encontrar la clave primero.
UpdateItemes un upsert. "Si un elemento con la clave especificada no existe,UpdateItemcrea un nuevo elemento. De lo contrario, modifica el valor de un elemento existente. atributos." Un error tipográfico en la clave crea silenciosamente un nuevo elemento en lugar de generar un error.
Cómo eliminar un elemento
A DeleteItem, nuevamente codificado por la clave principal completa:
"DeleteItem elimina el elemento con la clave especificada"
(AWS).
La misma regla que editar: necesita la clave completa, por lo que eliminar "todas las filas donde estado =
'abrir'" no es una llamada; scan/query para encontrar las claves y luego eliminar cada una.
BatchWriteItem agrupa hasta 25 solicitudes de colocación/eliminación
(AWS:
"La operación BatchWriteItem puede contener hasta 25 PutItem individuales y
DeleteItem solicitudes"), pero cada una todavía apunta a una clave; no hay DELETE … WHERE.
Cómo ver datos anidados/JSON
DynamoDB elementos se almacenan en un formato de cable con etiquetas tipográficas (DynamoDB-JSON), donde cada
El valor lleva un tipo de una o dos letras descriptor (S, N, M, L, SS… — el
La lista completa de desc está en la
AWS documentos de tipos de datos).
JSON no tiene ningún tipo de conjunto, por lo que una matriz viaja de ida y vuelta como una lista (L), nunca una cadena.
set (SS): una limitación de conversión real, no un error de visualización. El mapa de tipo completo está en
DynamoDB tipos de datos; para convertir un DynamoDB-JSON a simple
JSON y viceversa, use el DynamoDB JSON convertidor.
Más allá de explorar y editar: querying que DynamoDB no puede
Scan/Query/UpdateItem cubren la visualización y la edición, pero no pueden analizar —
DynamoDB no tiene JOIN, GROUP BY, ni funciones agregadas como COUNT/SUM, y
PartiQL tampoco los agrega: su SELECT gramática es
solo SELECT … FROM table [WHERE …] [ORDER BY …], sin cláusula de unión o agrupación
(AWS PartiQL SELECCIONAR referencia),
por lo que cada declaración se asigna a un único Obtener/Query/Scan/Put/Update/Delete. DynoTable SQL
Workbench llena ese vacío al materializar sus tablas a través del query real de DynamoDB.
tiempo de ejecución y ejecutando SQL en la parte superior — SQL dentro de las reglas de patrón de acceso de DynamoDB —
pero para la exploración y edición del día a día, las operaciones anteriores son toda la caja de herramientas.
FAQ
¿Cómo veo DynamoDB datos sin la consola AWS?
Utilice una GUI de escritorio que emita las mismas Scan/Query llamadas. La consola AWS
explora tablas a través de scans paginados; un client dedicado como DynoTable hace lo mismo pero
muestra la capacidad consumida y la operación que estás ejecutando.
¿Cómo edito un elemento DynamoDB?
Emitir un UpdateItem contra la clave principal completa del elemento con una actualización SET
expresión que nombra solo los atributos que estás cambiando. En una GUI, edite en línea el
cell: compila ese UpdateItem por ti.
¿Por qué el filtrado todavía cuesta scan? Porque DynamoDB aplica el filtro después de que scan lea los elementos. filtrado Los artículos todavía se leen y miden. Para reducir costos, query mediante una clave de partición (o una GSI) en lugar de scanning.
¿Puedo actualizar muchos elementos a la vez?
No hay UPDATE … WHERE: cada UpdateItem/DeleteItem se dirige a un solo primario
clave. Para cambiar varios elementos en una solicitud atómica, TransactWriteItems se aplica hasta
100 acciones de escritura (incluidas Update) que tienen éxito o se revierten. De lo contrario tu
scan/query para recolectar las claves, luego escribe cada una (hasta 25 por BatchWriteItem).
¿Puedo explorar una tabla local DynamoDB de la misma manera? Sí, apunte la misma GUI al endpoint local. Ver DynamoDB Local.
Quiere explorar, filtrar y editar en línea DynamoDB tablas y ejecutar SQL PartiQL. ¿no puedes? Descargar DynoTable.