Conversión de tablas estándar en tablas ilimitadas - Amazon Aurora

Conversión de tablas estándar en tablas ilimitadas

Puede convertir tablas estándar en tablas particionadas o de referencia. Durante la conversión, los datos se trasladan de la tabla estándar a la tabla distribuida y, a continuación, se elimina la tabla estándar de origen. Los datos se trasladan con el comando INSERT INTO SELECT FROM.

Creación de tablas particionadas

Para crear tablas particionadas, ejecute el procedimiento rds_aurora.limitless_alter_table_type_sharded en tablas estándar. Este procedimiento toma una tabla estándar y una lista de columnas y, a continuación, distribuye la tabla en cuestión con la lista de columnas como clave de partición. El procedimiento se ejecuta de forma sincrónica y adquiere un bloqueo ACCESS EXCLUSIVE en la tabla.

Cuando el procedimiento finalice correctamente, se eliminará la tabla estándar de origen y aparecerá una tabla particionada con el mismo nombre.

El procedimiento rds_aurora.limitless_alter_table_type_sharded tiene la siguiente sintaxis:

postgres=> CALL rds_aurora.limitless_alter_table_type_sharded('schema.table', ARRAY['shard_key1', 'shard_key2', ... 'shard_keyn']);

El procedimiento requiere los siguientes parámetros:

  • schema: es el esquema de la base de datos que contiene la tabla que se va a particionar. Si no se especifica el esquema, el procedimiento utiliza la search_path.

  • table: es la tabla que se va a particionar.

  • shard_keyn: es una matriz de columnas de tabla que se usa como clave de partición.

    Los valores clave de la partición son literales de cadena y, por lo tanto, distinguen mayúsculas de minúsculas. Si una clave de partición contiene una comilla simple ('), utilice otra comilla simple para evitarla. Por ejemplo, si una columna de la tabla se llama customer's id, utilice customer''s id como clave de partición. No es necesario que las barras invertidas (\) y las comillas dobles (“) estén ocultas.

nota

Todas las claves principales y únicas deben incluir la clave de partición. Esto significa que la clave de partición es un subconjunto de la clave principal o única.

En las tablas particionadas, la restricción CHECK no admite expresiones.

Para obtener más información, consulte Restricciones.

Creación de una tabla particionada

El siguiente ejemplo muestra cómo crear la tabla particionada customer con la clave de partición customer_id.

  1. Cree la tabla estándar.

    CREATE TABLE customer (customer_id INT PRIMARY KEY NOT NULL, zipcode INT, email VARCHAR);
  2. Convierta la tabla estándar en una tabla particionada.

    postgres=> CALL rds_aurora.limitless_alter_table_type_sharded('public.customer', ARRAY['customer_id']); postgres=> \d List of relations Schema | Name | Type | Owner --------+--------------+-------------------+-------------------- public | customer | partitioned table | postgres_limitless public | customer_fs1 | foreign table | postgres_limitless public | customer_fs2 | foreign table | postgres_limitless public | customer_fs3 | foreign table | postgres_limitless public | customer_fs4 | foreign table | postgres_limitless public | customer_fs5 | foreign table | postgres_limitless (6 rows)

Creación de tablas colocadas

Si dos o más tablas están particionadas con la misma clave de partición, puede alinear (colocar) esas tablas de forma explícita. Cuando se colocan dos o más tablas, las filas de esas tablas que tengan los mismos valores de clave de partición se colocarán en la misma partición. La colocación ayuda a restringir algunas operaciones a una sola partición, lo que se traduce en un mejor rendimiento.

El procedimiento rds_aurora.limitless_alter_table_type_sharded tiene la siguiente sintaxis:

postgres=> CALL rds_aurora.limitless_alter_table_type_sharded('schema.collocated_table', ARRAY['shard_key1', 'shard_key2', ... 'shard_keyn'], 'schema.sharded_table');

El procedimiento requiere los siguientes parámetros:

  • schema: es el esquema de la base de datos que contiene las tablas que se van a colocar. Si no se especifica el esquema, el procedimiento utiliza la search_path.

  • collocated_table: es la tabla que se va a colocar.

  • shard_keyn: es una matriz de columnas de tabla que se usa como clave de partición.

    Debe utilizar la misma clave de partición que para la tabla particionada original, incluidos los mismos nombres y tipos de columna.

  • sharded_table: es la tabla particionada con la que va a colocar la collocated_table.

Creación de una tabla colocada
  1. Cree la primera tabla particionada siguiendo el procedimiento descrito en Creación de tablas particionadas.

  2. Cree la tabla estándar para la tabla colocada.

    CREATE TABLE mytable2 (customer_id INT PRIMARY KEY NOT NULL, column1 INT, column2 VARCHAR);
  3. Convierta la tabla estándar en una tabla colocada.

    postgres=> CALL rds_aurora.limitless_alter_table_type_sharded('public.mytable2', ARRAY['customer_id'], 'public.customer'); postgres=> \d List of relations Schema | Name | Type | Owner --------+--------------+-------------------+-------------------- public | customer | partitioned table | postgres_limitless public | customer_fs1 | foreign table | postgres_limitless public | customer_fs2 | foreign table | postgres_limitless public | customer_fs3 | foreign table | postgres_limitless public | customer_fs4 | foreign table | postgres_limitless public | customer_fs5 | foreign table | postgres_limitless public | mytable2 | partitioned table | postgres_limitless public | mytable2_fs1 | foreign table | postgres_limitless public | mytable2_fs2 | foreign table | postgres_limitless public | mytable2_fs3 | foreign table | postgres_limitless public | mytable2_fs4 | foreign table | postgres_limitless public | mytable2_fs5 | foreign table | postgres_limitless (12 rows)

Creación de tablas de referencia

Para crear tablas de referencia, ejecute el procedimiento rds_aurora.limitless_alter_table_type_reference en tablas estándar. Este procedimiento replica una tabla determinada en todas las particiones del grupo de particiones de base de datos y cambia el tipo de tabla por el de referencia. El procedimiento se ejecuta de forma sincrónica y adquiere un bloqueo ACCESS EXCLUSIVE en la tabla.

Cuando el procedimiento finalice correctamente, se eliminará la tabla estándar de origen y aparecerá una tabla de referencia con el mismo nombre.

El procedimiento rds_aurora.limitless_alter_table_type_reference tiene la siguiente sintaxis:

postgres=> CALL rds_aurora.limitless_alter_table_type_reference('schema.table');

El procedimiento almacenado requiere los siguientes parámetros:

  • schema: es el esquema de la base de datos que contiene la tabla que se va a replicar. Si no se especifica el esquema, el procedimiento utiliza la search_path.

  • table: es la tabla que se va a replicar.

nota

La tabla estándar a partir de la que se crea la tabla de referencia debe contar con una clave principal.

En las tablas de referencia, la restricción CHECK no admite expresiones.

La función anterior, limitless_table_alter_type_reference, ha quedado obsoleta.

Creación de una tabla de referencia

En el siguiente ejemplo se muestra cómo crear la tabla de referencia zipcodes.

  1. Cree la tabla estándar.

    CREATE TABLE zipcodes (zipcode INT PRIMARY KEY, details VARCHAR);
  2. Convierta la tabla estándar en una tabla de referencia.

    CALL rds_aurora.limitless_alter_table_type_reference('public.zipcodes'); postgres=> \d List of relations Schema | Name | Type | Owner --------+--------------+-------------------+-------------------- public | customer | partitioned table | postgres_limitless public | customer_fs1 | foreign table | postgres_limitless public | customer_fs2 | foreign table | postgres_limitless public | customer_fs3 | foreign table | postgres_limitless public | customer_fs4 | foreign table | postgres_limitless public | customer_fs5 | foreign table | postgres_limitless public | zipcodes | foreign table | postgres_limitless (7 rows)

    El resultado muestra la tabla particionada customer y la tabla de referencia zipcodes.