Konvertieren von Standardtabellen in Limitless-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.

Konvertieren von Standardtabellen in Limitless-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 Quell-Standardtabelle gelöscht. Daten werden mit dem Befehl INSERT INTO SELECT FROM verschoben.

Erstellen von Sharded-Tabellen

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

Nachdem das Verfahren erfolgreich abgeschlossen wurde, wird die Quell-Standardtabelle gelöscht, und eine Shard-Tabelle mit demselben Namen wird verfügbar.

Das Verfahren rds_aurora.limitless_alter_table_type_sharded verwendet die folgende Syntax:

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

Das Verfahren erfordert die folgenden Parameter:

  • schema: Das Datenbankschema, das die Tabelle enthält, die „gesharded“ werden soll. Wenn das Schema nicht angegeben ist, verwendet das Verfahren den search_path.

  • table: Die Tabelle, die „gesharded“ werden soll.

  • shard_keyn: Eine Reihe 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 aufzuheben. Wenn beispielsweise eine Tabellenspalte customer's id genannt wird, verwenden Sie customer''s id als Shard-Schlüssel. Backslashes (\) und doppelte Anführungszeichen (") müssen nicht aufgehoben 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 Einschränkung CHECK keine Ausdrücke.

Weitere Informationen finden Sie unter Beschränkungen.

So erstellen Sie eine Sharded-Tabelle

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

  1. Erstellen Sie die Standardtabelle.

    CREATE TABLE customer (customer_id INT PRIMARY KEY NOT NULL, zipcode INT, email VARCHAR);
  2. Konvertieren Sie die Standardtabelle in eine Sharded-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 zusammengefassten Tabellen

Wenn zwei oder mehr Tabellen mit demselben Shard-Schlüssel „gesharded“ werden, können Sie diese Tabellen explizit einander zuordnen (zusammenfassen). Wenn zwei oder mehr Tabellen zusammengefasst werden, werden Zeilen aus diesen Tabellen mit denselben Shard-Schlüsselwerten auf demselben Shard platziert. Die Zusammenfassung hilft dabei, einige Operationen auf einen einzigen Shard zu beschränken, was zu einer besseren Leistung führt.

Sie verwenden das Verfahren rds_aurora.limitless_alter_table_type_sharded 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');

Das Verfahren erfordert die folgenden Parameter:

  • schema: Das Datenbankschema, das die zusammenzufassenden Tabellen enthält. Wenn das Schema nicht angegeben ist, verwendet das Verfahren den search_path.

  • collocated_table: Die Tabelle, die mit der anderen zusammengefasst werden soll.

  • shard_keyn: Eine Reihe 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 collocated_table zusammenfassen.

So erstellen Sie eine zusammengefasste Tabelle
  1. Erstellen Sie die erste Sharding-Tabelle, indem Sie das Verfahren in Erstellen von Sharded-Tabellen befolgen.

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

    CREATE TABLE mytable2 (customer_id INT PRIMARY KEY NOT NULL, column1 INT, column2 VARCHAR);
  3. Konvertieren Sie die Standardtabelle in eine zusammengefasste 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)

Erstellen von Referenztabellen

Sie erstellen Referenztabellen, indem Sie das Verfahren rds_aurora.limitless_alter_table_type_reference 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“. Das Verfahren wird synchron ausgeführt und erwirbt eine ACCESS EXCLUSIVE-Sperre für die Tabelle.

Nachdem das Verfahren erfolgreich abgeschlossen wurde, wird die Quell-Standardtabelle gelöscht, und eine Referenztabelle mit demselben Namen wird verfügbar.

Das Verfahren rds_aurora.limitless_alter_table_type_reference verwendet die folgende Syntax:

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

Das gespeicherte Verfahren erfordert die folgenden Parameter:

  • schema: Das Datenbankschema, das die Tabelle enthält, die repliziert werden soll. Wenn das Schema nicht angegeben ist, verwendet das Verfahren den search_path.

  • table: Die Tabelle, die repliziert werden soll.

Anmerkung

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

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

Die vorherige Funktion, limitless_table_alter_type_reference, ist veraltet.

So erstellen Sie eine Referenztabelle

Das folgende Beispiel zeigt, wie Sie die Referenztabelle zipcodes erstellen.

  1. Erstellen Sie die Standardtabelle.

    CREATE TABLE zipcodes (zipcode INT PRIMARY KEY, details VARCHAR);
  2. Konvertieren Sie 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 Sharded-Tabelle customer und die Referenztabelle zipcodes.