이 페이지에서는 Spanner에서 데이터 배치를 만들고 관리하는 방법을 설명합니다.
지역 파티셔닝 작동 방식에 대한 자세한 내용은 지역 파티셔닝 개요를 참조하세요.
데이터 배치 만들기
Spanner 인스턴스 파티션과 데이터베이스를 만든 후 배치를 만듭니다.
콘솔
Google Cloud 콘솔에서 인스턴스 페이지로 이동합니다.
사용자가 만든 인스턴스 파티션이 있는 인스턴스를 선택합니다.
데이터를 파티셔닝할 데이터베이스를 선택합니다.
탐색 메뉴에서 Spanner 스튜디오를 클릭합니다.
Spanner 스튜디오 페이지에서
새 탭을 클릭하거나 비어 있는 편집기 탭을 사용합니다.CREATE PLACEMENT
(GoogleSQL, PostgreSQL) DDL 문을 입력합니다.예를 들어 다음을 실행하여
europe-partition
인스턴스 파티션에europeplacement
배치 테이블을 만들 수 있습니다.GoogleSQL
CREATE PLACEMENT europeplacement OPTIONS (instance_partition="europe-partition");
PostgreSQL
CREATE PLACEMENT europeplacement WITH (instance_partition='europe-partition');
선택사항: 객체 탐색기 창을 사용하여 배치 객체를 보고 검색하며 상호작용할 수도 있습니다. 자세한 내용은 데이터 탐색을 참조하세요.
실행을 클릭합니다.
gcloud
gcloud CLI 명령어로 배치를 만들려면 gcloud spanner databases ddl update
를 사용합니다.
예를 들어 europe-partition
인스턴스 파티션에 배치를 만듭니다.
GoogleSQL
gcloud spanner databases ddl update example-db \
--instance=test-instance \
--ddl="CREATE PLACEMENT europeplacement OPTIONS (instance_partition='europe-partition')"
PostgreSQL
gcloud spanner databases ddl update example-db \
--instance=test-instance \
--ddl="CREATE PLACEMENT europeplacement WITH (instance_partition='europe-partition')"
배치 기본 리더 설정
배치 위치가 이중 리전이나 멀티 리전에 있으면 배치 기본 리더 리전을 설정할 수 있습니다. 새 리더 리전은 이중 리전 또는 멀티 리전 배치 위치에 있는 읽기-쓰기 리전 두 개 중 하나여야 합니다. 자세한 내용은 이중 리전에서 사용 가능한 구성 및 멀티 리전에서 사용 가능한 구성 표를 참조하세요.
리더 리전을 설정하지 않으면 배치는 위치에 지정된 기본 리더 리전을 사용합니다. 각 이중 리전 또는 멀티 리전 위치의 리더 리전 목록은 이중 리전에서 사용 가능한 구성 및 멀티 리전에서 사용 가능한 구성 표를 참조하세요. 기본 리더 리전은 L로 표시됩니다. 예를 들어 nam8
의 기본 리더 리전은 로스앤젤레스(us-west2
)에 있습니다. 다음 안내에서는 이를 오리건(us-west1
)으로 설정하는 방법을 설명합니다.
콘솔
Google Cloud 콘솔에서 인스턴스 페이지로 이동합니다.
사용자가 만든 인스턴스 파티션이 있는 인스턴스를 선택합니다.
데이터를 파티셔닝할 데이터베이스를 선택합니다.
탐색 메뉴에서 Spanner 스튜디오를 클릭합니다.
Spanner 스튜디오 페이지에서
새 탭을 클릭하거나 비어 있는 편집기 탭을 사용합니다.CREATE PLACEMENT
(GoogleSQL, PostgreSQL) DDL 문을 입력합니다.예를 들어 다음을 실행하여
nam8-partition
인스턴스 파티션에 기본 리더 위치가us-west1
로 설정된nam8placement
배치 테이블을 만들 수 있습니다.GoogleSQL
CREATE PLACEMENT `nam8placement` OPTIONS (instance_partition="nam8-partition", default_leader="us-west1");
PostgreSQL
CREATE PLACEMENT nam8placement WITH (instance_partition='nam8-partition', default_leader='us-west1');
선택사항: 객체 탐색기 창을 사용하여 배치 객체를 보고 검색하며 상호작용할 수도 있습니다. 자세한 내용은 데이터 탐색을 참조하세요.
실행을 클릭합니다.
gcloud
gcloud CLI 명령어로 배치를 만들려면 gcloud spanner databases ddl update
를 사용합니다.
예를 들어 nam8-partition
인스턴스 파티션에 기본 리더 위치를 us-west1
로 설정한 nam8placement
배치 테이블을 만듭니다.
GoogleSQL
gcloud spanner databases ddl update example-db \
--instance=test-instance \
--ddl="CREATE PLACEMENT nam8placement \
OPTIONS (instance_partition='nam8-partition', default_leader='us-west1')"
PostgreSQL
gcloud spanner databases ddl update example-db \
--instance=test-instance \
--ddl="CREATE PLACEMENT nam8placement WITH (instance_partition='nam8-partition', default_leader='us-west1')"
데이터 배치 삭제
배치를 삭제하기 전에 배치에서 모든 행 데이터를 삭제해야 합니다. 이렇게 한 후 Google Cloud 콘솔 또는 gcloud CLI를 사용하여 배치를 삭제할 수 있습니다.
콘솔
- 탐색 메뉴에서 Spanner 스튜디오를 클릭합니다.
- Spanner 스튜디오 페이지에서 새 탭을 클릭하거나 비어 있는 편집기 탭을 사용합니다.
DROP PLACEMENT
(GoogleSQL, PostgreSQL) DDL 문을 입력합니다.예를 들어 다음을 실행하여 배치 테이블
europeplacement
를 삭제할 수 있습니다.GoogleSQL
DROP PLACEMENT europeplacement;
PostgreSQL
DROP PLACEMENT europeplacement;
gcloud
gcloud CLI 명령어로 배치를 삭제하려면 gcloud spanner databases ddl update
를 사용합니다.
예를 들어 europeplacement
배치를 삭제합니다.
gcloud spanner databases ddl update example-db \
--instance=test-instance \
--ddl="DROP PLACEMENT europeplacement"
게재위치 삭제 오류
배치가 사용 중인 경우 DROP PLACEMENT
작업이 실패하고 다음과 같은 오류 메시지가 표시됩니다. '문이 실패했습니다. 배치 PLACEMENT_NAME이(가) 배치 테이블 PLACEMENT_TABLE_NAME에 의해 사용 중이므로 삭제할 수 없습니다.' 이 오류가 발생하면 다음 단계를 따르세요.
- 삭제하려는 게재위치가 있는 행을 삽입하거나 업데이트하지 않도록 애플리케이션을 수정합니다.
다음 중 하나를 수행합니다.
삭제하려는 배치를 사용하는 기존 배치 행을 다음과 같은 파티션을 나눈 DML 문을 사용하여 다른 배치로 이동합니다.
UPDATE PLACEMENT_TABLE_NAME SET LOCATION = NEW_PLACEMENT_NAME WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;
다음과 같은 Partitioned DML 문을 사용하여 배치 행을 삭제합니다.
DELETE FROM PLACEMENT_TABLE_NAME WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;
이전 배치별 DML 문은 Partitioned DML에서만 작동합니다. 일반 DML 문으로 실패합니다. 자세한 내용은 제한사항을 참조하세요. 변이 API를 사용하여 게재위치 행을 이동하거나 삭제할 수도 있습니다.
DROP PLACEMENT
작업 취소
장기 실행 작업이 데이터베이스 스키마에서 게재위치를 완전히 삭제하기 전에는 언제든지 DROP PLACEMENT
작업을 취소할 수 있습니다. 상태를 확인하거나 작업을 취소하기 위해 장기 실행 작업 ID를 가져오는 방법에 관한 자세한 내용은 장기 실행 작업 관리 및 관찰을 참고하세요.
배치 키가 있는 테이블 만들기
콘솔
- 탐색 메뉴에서 Spanner 스튜디오를 클릭합니다.
- Spanner 스튜디오 페이지에서 새 탭을 클릭하거나 비어 있는 편집기 탭을 사용합니다.
CREATE TABLE
(GoogleSQL, PostgreSQL) DDL 문을 입력합니다.예를 들어 배치 키를 사용하여 가수 데이터를 파티셔닝하는
Singers
테이블을 만들 수 있습니다.GoogleSQL
CREATE TABLE Singers ( SingerId INT64 NOT NULL, SingerName STRING(MAX) NOT NULL, ... Location STRING(MAX) NOT NULL PLACEMENT KEY ) PRIMARY KEY (SingerId);
PostgreSQL
CREATE TABLE Singers ( SingerId bigint PRIMARY KEY, SingerName varchar(1024), ... Location varchar(1024) NOT NULL PLACEMENT KEY );
gcloud
테이블을 만들려면 gcloud spanner databases ddl update
를 사용합니다.
예를 들어 배치 키를 사용하여 가수 데이터를 파티셔닝하는 Singers
테이블을 만들 수 있습니다.
GoogleSQL
gcloud spanner databases ddl update example-db \
--instance=test-instance \
--ddl="CREATE TABLE Singers ( SingerId INT64 NOT NULL, SingerName STRING(MAX) NOT NULL, Location STRING(MAX) NOT NULL PLACEMENT KEY ) PRIMARY KEY (SingerId);"
PostgreSQL
gcloud spanner databases ddl update example-db \
--instance=test-instance \
--ddl="CREATE TABLE Singers ( SingerId bigint PRIMARY KEY, SingerName varchar(1024), Location varchar(1024) NOT NULL PLACEMENT KEY );"
배치 키가 있는 테이블 수정
테이블에서 배치 키를 삭제할 수 없습니다. 또한 테이블이 생성된 후에는 배치 키를 테이블에 추가할 수 없습니다. 하지만 ALTER TABLE
(GoogleSQL, PostgreSQL) DDL 문을 사용하여 테이블의 다른 필드를 변경할 수 있습니다(예: 배치가 아닌 키 열 추가 및 삭제).
배치 키가 있는 테이블 삭제
배치 키가 있는 테이블을 삭제하려면 먼저 다음을 실행해야 합니다.
- 배치 테이블의 모든 행을 삭제합니다.
- 데이터베이스의
version_retention_period
가 통과할 때까지 기다립니다. 자세한 내용은 PITR(point-in-time recovery)을 참조하세요. 그런 후 다음 단계를 수행합니다.
콘솔
- 탐색 메뉴에서 Spanner 스튜디오를 클릭합니다.
- Spanner 스튜디오 페이지에서 새 탭을 클릭하거나 비어 있는 편집기 탭을 사용합니다.
DROP TABLE
(GoogleSQL, PostgreSQL) DDL 문을 입력합니다.예를 들어
Singers
테이블을 삭제합니다.DROP TABLE Singers;
gcloud
테이블을 삭제하려면 gcloud spanner databases ddl update
를 사용합니다.
예를 들어 Singers
테이블을 삭제합니다.
gcloud spanner databases ddl update example-db \
--instance=test-instance \
--ddl="DROP TABLE Singers"
배치 테이블에 행 삽입
콘솔
- 탐색 메뉴에서 Spanner 스튜디오를 클릭합니다.
- Spanner 스튜디오 페이지에서 새 탭을 클릭하거나 비어 있는 편집기 탭을 사용합니다.
INSERT INTO
(GoogleSQL, PostgreSQL) DDL 문을 입력합니다.예를 들어 가수 마크 리차드스를
Singers
테이블에 추가하고europeplacement
에서 파티셔닝합니다.INSERT INTO Singers(SingerId, SingerName, Location) VALUES (1, 'Marc Richards', 'europeplacement')
gcloud
테이블에 데이터를 쓰려면 gcloud spanner rows insert
를 사용합니다.
예를 들어 가수 마크 리차드스를 Singers
테이블에 추가하고 europeplacement
에서 파티셔닝합니다.
gcloud spanner rows insert --table=Singers --database=example-db \
--instance=test-instance --data=SingerId=1,SingerName='Marc Richards',Location='europeplacement'
배치 테이블의 행 업데이트
콘솔
gcloud
배치 테이블의 데이터를 업데이트하려면 gcloud spanner rows update
를 사용합니다.
예를 들어 Singers
테이블의 singerid=1
이름을 Catalina Smith
로 업데이트합니다.
gcloud spanner rows update --table=Singers --database=example-db \
--instance=test-instance --data=SingerId=1,SingerName='Catalina Smith'
배치 테이블에서 행 이동
콘솔
gcloud
데이터를 이동할 인스턴스 파티션과 배치를 만든 후 gcloud spanner rows update
를 사용합니다.
예를 들어 Singers
테이블의 singerid=1
을 asiaplacement
로 이동합니다.
gcloud spanner rows update --table=Singers --database=example-db \
--instance=test-instance --data=SingerId=1,Location='asiaplacement'
배치 테이블에서 행 삭제
콘솔
gcloud
데이터를 삭제하려면 gcloud spanner rows delete
를 사용합니다.
예를 들어 Singers
테이블에서 singerid=1
을 삭제합니다.
gcloud spanner rows delete --table=Singers --database=example-db \
--instance=test-instance --keys=1
배치 테이블의 데이터 쿼리
콘솔
- 탐색 메뉴에서 Spanner 스튜디오를 클릭합니다.
- Spanner 스튜디오 페이지에서 새 탭을 클릭하거나 비어 있는 편집기 탭을 사용합니다.
쿼리를 실행합니다.
예를 들어
Singers
테이블을 쿼리합니다.SELECT * FROM Singers s WHERE s.SingerId=1;
gcloud
데이터를 쿼리하려면 gcloud spanner databases execute-sql
을 사용합니다.
예를 들어 Singers
테이블을 쿼리합니다.
gcloud spanner databases execute-sql example-db \
--instance=test-instance \
--sql='SELECT * FROM Singers s WHERE s.SingerId=1'
다음 단계
지역 파티셔닝 자세히 알아보기
인스턴스 파티션 만들기 및 관리 방법 알아보기