이 페이지에서는 Spanner 데이터베이스를 만들고 관리하는 방법을 설명합니다.
- 데이터베이스를 만드는 다양한 방법
- 데이터베이스 옵션 수정
- 데이터베이스 삭제
이 페이지에는 GoogleSQL 언어 데이터베이스와 PostgreSQL 언어 데이터베이스에 대한 정보가 모두 있습니다. 데이터베이스 스키마를 업데이트하는 방법을 알아보려면 스키마 업데이트를 참고하세요. 인스턴스 만들기에 대한 자세한 내용은 인스턴스 만들기 및 관리를 참고하세요. 다음 방법으로 기존 인스턴스에서 데이터베이스를 만들 수 있습니다.
- 데이터베이스 만들기: SQL 언어를 선택하고 스키마를 정의하여 새 데이터베이스를 만들 수 있습니다.
- 자체 데이터 가져오기: CSV, MySQL 덤프 또는 PostgreSQL 덤프 파일을 신규 또는 기존 데이터베이스로 가져올 수 있습니다.
- 샘플 데이터로 데이터베이스 만들기: 사용 가능한 샘플 데이터 세트 중 하나를 사용하여 데이터베이스를 채워 Spanner의 기능을 사용해 볼 수 있습니다.
데이터베이스 만들기
기존 인스턴스에 새 데이터베이스를 만들 수 있습니다. GoogleSQL 언어 데이터베이스의 경우 데이터베이스를 만들 때 또는 데이터베이스를 만든 후에 데이터베이스 스키마를 정의할 수 있습니다. PostgreSQL 언어 데이터베이스의 경우 만든 후에 스키마를 정의해야 합니다.
스키마는 GoogleSQL 및 PostgreSQL에 문서화된 데이터베이스 정의 언어를 통해 정의됩니다. 스키마 생성 및 업데이트에 대한 자세한 내용은 다음 링크를 참조하세요.
데이터베이스를 만든 후 데이터베이스 삭제 보호를 사용 설정하여 애플리케이션과 서비스에 중요한 데이터베이스를 보호할 수 있습니다. 자세한 내용은 실수로 인한 데이터베이스 삭제 방지를 참조하세요.
Google Cloud 콘솔
Google Cloud 콘솔에서 Spanner 인스턴스 페이지로 이동합니다.
데이터베이스를 만들 인스턴스를 선택합니다.
데이터베이스 만들기를 클릭합니다.
다음 값을 입력합니다.
- Google Cloud 콘솔에 표시할 데이터베이스 이름
- 이 데이터베이스에 사용할 언어.
- GoogleSQL 언어 데이터베이스의 경우 필요에 따라 스키마를 정의하는 DDL 문 집합을 제공합니다. 공통 요소를 미리 채우려면 DDL 템플릿을 사용하세요. DDL 문에 오류가 있으면 데이터베이스를 만들려고 할 때 Google Cloud 콘솔에서 오류를 반환합니다.
- 필요한 경우 이 데이터베이스에 사용할 고객 관리 암호화 키를 선택합니다.
만들기를 클릭하여 데이터베이스를 만듭니다.
gcloud
gcloud spanner databases create
명령어를 사용합니다.
```sh
gcloud spanner databases create DATABASE \
--instance=INSTANCE \
[--async] \
[--database-dialect=DATABASE_DIALECT] \
[--ddl=DDL] \
[--ddl-file=DDL_FILE] \
[--kms-key=KMS_KEY : --kms-keyring=KMS_KEYRING --kms-location=KMS_LOCATION --kms-project=KMS_PROJECT] \
[GCLOUD_WIDE_FLAG …]
```
다음 옵션이 필요합니다.
DATABASE
- 데이터베이스의 ID 또는 데이터베이스의 정규화된 식별자. 정규화된 식별자를 지정하는 경우
--instance
플래그를 생략할 수 있습니다. --instance=INSTANCE
- 데이터베이스의 Cloud Spanner 인스턴스.
다음 옵션은 선택사항입니다.
--async
- 진행 중인 작업이 완료되기를 기다리지 않고 즉시 반환합니다.
--database-dialect=DATABASE_DIALECT
- Spanner 데이터베이스의 SQL 언어.
POSTGRESQL
,GOOGLE_STANDARD_SQL
중 하나여야 합니다. --ddl=DDL
- 새로 생성된 데이터베이스 내에서 실행할 세미콜론으로 구분된 DDL(데이터 정의 언어) 문. 문에 오류가 있으면 데이터베이스가 생성되지 않습니다.
--ddl_file
이 설정된 경우 이 플래그는 무시됩니다. PostgreSQL 언어 데이터베이스에서는 지원되지 않습니다. --ddl-file=DDL_FILE
- 새로 생성된 데이터베이스 내에서 실행할 세미콜론으로 구분된 DDL(데이터 정의 언어) 문이 포함된 파일의 경로. 문에 오류가 있으면 데이터베이스가 생성되지 않습니다.
--ddl_file
이 설정된 경우--ddl
이 무시됩니다. PostgreSQL 언어 데이터베이스에서는 지원되지 않습니다.
데이터베이스를 만들 때 사용할 Cloud Key Management Service 키를 지정하는 경우 다음 옵션을 포함합니다.
--kms-key=KMS_KEY
- 키의 ID 또는 키의 정규화된 식별자입니다.
이 그룹의 다른 인수가 지정된 경우 이 플래그를 지정해야 합니다. 정규화된 식별자가 제공되면 다른 인수를 생략할 수 있습니다.
--kms-keyring=KMS_KEYRING
- 키의 Cloud KMS 키링 ID입니다.
--kms-location=KMS_LOCATION
- 키의Google Cloud 위치입니다.
--kms-project=KMS_PROJECT
- 키의Google Cloud 프로젝트 ID입니다.
클라이언트(GoogleSQL)
C++
Spanner용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Spanner 클라이언트 라이브러리를 참조하세요.
Spanner에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
Spanner용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Spanner 클라이언트 라이브러리를 참조하세요.
Spanner에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
Spanner용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Spanner 클라이언트 라이브러리를 참조하세요.
Spanner에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
Spanner용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Spanner 클라이언트 라이브러리를 참조하세요.
Spanner에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
Spanner용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Spanner 클라이언트 라이브러리를 참조하세요.
Spanner에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Spanner용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Spanner 클라이언트 라이브러리를 참조하세요.
Spanner에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Ruby
Spanner용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Spanner 클라이언트 라이브러리를 참조하세요.
Spanner에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
데이터 가져오기
CSV 파일, MySQL 덤프 파일 또는 PostgreSQL 덤프 파일을 사용하여 Spanner 데이터베이스로 자체 데이터를 가져올 수 있습니다. Cloud Storage를 사용하거나 Cloud Storage 버킷에서 직접 로컬 파일을 업로드할 수 있습니다. Cloud Storage를 사용하여 로컬 파일을 업로드하면 요금이 부과될 수 있습니다.
CSV 파일을 사용하려면 데이터베이스 스키마가 포함된 별도의 JSON 파일도 업로드해야 합니다.
Google Cloud 콘솔
Google Cloud 콘솔에서 Spanner 인스턴스 페이지로 이동합니다.
데이터베이스를 만들 인스턴스를 선택합니다.
자체 데이터 가져오기를 클릭합니다.
다음 값을 입력합니다.
파일 형식을 선택합니다.
컴퓨터에서 파일을 업로드하거나 파일의 Cloud Storage 버킷 경로를 선택합니다.
(선택사항) CSV 파일을 사용하려면 데이터베이스 스키마가 포함된 별도의 JSON 파일도 업로드해야 합니다. JSON 파일은 다음 구조를 사용하여 스키마를 정의해야 합니다.
{ "name": "COLUMN_NAME", "type": "TYPE", "notNull": NOT_NULL_VALUE, "primaryKeyOrder": PRIMARY_KEY_ORDER }
다음을 바꿉니다.
COLUMN_NAME: 테이블의 열 이름입니다.
TYPE: 열의 데이터 유형입니다.
(선택사항) NOT_NULL_VALUE: 열에 null 값을 저장할 수 있는지 여부입니다. 유효한 입력은
true
또는false
입니다. 기본값은false
입니다.(선택사항): PRIMARY_KEY_ORDER: 기본 키 순서를 결정합니다. 기본 키가 아닌 열의 값은
0
로 설정됩니다. 값을 정수로 설정합니다(예: 기본 키 열의 경우1
). 번호가 낮은 열은 복합 기본 키에서 더 일찍 표시됩니다.
CSV 파일은 기본적으로 필드 구분 기호로 쉼표를 사용하고 줄 구분 기호로 줄바꿈을 사용합니다. 맞춤 구분 기호 사용에 관한 자세한 내용은
gcloud alpha spanner databases import
참조를 확인하세요.새 데이터베이스 또는 기존 데이터베이스를 대상으로 선택합니다.
가져오기를 클릭합니다.
Spanner가 Cloud Shell을 열고 Spanner 마이그레이션 도구를 설치하고
gcloud alpha spanner databases import
명령어를 실행하는 명령어를 입력합니다.ENTER
키를 눌러 데이터베이스로 데이터를 가져옵니다.
샘플 데이터 세트 사용
관계형 모델, 전체 텍스트 검색, 벡터 검색과 같은 Spanner 기능을 살펴볼 수 있는 샘플 데이터 세트에서 기존 인스턴스의 새 데이터베이스를 채울 수 있습니다.
Google Cloud 콘솔
Google Cloud 콘솔에서 Spanner 인스턴스 페이지로 이동합니다.
데이터베이스를 만들 인스턴스를 선택합니다.
데이터 세트 살펴보기를 클릭합니다.
다음 데이터 세트 중 하나를 선택합니다.
데이터베이스 만들기를 클릭합니다.
데이터베이스 스키마 또는 옵션 업데이트
DDL 문을 사용하여 데이터베이스 스키마와 옵션을 업데이트할 수 있습니다.
예를 들어 열을 테이블에 추가하려면 다음 DDL 문을 사용합니다.
GoogleSQL
ALTER TABLE Songwriters ADD COLUMN Publisher STRING(10);
PostgreSQL
ALTER TABLE Songwriters ADD COLUMN Publisher VARCHAR(10);
쿼리 최적화 도구 버전을 업데이트하려면 다음 DDL 문을 사용합니다.
GoogleSQL
ALTER DATABASE Music SET OPTIONS(optimizer_version=null);
PostgreSQL
ALTER DATABASE DB-NAME SET spanner.optimizer_version TO DEFAULT;
지원되는 옵션에 대한 자세한 내용은 GoogleSQL 또는 PostgreSQL에 대한 ALTER DATABASE
DDL 참조를 확인하세요.
스키마 업데이트에 대한 자세한 내용은 스키마 업데이트를 참조하세요.
Google Cloud 콘솔
Google Cloud 콘솔에서 Spanner 인스턴스 페이지로 이동합니다.
변경할 데이터베이스가 포함된 인스턴스를 선택합니다.
데이터베이스를 선택합니다.
Spanner 스튜디오를 클릭합니다.
새 탭을 클릭하거나 빈 편집기 탭을 사용합니다. 그런 다음 적용할 DDL 문을 입력합니다.
실행을 클릭하여 업데이트를 적용합니다. DDL에 오류가 있으면 Google Cloud 콘솔에서 오류를 반환하고 데이터베이스는 변경되지 않습니다.
gcloud
gcloud
명령줄 도구를 사용하여 데이터베이스를 변경하려면 gcloud spanner databases ddl update
를 사용합니다.
gcloud spanner databases ddl update \ (DATABASE : --instance=INSTANCE) \ [--async] \ [--ddl=DDL] \ [--ddl-file=DDL_FILE] \
사용 가능한 옵션에 대한 자세한 내용은 gcloud
참조를 확인하세요.
--ddl
플래그 또는 --ddl-file
플래그를 사용하여 데이터베이스 업데이트를 명령어에 전달합니다. DDL 파일을 지정한 경우 --ddl
플래그는 무시됩니다.
포함할 DDL 문은 GoogleSQL 또는 PostgreSQL에 대한 ALTER DATABASE
DDL 참조를 확인하세요.
DDL
자세한 내용은 GoogleSQL 또는 PostgreSQL에 대한 ALTER DATABASE
DDL 참조를 확인하세요.
스키마 업데이트 작업 진행 상황 확인
Google Cloud 콘솔
Spanner 탐색 메뉴에서 작업 탭을 선택합니다. 작업 페이지에 실행 중인 작업 목록이 표시됩니다.
목록에서 스키마 작업을 찾습니다. 아직 실행 중이면 다음 이미지와 같이 종료 시간 열의 진행률 표시줄에 완료된 작업의 비율이 표시됩니다.
gcloud
gcloud spanner operations describe
를 사용하여 작업 진행 상황을 확인합니다.
작업 ID를 가져옵니다.
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
다음을 바꿉니다.
- INSTANCE-NAME: Spanner 인스턴스 이름
- DATABASE-NAME: 데이터베이스 이름
gcloud spanner operations describe
을 실행합니다.gcloud spanner operations describe OPERATION_ID\ --instance=INSTANCE-NAME \ --database=DATABASE-NAME
다음을 바꿉니다.
- OPERATION-ID: 확인할 작업의 작업 ID
- INSTANCE-NAME: Spanner 인스턴스 이름
- DATABASE-NAME: Spanner 데이터베이스 이름
출력의
progress
섹션에 완료된 작업의 비율이 표시됩니다. 결과는 다음과 유사합니다.done: true metadata: ... progress: - endTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 startTime: '2022-03-01T00:28:04.221401Z' - endTime: '2022-03-01T00:28:17.624588Z' startTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 ...
REST v1
작업 ID를 가져옵니다.
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
다음을 바꿉니다.
- INSTANCE-NAME: Spanner 인스턴스 이름
- DATABASE-NAME: 데이터베이스 이름
작업 진행 상황을 확인합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT-ID: 프로젝트 ID
- INSTANCE-ID: 인스턴스 ID
- DATABASE-ID: 데이터베이스 ID
- OPERATION-ID: 작업 ID
HTTP 메서드 및 URL:
GET https://spanner.googleapis.com/v1/projects/PROJECT-ID/instances/INSTANCE-ID/databases/DATABASE-ID/operations/OPERATION-ID
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ ... "progress": [ { "progressPercent": 100, "startTime": "2023-05-27T00:52:27.366688Z", "endTime": "2023-05-27T00:52:30.184845Z" }, { "progressPercent": 100, "startTime": "2023-05-27T00:52:30.184845Z", "endTime": "2023-05-27T00:52:40.750959Z" } ], ... "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty" } }
작업에 시간이 너무 오래 걸리는 경우 취소할 수 있습니다. 자세한 내용은 장기 실행 데이터베이스 작업 취소를 참조하세요.
데이터베이스 삭제
데이터베이스를 삭제하면 데이터베이스 및 모든 데이터베이스 데이터가 영구적으로 삭제됩니다. 데이터베이스 삭제를 실행취소할 수 없습니다. 데이터베이스에서 데이터베이스 삭제 보호가 활성화된 경우 데이터베이스 삭제 보호를 사용 중지하기 전에는 해당 데이터베이스를 삭제할 수 없습니다.
데이터베이스가 삭제되더라도 기존 백업은 삭제되지 않습니다. 자세한 내용은 백업 및 복원을 참조하세요.
Google Cloud 콘솔
Google Cloud 콘솔에서 Spanner 인스턴스 페이지로 이동합니다.
삭제할 데이터베이스가 포함된 인스턴스를 선택합니다.
데이터베이스를 선택합니다.
데이터베이스 삭제를 클릭합니다. 확인 메시지가 표시됩니다.
데이터베이스 이름을 입력하고 삭제를 클릭합니다.
gcloud
gcloud
명령줄 도구로 데이터베이스를 삭제하려면 gcloud spanner databases delete
를 사용합니다.
gcloud spanner databases delete \ (DATABASE : --instance=INSTANCE)
다음 옵션이 필요합니다.
DATABASE
- 데이터베이스의 ID 또는 데이터베이스의 정규화된 식별자. 정규화된 식별자가 제공된 경우
--instance
플래그를 생략해야 합니다. --instance=INSTANCE
- 데이터베이스의 Cloud Spanner 인스턴스.
자세한 내용은 gcloud
참조를 확인하세요.
DDL
DDL은 데이터베이스 삭제 문법을 지원하지 않습니다.
다음 단계
- 데이터베이스 만들기 및 샘플 데이터로 로드
- GoogleSQL DDL 참조 자세히 알아보기
- PostgreSQL DDL 참조 자세히 알아보기
- 데이터베이스 백업 및 복원 방법 알아보기
- 실수로 인한 데이터베이스 삭제를 방지하는 방법 알아보기
- 스키마를 업데이트하는 방법 알아보기