Conversione di tabelle standard in tabelle illimitate - Amazon Aurora

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Conversione di tabelle standard in tabelle illimitate

È possibile convertire le tabelle standard in tabelle frammentate o di riferimento. Durante la conversione, i dati vengono spostati dalla tabella standard alla tabella distribuita, quindi la tabella standard di origine viene eliminata. I dati vengono spostati utilizzando il INSERT INTO SELECT FROM comando.

Creazione di tabelle condivise

È possibile creare tabelle ripartite eseguendo la rds_aurora.limitless_alter_table_type_sharded procedura su tabelle standard. Questa procedura richiede una tabella standard e un elenco di colonne, quindi distribuisce la tabella data utilizzando l'elenco di colonne come chiave condivisa. La procedura viene eseguita in modo sincrono e acquisisce un ACCESS EXCLUSIVE blocco sulla tabella.

Al termine della procedura, la tabella standard di origine viene eliminata e diventa disponibile una tabella condivisa con lo stesso nome.

La rds_aurora.limitless_alter_table_type_sharded procedura utilizza la seguente sintassi:

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

La procedura richiede i seguenti parametri:

  • schema— Lo schema del database che contiene la tabella da condividere. Se lo schema non è specificato, la procedura utilizza ilsearch_path.

  • table— La tabella da dividere.

  • shard_keyn— Una matrice di colonne della tabella da utilizzare come chiave shard.

    I valori delle chiavi dello shard sono stringhe letterali e pertanto fanno distinzione tra maiuscole e minuscole. Se una chiave shard contiene una virgoletta singola ('), usa un'altra virgoletta singola per evitarla. Ad esempio, se viene denominata una colonna della tabellacustomer's id, usala customer''s id come chiave shard. Non è necessario che le barre rovesciate (\) e le virgolette doppie («) siano sfuggite.

Nota

Tutte le chiavi primarie e uniche devono includere la chiave shard. Ciò significa che la chiave shard è un sottoinsieme della chiave primaria o unica.

Nelle tabelle suddivise, il CHECK vincolo non supporta le espressioni.

Per ulteriori informazioni, consulta Vincoli.

Per creare una tabella condivisa

L'esempio seguente mostra come creare la tabella customer condivisa con la chiave shard. customer_id

  1. Create la tabella standard.

    CREATE TABLE customer (customer_id INT PRIMARY KEY NOT NULL, zipcode INT, email VARCHAR);
  2. Converte la tabella standard in una tabella condivisa.

    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)

Creazione di tabelle collocate

Se due o più tabelle vengono suddivise utilizzando la stessa chiave shard, è possibile allineare (collocare) in modo esplicito tali tabelle. Quando vengono collocate due o più tabelle, le righe di tali tabelle con gli stessi valori della chiave dello shard vengono posizionate sullo stesso frammento. La collocazione aiuta a limitare alcune operazioni a un singolo shard, il che si traduce in prestazioni migliori.

Si utilizza la rds_aurora.limitless_alter_table_type_sharded procedura con la seguente sintassi:

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

La procedura richiede i seguenti parametri:

  • schema— Lo schema del database che contiene le tabelle da collocare. Se lo schema non è specificato, la procedura utilizza ilsearch_path.

  • collocated_table— La tabella da collocare.

  • shard_keyn— Una matrice di colonne della tabella da usare come chiave shard.

    È necessario utilizzare la stessa chiave shard della tabella condivisa originale, inclusi gli stessi nomi di colonna e tipi di colonna.

  • sharded_table— La tabella condivisa con cui stai collocando il. collocated_table

Per creare una tabella collocata
  1. Creare la prima tabella condivisa seguendo la procedura riportata in. Creazione di tabelle condivise

  2. Crea la tabella standard per la tabella collocata.

    CREATE TABLE mytable2 (customer_id INT PRIMARY KEY NOT NULL, column1 INT, column2 VARCHAR);
  3. Converte la tabella standard in una tabella collocata.

    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)

Creazione di tabelle di riferimento

È possibile creare tabelle di riferimento eseguendo la rds_aurora.limitless_alter_table_type_reference procedura su tabelle standard. Questa procedura replica una determinata tabella in tutti gli shard del gruppo di shard DB e modifica il tipo di tabella in riferimento. La procedura viene eseguita in modo sincrono e acquisisce un ACCESS EXCLUSIVE blocco sulla tabella.

Al termine della procedura, la tabella standard di origine viene eliminata e diventa disponibile una tabella di riferimento con lo stesso nome.

La rds_aurora.limitless_alter_table_type_reference procedura utilizza la seguente sintassi:

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

La stored procedure richiede i seguenti parametri:

  • schema— Lo schema del database che contiene la tabella da replicare. Se lo schema non è specificato, la procedura utilizza ilsearch_path.

  • table— La tabella da replicare.

Nota

La tabella standard da cui si crea la tabella di riferimento deve avere una chiave primaria.

Nelle tabelle di riferimento, il CHECK vincolo non supporta le espressioni.

La funzione precedente,limitless_table_alter_type_reference, è obsoleta.

Per creare una tabella di riferimento

L'esempio seguente mostra come creare la tabella zipcodes di riferimento.

  1. Create la tabella standard.

    CREATE TABLE zipcodes (zipcode INT PRIMARY KEY, details VARCHAR);
  2. Converte la tabella standard in una tabella di riferimento.

    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)

    L'output mostra la tabella customer frammentata e la tabella zipcodes di riferimento.