Partitions y distribución de datos - Amazon DynamoDB

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Partitions y distribución de datos

Amazon DynamoDB almacena los datos en las particiones. Apartitiones una asignación de almacenamiento a una tabla que se sustenta en discos de estado sólido (SSD) y se replica automáticamente en varias zonas de disponibilidad de unAWSRegión . DynamoDB se encarga de todo lo que respecta a la administración de las particiones para que usted no tenga que ocuparse de ello.

Al crear una tabla, su estado inicial es CREATING. Durante esta fase, DynamoDB asigna particiones suficientes a la tabla para que pueda satisfacer los requisitos de desempeño provisionado. Puede comenzar a escribir y leer datos en la tabla una vez que su estado haya cambiado a ACTIVE.

DynamoDB asigna particiones adicionales a una tabla en las siguientes situaciones:

  • Si aumenta los ajustes de rendimiento aprovisionado de la tabla de tal forma que se supere el límite admitido por las particiones existentes.

  • Si una partición existente se llena al límite de su capacidad y se requiere más espacio de almacenamiento.

La administración de las particiones tiene lugar automáticamente en segundo plano y es transparente para las aplicaciones. La tabla permanece disponible a lo largo del proceso y responde en todo momento a los requisitos de rendimiento aprovisionado.

Para obtener más información, consulte Diseño de claves de partición.

Los índices secundarios globales de DynamoDB también constan de particiones. Los datos de un índice secundario global se almacenan de forma independiente de los datos de la tabla base, pero las particiones de índices se comportan prácticamente igual que las particiones de tablas.

Distribución de datos: Clave de partición

Si la tabla tiene una clave principal simple (solo clave de partición), DynamoDB almacenará y recuperará cada elemento basándose en su valor de clave de partición.

Para escribir un elemento en la tabla, DynamoDB utiliza el valor de la clave de partición como información de entrada para una función hash interna. El valor del resultado de la función hash determina la partición donde se almacenará el elemento.

Para leer un elemento de la tabla, debe especificar el valor de clave de partición del elemento. DynamoDB utiliza este valor como información de entrada para la función hash para obtener la partición en la que se encuentra el elemento.

En el siguiente diagrama se muestra una tabla denominada Pets que abarca varias particiones. La clave principal de la tabla esAnimalType(solo se muestra este atributo de clave). DynamoDB utiliza la función hash para determinar dónde se almacenará un nuevo elemento, en este caso de acuerdo con el valor hash de la cadenaPerro. Tenga en cuenta que los elementos no se almacenan de forma ordenada. La ubicación de cada elemento viene determinada por el valor hash de su clave de partición.

nota

DynamoDB está optimizado para distribuir los elementos uniformemente entre las particiones de una tabla, con independencia del número de particiones que haya. Recomendamos elegir una clave de partición que pueda tener un amplio abanico de valores distintos en relación con el número de elementos de la tabla.

Distribución de datos: Clave de partición y clave de ordenación

Si la tabla tiene una clave principal compuesta (clave de partición y clave de ordenación), DynamoDB calcula el valor hash de la clave de partición de la misma forma que se describe enDistribución de datos: Clave de partición. No obstante, almacena todos los elementos con el mismo valor de clave de participación físicamente juntos, ordenados por valor de clave de ordenación.

Para escribir un elemento en la tabla, DynamoDB calcula el valor hash de la clave de partición, con el fin de determinar qué partición debe contener el elemento. En dicha partición, varios elementos podrían tener el mismo valor de clave de partición. Por tanto, DynamoDB almacena el elemento con los otros que tienen la misma clave de partición, en orden ascendente por clave de ordenación.

Para leer un elemento de la tabla, debe especificar los valores de sus claves de partición y ordenación. DynamoDB calcula el valor hash de la clave de partición para obtener la partición en la que se encuentra el elemento.

Puede leer varios elementos de la tabla en una misma operación (Query) si los elementos que desea obtener tienen el mismo valor de clave de partición. DynamoDB devuelve todos los elementos que contienen ese valor de clave de partición. De forma opcional, puede aplicar una condición a la clave de ordenación para que devuelva solamente los elementos comprendidos en un rango de valores determinado.

Supongamos que la tabla Pets tiene una clave principal compuesta que consta de AnimalType (clave de partición) y Name (clave de ordenación). En el siguiente diagrama se ilustra lo que ocurre cuando DynamoDB escribe un elemento con un valor de clave de particiónPerroy un valor de clave de ordenación deFido.

Para leer ese mismo elemento de laMascotas, DynamoDB calcula el valor hash dePerro, produciendo la partición en la que están almacenados estos elementos. A continuación, DynamoDB examina los valores de los atributos de clave de ordenación hasta que encuentraFido.

Para leer todos los elementos cuyo valor de AnimalType es Dog, puede emitir una operación Query sin especificar una condición de clave de ordenación. De forma predeterminada, los elementos se devuelven en el orden en el que están almacenados (es decir, en orden ascendente, según su clave de ordenación). Si lo prefiere, puede solicitar que se muestren por orden descendente.

Para consultar solo algunos de los elementos Dog, puede aplicar una condición a la clave de ordenación (por ejemplo, solo los elementos Dog cuyo valor de Name comience por una letra comprendida entre la A y la K).

nota

En una tabla de DynamoDB, no existe ningún límite superior respecto al número de valores diferentes de clave de ordenación por cada valor de clave de partición. Si necesita almacenar muchos miles de millones dePerroelementos de laMascotasEn, DynamoDB asignaría almacenamiento suficiente para satisfacer este requisito automáticamente.