Prácticas recomendadas sobre el uso de claves de clasificación para organizar datos en DynamoDB
En una tabla de Amazon DynamoDB, la clave principal que identifica de manera inequívoca cada elemento de la tabla puede constar de una clave de partición y una clave de clasificación.
Si las claves de ordenación están bien diseñadas, tienen dos beneficios principales:
Recopilan información relacionada en un único lugar en el que los datos se pueden consultar de forma eficaz. Si se diseñan meticulosamente, permiten recuperar grupos de elementos relacionados que suelen ser necesarios utilizando consultas de rango con operadores, como
begins_with
,between
,>
,<
, etc.-
Las claves de ordenación compuestas permiten definir en los datos relaciones jerárquicas (de uno a varios) que pueden consultarse en cualquier nivel de la jerarquía.
Por ejemplo, en una tabla con ubicaciones geográficas, la clave de ordenación podría estructurarse del modo siguiente:
[country]#[region]#[state]#[county]#[city]#[neighborhood]
Esto le permitiría crear consultas de rango eficaces para una lista de ubicaciones en cualquiera de estos niveles de agregación, desde
country
hastaneighborhood
, pasando por cualquier elemento intermedio.
Uso de claves de clasificación para el control de versiones
Muchas aplicaciones deben conservar el historial de revisiones de los elementos por motivos de auditoría o conformidad y para poder recuperar fácilmente la versión más reciente. Existe un patrón de diseño eficaz que permite hacerlo mediante prefijos de clave de ordenación:
Cree dos copias de cada elemento nuevo: una copia deber tener el prefijo de número de versión 0 (por ejemplo,
v0_
) al principio de la clave de ordenación mientras que la otra debe tener el prefijo de número de versión 1 (por ejemplo,v1_
).Cada vez que el elemento se actualice, utilice el siguiente prefijo de versión en la clave de ordenación de la versión actualizada y copie el contenido actualizado en el elemento cuyo prefijo de versión es 0. Esto significa que la última versión de cada elemento puede localizarse fácilmente a través del prefijo 0.
Por ejemplo, un fabricante de piezas podría utilizar un esquema como el de la siguiente ilustración.
Varios auditores realizan una serie de auditorías en el elemento Equipment_1
. Los resultados de cada nueva auditoría se capturan en un nuevo elemento de la tabla, comenzando por el número de versión 1 e incrementando el número con cada revisión.
Cuando se agrega una nueva revisión, la capa de la aplicación sustituye el contenido del elemento que tiene la versión 0 (donde la clave de ordenación es igual a v0_Audit
) por el contenido de la nueva versión.
Siempre que la aplicación tenga que recuperar el estado de auditoría más reciente, podrá consultar el prefijo v0_
de la clave de ordenación.
Si la aplicación tiene que recuperar todo el historial de revisiones, podrá consultar todos los elementos situados bajo la clave de partición del elemento y filtrar el elemento v0_
.
Este diseño también podría funcionar para realizar auditorías de varias piezas de un componente del equipo si se incluyera el ID de cada pieza en la clave de ordenación, detrás del prefijo.