

# 변수를 사용하여 무한 테이블 만들기
<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` - 이 세션 변수를 특정 테이블 이름으로 설정하여 새로 만든 테이블을 해당 테이블과 공동 배치합니다.

  두 개 이상의 테이블이 동일한 샤드 키를 사용하여 샤딩되는 경우 해당 테이블을 명시적으로 정렬(공동 배치)할 수 있습니다. 두 개 이상의 테이블이 공동 배치되면 동일한 샤드 키 값을 가진 테이블의 행이 동일한 샤드에 배치됩니다. 공동 배치는 일부 작업을 단일 샤드로 제한하여 성능을 개선하는 데 도움이 됩니다.

**참고**  
모든 프라이머리 키 및 고유 키에는 샤드 키가 포함되어야 합니다. 즉, 샤드 키는 프라이머리 키 또는 고유 키의 하위 집합입니다.  
무한 테이블에는 몇 가지 제한 사항이 있습니다. 자세한 내용은 [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\$1aurora.limitless\$1tables**  
`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\$1aurora.limitless\$1table\$1collocations**  
`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\$1aurora.limitless\$1table\$1collocation\$1distributions**  
`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)
```