

# 変数を使用した無制限テーブルの作成
<a name="limitless-creating-config"></a>

テーブル作成モードを設定すると、変数を使用してシャードテーブルとリファレンステーブルを作成できます。作成したテーブルは、別のモードを設定するまでこのモードを使用します。

次の変数を使用して、シャードテーブルとリファレンステーブルを作成します。
+ `rds_aurora.limitless_create_table_mode` – このセッション変数を `sharded` または `reference` に設定します。この変数のデフォルト値は `standard` です。
+ `rds_aurora.limitless_create_table_shard_key` – このセッション変数を、シャードキーとして使用する列名の配列に設定します。`rds_aurora.limitless_create_table_mode` が `sharded` でない場合、この変数は無視されます。

  配列列にリテラルを挿入する場合と同様に、値を `untyped array literal` としてフォーマットします。詳細については、PostgreSQL ドキュメントの「[Arrays](https://www.postgresql.org/docs/current/arrays.html)」を参照してください。
+ `rds_aurora.limitless_create_table_collocate_with` – このセッション変数を特定のテーブル名に設定して、新しく作成されたテーブルをそのテーブルとコロケーションします。

  同じシャードキーを使用して 2 つ以上のテーブルがシャードされている場合は、それらのテーブルを明示的に整列 (コロケーション) できます。2 つ以上のテーブルがコロケーションされると、同じシャードキー値を持つテーブルの行が同じシャードに配置されます。コロケーションは、一部のオペレーションを単一のシャードに制限するのに役立ちます。これにより、パフォーマンスが向上します。

**注記**  
すべてのプライマリキーと一意のキーには、シャードキーが含まれている必要があります。つまり、シャードキーはプライマリキーまたは一意のキーのサブセットです。  
無制限テーブルにはいくつかの制限があります。詳細については、「[Aurora PostgreSQL Limitless Database の DDL 制限とその他の情報](limitless-reference.DDL-limitations.md)」を参照してください。

**Topics**
+ [変数を使用した無制限テーブルの作成例](#limitless-tables-examples)
+ [Aurora PostgreSQL Limitless Database テーブルビュー](#limitless-table-views)

## 変数を使用した無制限テーブルの作成例
<a name="limitless-tables-examples"></a>

次の例は、これらの変数を使用してシャードテーブルとリファレンステーブルを作成する方法を示しています。

シャードキー `id` を使用して、`items` という名前のシャードテーブルを作成します。

```
BEGIN;
SET LOCAL rds_aurora.limitless_create_table_mode='sharded';
SET LOCAL rds_aurora.limitless_create_table_shard_key='{"id"}';
CREATE TABLE items(id int, val int, item text);
COMMIT;
```

`item_id` 列と `item_cat` 列で構成されるシャードキーを使用して、`items` という名前のシャードテーブルを作成します。

```
BEGIN;
SET LOCAL rds_aurora.limitless_create_table_mode='sharded';
SET LOCAL rds_aurora.limitless_create_table_shard_key='{"item_id", "item_cat"}';
CREATE TABLE items(item_id int, item_cat varchar, val int, item text);
COMMIT;
```

`item_id` 列と `item_cat` 列で構成されるシャードキーを使用して `item_description` という名前のシャードテーブルを作成し、前の例の `items` テーブルとコロケーションします。

```
BEGIN;
SET LOCAL rds_aurora.limitless_create_table_mode='sharded';
SET LOCAL rds_aurora.limitless_create_table_shard_key='{"item_id", "item_cat"}';
SET LOCAL rds_aurora.limitless_create_table_collocate_with='items';
CREATE TABLE item_description(item_id int, item_cat varchar, color_id int);
COMMIT;
```

`colors` という名前のリファレンステーブルを作成します。

```
BEGIN;
SET LOCAL rds_aurora.limitless_create_table_mode='reference';
CREATE TABLE colors(color_id int primary key, color varchar);
COMMIT;
```

`rds_aurora.limitless_create_table_mode` セッション変数を `standard` にリセットするには、次のステートメントを使用します。

```
RESET rds_aurora.limitless_create_table_mode;
```

この変数をリセットすると、テーブルはデフォルトである標準テーブルとして作成されます。標準テーブルの詳細については、「[標準テーブルから無制限テーブルへの変換](limitless-converting-standard.md)」を参照してください。

## Aurora PostgreSQL Limitless Database テーブルビュー
<a name="limitless-table-views"></a>

Limitless Database テーブルに関する情報は、次のビューを使用して確認できます。

**rds\_aurora.limitless\_tables**  
`rds_aurora.limitless_tables` ビューには、無制限テーブルとそのタイプに関する情報が含まれています。  

```
postgres_limitless=> SELECT * FROM rds_aurora.limitless_tables;

 table_gid | local_oid | schema_name | table_name  | table_status | table_type  | distribution_key
-----------+-----------+-------------+-------------+--------------+-------------+------------------
         5 |     18635 | public      | standard    | active       | standard    | 
         6 |     18641 | public      | ref         | active       | reference   | 
         7 |     18797 | public      | orders      | active       | sharded     | HASH (order_id)
         2 |     18579 | public      | customer    | active       | sharded     | HASH (cust_id)
(4 rows)
```

**rds\_aurora.limitless\_table\_collocations**  
`rds_aurora.limitless_table_collocations` ビューには、コロケーションされたシャードテーブルに関する情報が含まれています。例えば、`orders` テーブルと `customers` テーブルがコロケーションされており、同じ `collocation_id` を持ちます。`users` テーブルと `followers` テーブルがコロケーションされ、同じ `collocation_id` を持ちます。  

```
postgres_limitless=> SELECT * FROM rds_aurora.limitless_table_collocations ORDER BY collocation_id;

 collocation_id | schema_name | table_name
----------------+-------------+------------
          16002 | public      | orders
          16002 | public      | customers
          16005 | public      | users
          16005 | public      | followers
(4 rows)
```

**rds\_aurora.limitless\_table\_collocation\_distributions**  
`rds_aurora.limitless_table_collocation_distributions` は、各コロケーションのキー分散を示します。  

```
postgres_limitless=> SELECT * FROM rds_aurora.limitless_table_collocation_distributions ORDER BY collocation_id, lower_bound;

 collocation_id | subcluster_id |     lower_bound      |     upper_bound
----------------+---------------+----------------------+----------------------
          16002 |             6 | -9223372036854775808 | -4611686018427387904
          16002 |             5 | -4611686018427387904 |                    0
          16002 |             4 |                    0 |  4611686018427387904
          16002 |             3 |  4611686018427387904 |  9223372036854775807
          16005 |             6 | -9223372036854775808 | -4611686018427387904
          16005 |             5 | -4611686018427387904 |                    0
          16005 |             4 |                    0 |  4611686018427387904
          16005 |             3 |  4611686018427387904 |  9223372036854775807
(8 rows)
```