

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mengonversi tabel standar ke tabel tanpa batas
<a name="limitless-converting-standard"></a>

Anda dapat mengonversi tabel standar menjadi tabel sharded atau referensi. Selama konversi, data dipindahkan dari tabel standar ke tabel terdistribusi, kemudian tabel standar sumber dihapus. Data dipindahkan menggunakan `INSERT INTO SELECT FROM` perintah.

**Contents**
+ [Membuat tabel sharded](#limitless-creating-sharded)
+ [Membuat tabel kolokasi](#limitless-creating-sharded.colocated)
+ [Membuat tabel referensi](#limitless-creating-reference)

## Membuat tabel sharded
<a name="limitless-creating-sharded"></a>

Anda membuat tabel sharded dengan menjalankan `rds_aurora.limitless_alter_table_type_sharded` prosedur pada tabel standar. Prosedur ini mengambil tabel standar dan daftar kolom, kemudian mendistribusikan tabel yang diberikan menggunakan daftar kolom sebagai kunci pecahan. Prosedur berjalan secara serempak, dan memperoleh `ACCESS EXCLUSIVE` kunci di atas meja.

Setelah prosedur selesai dengan sukses, tabel standar sumber dihapus, dan tabel sharded dengan nama yang sama menjadi tersedia.

`rds_aurora.limitless_alter_table_type_sharded`Prosedur ini menggunakan sintaks berikut:

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

Prosedur ini membutuhkan parameter berikut:
+ `schema`— Skema database yang berisi tabel yang akan di-sharded. Jika skema tidak ditentukan, prosedur menggunakan. `search_path`
+ `table`— Meja yang akan dibelah.
+ `shard_keyn`— Sebuah array kolom tabel untuk digunakan sebagai kunci shard.

  Nilai kunci shard adalah literal string, dan oleh karena itu peka huruf besar/kecil. Jika kunci pecahan berisi satu kutipan ('), gunakan kutipan tunggal lain untuk menghindarinya. Misalnya, jika kolom tabel diberi nama`customer's id`, gunakan `customer''s id` sebagai kunci shard. Backslashes (\\) dan tanda kutip ganda (“) tidak perlu diloloskan.

**catatan**  
Semua kunci primer dan unik harus menyertakan kunci shard. Ini berarti bahwa kunci shard adalah bagian dari kunci primer atau unik.  
Dalam tabel sharded, `CHECK` kendala tidak mendukung ekspresi.  
Untuk informasi selengkapnya, lihat [Batasan](limitless-reference.DDL-limitations.md#limitless-reference.DDL-limitations.Constraints).

**Untuk membuat tabel sharded**

Contoh berikut menunjukkan cara membuat tabel `customer` sharded dengan kunci shard. `customer_id`

1. Buat tabel standar.

   ```
   CREATE TABLE customer (customer_id INT PRIMARY KEY NOT NULL, zipcode INT, email VARCHAR);
   ```

1. Ubah tabel standar menjadi tabel sharded.

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

## Membuat tabel kolokasi
<a name="limitless-creating-sharded.colocated"></a>

Jika dua atau lebih tabel di-sharded menggunakan kunci shard yang sama, Anda dapat secara eksplisit menyelaraskan (collocate) tabel tersebut. Ketika dua atau lebih tabel ditempatkan, baris dari tabel dengan nilai kunci shard yang sama ditempatkan pada pecahan yang sama. Kolokasi membantu membatasi beberapa operasi ke pecahan tunggal, yang menghasilkan kinerja yang lebih baik.

Anda menggunakan `rds_aurora.limitless_alter_table_type_sharded` prosedur dengan sintaks berikut:

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

Prosedur ini membutuhkan parameter berikut:
+ `schema`— Skema database yang berisi tabel yang akan ditempatkan. Jika skema tidak ditentukan, prosedur menggunakan. `search_path`
+ `collocated_table`— Meja yang akan ditempatkan.
+ `shard_keyn`— Sebuah array kolom tabel untuk digunakan sebagai kunci shard.

  Anda harus menggunakan kunci shard yang sama seperti untuk tabel sharded asli, termasuk nama kolom dan jenis kolom yang sama.
+ `sharded_table`— Meja sharded yang Anda gunakan untuk mengkolokasi. `collocated_table`

**Untuk membuat tabel berkolokasi**

1. Buat tabel sharded pertama dengan mengikuti prosedur di[Membuat tabel sharded](#limitless-creating-sharded).

1. Buat tabel standar untuk tabel collocated.

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

1. Ubah tabel standar menjadi tabel collocated.

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

## Membuat tabel referensi
<a name="limitless-creating-reference"></a>

Anda membuat tabel referensi dengan menjalankan `rds_aurora.limitless_alter_table_type_reference` prosedur pada tabel standar. Prosedur ini mereplikasi tabel yang diberikan ke semua pecahan dalam grup pecahan DB, dan mengubah jenis tabel menjadi referensi. Prosedur berjalan secara serempak, dan memperoleh `ACCESS EXCLUSIVE` kunci di atas meja.

Setelah prosedur selesai dengan sukses, tabel standar sumber dihapus, dan tabel referensi dengan nama yang sama tersedia.

`rds_aurora.limitless_alter_table_type_reference`Prosedur ini menggunakan sintaks berikut:

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

Prosedur yang disimpan membutuhkan parameter berikut:
+ `schema`— Skema database yang berisi tabel yang akan direplikasi. Jika skema tidak ditentukan, prosedur menggunakan. `search_path`
+ `table`— Tabel yang akan direplikasi.

**catatan**  
Tabel standar dari mana Anda membuat tabel referensi harus memiliki kunci utama.  
Dalam tabel referensi, `CHECK` kendala tidak mendukung ekspresi.  
Fungsi sebelumnya,`limitless_table_alter_type_reference`, sudah usang.

**Untuk membuat tabel referensi**

Contoh berikut menunjukkan cara membuat tabel `zipcodes` referensi.

1. Buat tabel standar.

   ```
   CREATE TABLE zipcodes (zipcode INT PRIMARY KEY, details VARCHAR);
   ```

1. Ubah tabel standar menjadi tabel referensi.

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

   Output menunjukkan tabel `customer` sharded dan tabel `zipcodes` referensi.