Tabla De Partición Mbr A Gpt

0 views
Skip to first unread message

Charo Lemucchi

unread,
Aug 4, 2024, 2:23:18 PM8/4/24
to neotermonsna
Lainstruccin ALTER TABLE DROP PARTITION no proporciona una sintaxis nica para eliminar todas las particiones a la vez ni admite criterios de filtro para especificar un rango de particiones que se eliminarn.

Como alternativa, puede utilizar las acciones de la API de AWS Glue GetPartitions y BatchDeletePartition durante el scripting. La accin GetPartitions admite expresiones de filtro complejas como las de una expresin WHERE de SQL. Despus de usar GetPartitions para crear una lista filtrada de particiones para eliminar, puede utilizar la accin BatchDeletePartition para eliminar las particiones en lotes de 25.


Debido a un problema conocido, cuando se especifica una particin no vlida para la instruccin ALTER TABLE DROP PARTITION, se eliminan todas las particiones de la tabla en AWS Glue. Por ejemplo, la siguiente instruccin eliminar todas las particiones de la tabla my_table aunque la particin especificada no exista. Como solucin alternativa, asegrese de introducir correctamente la informacin de la particin antes de ejecutar la instruccin ALTER TABLE DROP PARTITION.


Esta publicacin de blog cubre consideraciones y estrategias importantes para elegir la clave de particin adecuada al disear un esquema de bases de datos NoSQL que utilice Amazon DynamoDB. Elegir la clave de particin correcta es un paso importante en el diseo y la creacin de aplicaciones escalables y confiables sobre DynamoDB.


DynamoDB almacena los datos como grupos de atributos, conocidos como elementos. Los elementos son similares a las filas o registros de otros sistemas de bases de datos. DynamoDB almacena y recupera cada elemento en funcin del valor de la clave principal, que debe ser nico. Los elementos se distribuyen entre unidades de almacenamiento de 10 GB cada una, denominadas particiones (almacenamiento fsico interno de DynamoDB). Cada tabla tiene una o ms particiones, como se muestra en la siguiente ilustracin. Para obtener ms informacin, consulte Particiones y distribucin de datos en la Gua para Desarrolladores de DynamoDB.


DynamoDB utiliza el valor de la clave de particin como parmetro de entrada para una funcin hash interna. El resultado de la funcin hash determina la particin en la que se almacena el elemento. La ubicacin de cada elemento viene determinada por el valor hash de su clave de particin


Todos los elementos con la misma clave de particin se almacenan juntos y, para las claves de particin compuestas, se ordenan por el valor de la clave de ordenacin. DynamoDB divide las particiones por clave de ordenacin si el tamao de la coleccin crece ms de 10 GB


DynamoDB distribuye uniformemente el desempeo aprovisionado (unidades de capacidad de lectura (RCUs) y unidades de capacidad de escritura (WCUs)) entre las particiones y admite automticamente los patrones de acceso mediante el rendimiento que ha aprovisionado. Sin embargo, si el patrn de acceso supera los 3,000 RCU o 1,000 WCU para un nico valor de clave de particin, es posible que las solicitudes se demoren (throttle) retornando un mensaje de error ProvisionedThroughputExceededException.


Para evitar la limitacin de solicitudes (throttling), disee la tabla de DynamoDB con la clave de particin adecuada para satisfacer sus requisitos de acceso y proporcionar una distribucin uniforme de los datos.


Utilice atributos de cardinalidad alta. Se trata de atributos que tienen valores distintos para cada elemento, como direccin de correo electrnico, cdigo de empleado, cdigo de cliente, nmero de sesin, nmero de orden, etc.


Utilice atributos compuestos. Intente combinar ms de un atributo para formar una clave nica, si cumple con su patrn de acceso. Por ejemplo, considere una tabla Ordenes con codigocliente+codigoproducto+codigopais como clave de particin y fecha_orden como clave de ordenamiento.


Almacene en cach los elementos ms populares. Cuando exista un gran volumen de trfico de lectura considere utilizar Amazon DynamoDB Accelerator (DAX). La memoria cach acta como un filtro de bajo impacto que impide que las lecturas de elementos inusualmente populares inunden las particiones. Por ejemplo, considere una tabla que tiene informacin de transacciones para productos. Se espera que algunas ofertas sean ms populares que otras durante los principales eventos de promocin como el Viernes Negro (Black Friday) o el Lunes Ciberntico (Cyber Monday). DAX es un servicio administrado de memoria cach especialmente diseado para DynamoDB que no requiere que los desarrolladores administren la invalidacin de la memoria cach, actualizacin de datos o la administracin de los clsteres. Adicionalmente, DAX es nativamente compatible con las llamadas a la API de DynamoDB, por lo que los desarrolladores pueden incorporarlo fcilmente en aplicaciones preexistentes.


Por ejemplo, considere una tabla de transacciones de facturacin. Una sola factura puede contener miles de transacciones por cliente. Cmo garantizamos la unicidad y la capacidad de consultar y actualizar los detalles de la factura para clientes de alto volumen?


Una vez decidido el intervalo de sufijos, no hay manera fcil de distribuir an ms los datos porque las modificaciones de sufijo tambin requieren cambios en la aplicacin. Por lo tanto, considere qu tan caliente podra ser cada clave de particin (hot partition key) y agregue un sufijo aleatorio suficiente (con bfer) como para acomodar el crecimiento futuro anticipado.


Como se menciona en la documentacin de DynamoDB, una estrategia de escritura aleatorizado puede mejorar considerablemente el rendimiento. Pero es difcil leer un elemento especfico porque no se sabe qu valor de sufijo se us al escribir el elemento.


Para facilitar la lectura de elementos individuales, considere la posibilidad de particionar mediante sufijos calculados, como se explica en Uso del particionamiento de escritura para distribuir cargas de trabajo de forma uniforme en la Gua para desarrolladores de DynamoDB. Por ejemplo, supongamos que se est procesando un gran nmero de transacciones de factura pero el patrn de lectura es retornar un pequeo nmero de elementos para un CodigoFuente determinado por intervalo de fechas. En este caso, es ms eficaz distribuir los elementos entre un rango de particiones mediante un atributo determinado, en este caso CodigoFuente. Puede aplicar un algoritmo hash al CodigoFuente para coplementar la clave de particin en lugar de utilizar la estrategia de nmeros aleatorios. De esta manera, sabr qu particin consultar y recuperar los resultados de la tabla.


Al igual que con las tablas, se recomienda considerar un enfoque de particionamiento mediante sufijos para los ndices secundarios globales si est anticipando un escenario de clave de particin caliente (hot partition key) con un ndice secundario global.


Por ejemplo, considere el siguiente diseo de esquema de una tabla TransaccionesFacturas. Tiene una fila de encabezado para cada factura y contiene atributos como el importe total adeudado y pas de la transaccin (PaisTransaccion), que son nicos para cada factura. Suponiendo que necesitamos encontrar la lista de facturas emitidas para cada pas de transaccin, podemos crear un ndice secundario global con PaisTransaccion como la clave de particin. Sin embargo, este enfoque conduce a un escenario de escritura de clave de particin caliente, porque el nmero de facturas por pas se distribuye de forma desigual.


En el ejemplo anterior, es posible que desee identificar la lista de nmeros de factura asociados con los EE. UU. En este caso, puede emitir una consulta al ndice secundario global con ClaveParticion = (1-N) y PaisTransaccion = USA.


Utilizar secuencias o ID nicos generados por el motor de base de datos como clave de particin, especialmente cuando est migrando desde bases de datos relacionales. Es habitual usar secuencias (schema.sequence.NEXTVAL) como clave principal para requerir la unicidad en las tablas de Oracle. Las secuencias no se suelen utilizar para acceder a los datos.


A continuacin se muestra un diseo de esquema de ejemplo para una tabla de pedidos que se ha migrado de Oracle a DynamoDB. La clave de particin de la tabla principal (IdTransaccion) se est actualizando con un UID. Se crea un GSI con los atributos IdOrden y FechaOrden con fines de consulta.


El uso de atributos de baja cardinalidad como cdigo de producto como clave de particin y fecha de orden como clave de ordenacin aumenta en gran medida la probabilidad de problemas de particin caliente (hot partition). Por ejemplo, si un producto es ms popular, las lecturas y escrituras para esa clave son altas, lo que da lugar a problemas de limitacin de solicitudes (throttling).


A excepcin del comando scan, las operaciones de la API de DynamoDB requieren un operador igual (EQ) en la clave de particin para las tablas y las GSI. En consecuencia, la clave de particin debe ser algo que la aplicacin pueda consultar fcilmente con una bsqueda simple. Un ejemplo es el uso de key=value, que devuelve un elemento nico o pocos elementos. Hay un lmite de 1 MB en los elementos que se pueden retornar a travs de una sola operacin de consulta. Esto significa que debe paginar mediante el atributo LastEvaluatedKey si se excede este lmite, lo cual no es ptimo


Cuando se trata de estrategias de clave de particin de DynamoDB, ninguna solucin nica se adapta a todos los casos de uso. Debe evaluar varios enfoques en funcin de la ingesta de datos y el patrn de acceso y, a continuacin, elegir la clave ms adecuada con la menor probabilidad de llegar a problemas de limitacin de solicitudes (throttling). Junto con el mejor diseo de clave de particin, la capacidad adaptable de DynamoDB puede proteger su aplicacin de problemas de limitacin de solicitudes frente a un patrn de acceso a datos desigual.


Gowri Balasubramanian es arquitecto de soluciones snior en Amazon Web Services. Trabaja con los clientes de AWS para proporcionar orientacin y asistencia tcnica sobre NoSQL y servicios de bases de datos relacionales, ayudndoles a mejorar el valor de sus soluciones cuando utilizan AWS.

3a8082e126
Reply all
Reply to author
Forward
0 new messages