

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
<a name="limitless-converting-standard"></a>

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.

**Contents**
+ [Erstellen von Sharded-Tabellen](#limitless-creating-sharded)
+ [Erstellen von zusammengefassten Tabellen](#limitless-creating-sharded.colocated)
+ [Erstellen von Referenztabellen](#limitless-creating-reference)

## Erstellen von Sharded-Tabellen
<a name="limitless-creating-sharded"></a>

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 (\$1) 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](limitless-reference.DDL-limitations.md#limitless-reference.DDL-limitations.Constraints).

**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);
   ```

1. 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
<a name="limitless-creating-sharded.colocated"></a>

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](#limitless-creating-sharded) befolgen.

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

   ```
   CREATE TABLE mytable2 (customer_id INT PRIMARY KEY NOT NULL, column1 INT, column2 VARCHAR);
   ```

1. 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
<a name="limitless-creating-reference"></a>

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);
   ```

1. 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`.