Konvertierung von Standardtabellen in unbegrenzt viele Tabellen - Amazon Aurora

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konvertierung von Standardtabellen in unbegrenzt viele Tabellen

Sie können Standardtabellen in Sharded- oder Referenztabellen konvertieren. Während der Konvertierung werden Daten aus der Standardtabelle in die verteilte Tabelle verschoben. Anschließend wird die Quellstandardtabelle gelöscht. Daten werden mit dem INSERT INTO SELECT FROM Befehl verschoben.

Sharded Tabellen erstellen

Sie erstellen Tabellen mit Sharding, indem Sie die rds_aurora.limitless_alter_table_type_sharded Prozedur für Standardtabellen ausführen. Diese Prozedur verwendet eine Standardtabelle und eine Liste von Spalten und verteilt dann die angegebene Tabelle, wobei die Spaltenliste als Shard-Schlüssel verwendet wird. Die Prozedur wird synchron ausgeführt und erwirbt eine ACCESS EXCLUSIVE Sperre für die Tabelle.

Nachdem die Prozedur erfolgreich abgeschlossen wurde, wird die Quellstandardtabelle gelöscht, und eine Shard-Tabelle mit demselben Namen wird verfügbar.

Die rds_aurora.limitless_alter_table_type_sharded Prozedur verwendet die folgende Syntax:

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

Die Prozedur erfordert die folgenden Parameter:

  • schema— Das Datenbankschema, das die Tabelle enthält, die geteilt werden soll. Wenn das Schema nicht angegeben ist, verwendet die Prozedur diesearch_path.

  • table— Die Tabelle, die geteilt werden soll.

  • shard_keyn— Ein Array von Tabellenspalten, die als Shard-Schlüssel verwendet werden sollen.

    Shard-Schlüsselwerte sind Zeichenkettenliterale und unterscheiden daher zwischen Groß- und Kleinschreibung. Wenn ein Shard-Schlüssel ein einfaches Anführungszeichen (') enthält, verwenden Sie ein anderes einfaches Anführungszeichen, um es zu umgehen. Wenn beispielsweise eine Tabellenspalte benannt istcustomer's id, verwenden Sie sie customer''s id als Shard-Schlüssel. Backslashes (\) und doppelte Anführungszeichen („) müssen nicht maskiert werden.

Anmerkung

Alle primären und eindeutigen Schlüssel müssen den Shard-Schlüssel enthalten. Das bedeutet, dass der Shard-Schlüssel eine Teilmenge des primären oder eindeutigen Schlüssels ist.

In Shard-Tabellen unterstützt die CHECK Einschränkung keine Ausdrücke.

Weitere Informationen finden Sie unter Beschränkungen.

Um eine Tabelle mit Sharding zu erstellen

Das folgende Beispiel zeigt, wie die Sharded-Tabelle mit dem customer Shard-Schlüssel erstellt wird. customer_id

  1. Erstellen Sie die Standardtabelle.

    CREATE TABLE customer (customer_id INT PRIMARY KEY NOT NULL, zipcode INT, email VARCHAR);
  2. Konvertiert die Standardtabelle in eine Shard-Tabelle.

    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)

Erstellen von zusammengestellten Tabellen

Wenn zwei oder mehr Tabellen mit demselben Shard-Schlüssel geteilt werden, können Sie diese Tabellen explizit anordnen (zusammenstellen). Wenn zwei oder mehr Tabellen zusammengelegt werden, werden Zeilen aus diesen Tabellen mit denselben Shard-Schlüsselwerten auf demselben Shard platziert. Die Kollokation hilft dabei, einige Operationen auf einen einzigen Shard zu beschränken, was zu einer besseren Leistung führt.

Sie verwenden das rds_aurora.limitless_alter_table_type_sharded Verfahren mit der folgenden Syntax:

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

Die Prozedur erfordert die folgenden Parameter:

  • schema— Das Datenbankschema, das die Tabellen enthält, die zusammengestellt werden sollen. Wenn das Schema nicht angegeben ist, verwendet die Prozedur diesearch_path.

  • collocated_table— Die Tabelle, die zusammengestellt werden soll.

  • shard_keyn— Ein Array von Tabellenspalten, die als Shard-Schlüssel verwendet werden sollen.

    Sie müssen denselben Shard-Schlüssel wie für die ursprüngliche Sharded-Tabelle verwenden, einschließlich derselben Spaltennamen und Spaltentypen.

  • sharded_table— Die Sharded-Tabelle, mit der Sie die zusammenstellen. collocated_table

Um eine zusammengestellte Tabelle zu erstellen
  1. Erstellen Sie die erste Sharding-Tabelle, indem Sie das Verfahren unter befolgen. Sharded Tabellen erstellen

  2. Erstellen Sie die Standardtabelle für die zusammengestellte Tabelle.

    CREATE TABLE mytable2 (customer_id INT PRIMARY KEY NOT NULL, column1 INT, column2 VARCHAR);
  3. Konvertiert die Standardtabelle in eine zusammengestellte Tabelle.

    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)

Referenztabellen erstellen

Sie erstellen Referenztabellen, indem Sie das rds_aurora.limitless_alter_table_type_reference Verfahren für Standardtabellen ausführen. Dieses Verfahren repliziert eine bestimmte Tabelle auf alle Shards in der DB-Shard-Gruppe und ändert den Tabellentyp in Referenz. Die Prozedur wird synchron ausgeführt und erwirbt eine ACCESS EXCLUSIVE Sperre für die Tabelle.

Nachdem die Prozedur erfolgreich abgeschlossen wurde, wird die Quellstandardtabelle gelöscht, und eine Referenztabelle mit demselben Namen wird verfügbar.

Die rds_aurora.limitless_alter_table_type_reference Prozedur verwendet die folgende Syntax:

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

Die gespeicherte Prozedur erfordert die folgenden Parameter:

  • schema— Das Datenbankschema, das die zu replizierende Tabelle enthält. Wenn das Schema nicht angegeben ist, verwendet die Prozedur diesearch_path.

  • table— Die Tabelle, die repliziert werden soll.

Anmerkung

Die Standardtabelle, aus der Sie die Referenztabelle erstellen, muss einen Primärschlüssel haben.

In Referenztabellen unterstützt die CHECK Einschränkung keine Ausdrücke.

Die vorherige Funktion,limitless_table_alter_type_reference, ist veraltet.

Um eine Referenztabelle zu erstellen

Das folgende Beispiel zeigt, wie die zipcodes Referenztabelle erstellt wird.

  1. Erstellen Sie die Standardtabelle.

    CREATE TABLE zipcodes (zipcode INT PRIMARY KEY, details VARCHAR);
  2. Konvertiert die Standardtabelle in eine Referenztabelle.

    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)

    Die Ausgabe zeigt die customer Sharded-Tabelle und die zipcodes Referenztabelle.