표준 테이블을 무한 테이블로 변환
표준 테이블을 샤딩된 테이블 또는 참조 테이블로 변환할 수 있습니다. 변환 중에 데이터가 표준 테이블에서 분산 테이블로 이동한 다음 소스 표준 테이블이 삭제됩니다. INSERT INTO SELECT FROM
명령으로 데이터가 이동합니다.
샤딩된 테이블 만들기
표준 테이블에서 rds_aurora.limitless_alter_table_type_sharded
프로시저를 실행하여 샤딩된 테이블을 만듭니다. 이 프로시저에서는 표준 테이블과 열 목록을 가져온 다음 열 목록을 샤드 키로 사용하여 지정된 테이블을 배포합니다. 프로시저는 동기식으로 실행되고 테이블에서 ACCESS EXCLUSIVE
잠금을 획득합니다.
프로시저가 성공적으로 완료되면 소스 표준 테이블이 삭제되고 이름이 같은 샤딩된 테이블을 사용할 수 있게 됩니다.
rds_aurora.limitless_alter_table_type_sharded
프로시저는 다음과 같은 구문을 사용합니다.
postgres=>
CALL rds_aurora.limitless_alter_table_type_sharded('schema
.table
', ARRAY['shard_key1
', 'shard_key2
', ... 'shard_keyn
']);
프로시저에는 다음과 같은 파라미터가 필요합니다.
-
schema
- 샤딩할 테이블이 포함된 데이터베이스 스키마입니다. 스키마가 지정되지 않은 경우 프로시저는search_path
를 사용합니다. -
table
- 샤딩할 테이블입니다. -
shard_keyn
- 샤드 키로 사용할 테이블 열의 배열입니다.샤드 키 값은 문자열 리터럴이므로 대/소문자를 구분합니다. 샤드 키에 작은따옴표(')가 포함된 경우 다른 작은따옴표를 사용하여 이스케이프 처리합니다. 예를 들어 테이블 열의 이름이
customer's id
인 경우customer''s id
를 샤드 키로 사용합니다. 백슬래시(\)와 큰따옴표(")는 이스케이프 처리할 필요가 없습니다.
참고
모든 프라이머리 키 및 고유 키에는 샤드 키가 포함되어야 합니다. 즉, 샤드 키는 프라이머리 키 또는 고유 키의 하위 집합입니다.
샤딩된 테이블에서 CHECK
제약은 표현식을 지원하지 않습니다.
자세한 내용은 제약 조건 단원을 참조하십시오.
샤딩된 테이블을 만드는 방법
다음 예시에서는 customer_id
샤드 키를 사용하여 customer
샤딩된 테이블을 만드는 방법을 보여줍니다.
-
표준 테이블을 만듭니다.
CREATE TABLE customer (customer_id INT PRIMARY KEY NOT NULL, zipcode INT, email VARCHAR);
-
표준 테이블을 샤딩된 테이블로 변환합니다.
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)
공동 배치된 테이블 만들기
두 개 이상의 테이블이 동일한 샤드 키를 사용하여 샤딩되는 경우 해당 테이블을 명시적으로 정렬(공동 배치)할 수 있습니다. 두 개 이상의 테이블이 공동 배치되면 동일한 샤드 키 값을 가진 테이블의 행이 동일한 샤드에 배치됩니다. 공동 배치는 일부 작업을 단일 샤드로 제한하여 성능을 개선하는 데 도움이 됩니다.
다음 구문과 함께 rds_aurora.limitless_alter_table_type_sharded
프로시저를 사용합니다.
postgres=>
CALL rds_aurora.limitless_alter_table_type_sharded('schema
.collocated_table
', ARRAY['shard_key1
', 'shard_key2
', ... 'shard_keyn
'], 'schema
.sharded_table
');
프로시저에는 다음과 같은 파라미터가 필요합니다.
-
schema
- 공동 배치할 테이블이 포함된 데이터베이스 스키마입니다. 스키마가 지정되지 않은 경우 프로시저는search_path
를 사용합니다. -
collocated_table
- 공동 배치할 테이블입니다. -
shard_keyn
- 샤드 키로 사용할 테이블 열의 배열입니다.동일한 열 이름 및 열 유형을 포함하여 원래 샤딩된 테이블과 동일한 샤드 키를 사용해야 합니다.
-
sharded_table
-collocated_table
을 공동 배치할 때 사용하는 샤딩된 테이블입니다.
공동 배치된 테이블을 만드는 방법
-
샤딩된 테이블 만들기의 프로시저에 따라 첫 번째 샤딩된 테이블을 만듭니다.
-
공동 배치된 테이블의 표준 테이블을 만듭니다.
CREATE TABLE mytable2 (customer_id INT PRIMARY KEY NOT NULL, column1 INT, column2 VARCHAR);
-
표준 테이블을 공동 배치된 테이블로 변환합니다.
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)
참조 테이블 만들기
표준 테이블에서 rds_aurora.limitless_alter_table_type_reference
프로시저를 실행하여 참조 테이블을 만듭니다. 이 프로시저는 지정된 테이블을 DB 샤드 그룹의 모든 샤드에 복제하고 테이블 유형을 참조로 변경합니다. 프로시저는 동기식으로 실행되고 테이블에서 ACCESS EXCLUSIVE
잠금을 획득합니다.
프로시저가 성공적으로 완료되면 소스 표준 테이블이 삭제되고 이름이 같은 참조 테이블을 사용할 수 있게 됩니다.
rds_aurora.limitless_alter_table_type_reference
프로시저는 다음과 같은 구문을 사용합니다.
postgres=>
CALL rds_aurora.limitless_alter_table_type_reference('schema
.table
');
저장 프로시저에는 다음 파라미터가 필요합니다.
-
schema
- 복제할 테이블이 포함된 데이터베이스 스키마입니다. 스키마가 지정되지 않은 경우 프로시저는search_path
를 사용합니다. -
table
- 복제할 테이블입니다.
참고
참조 테이블을 만들 때 사용하는 표준 테이블에는 프라이머리 키가 있어야 합니다.
참조 테이블에서 CHECK
제약은 표현식을 지원하지 않습니다.
이전 함수인 limitless_table_alter_type_reference
는 더 이상 사용되지 않습니다.
참조 테이블을 만드는 방법
다음 예시에서는 zipcodes
참조 테이블을 만드는 방법을 보여줍니다.
-
표준 테이블을 만듭니다.
CREATE TABLE zipcodes (zipcode INT PRIMARY KEY, details VARCHAR);
-
표준 테이블을 참조 테이블로 변환합니다.
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)출력에는
customer
샤딩된 테이블과zipcodes
참조 테이블이 표시됩니다.