gcloud spanner 에뮬레이터 설치 및 실행

ENOOSOFT·2022년 7월 1일
0

에뮬레이터 설치 및 실행
에뮬레이터를 실행하는 가장 일반적인 두 가지 방법은 gcloud CLIDocker를 사용하는 것입니다. 애플리케이션 개발 및 테스트 워크플로에 적합한 방법을 선택할 수 있습니다.

참고: 에뮬레이터를 실행하는 다른 방법은 README를 참조하세요.

gcloud CLI를 설치합니다.

Windows 및 MacOS 사용자의 경우 시스템에 Docker를 설치해야 하며 이를 시스템 경로에서 사용할 수 있어야 합니다.

최신 버전을 가져오도록 gcloud를 업데이트합니다.

gcloud components update

에뮬레이터를 시작합니다.

gcloud emulators spanner start

에뮬레이터가 이미 설치되지 않은 경우 에뮬레이터의 바이너리를 다운로드하여 설치하라는 메시지가 나타납니다.

기본적으로 에뮬레이터는 gRPC 요청의 경우 localhost:9010, REST 요청의 경우 localhost:9020라는 두 가지 로컬 엔드포인트를 호스팅합니다.

이 명령어에 대한 자세한 내용은 gcloud emulators spanner를 참조하세요.

Docker
Docker가 시스템에 설치되었고 시스템 경로에서 사용할 수 있는지 확인합니다.

최신 에뮬레이터 이미지를 가져옵니다.

docker pull gcr.io/cloud-spanner-emulator/emulator

에뮬레이터를 시작합니다.

docker run -p 9010:9010 -p 9020:9020 gcr.io/cloud-spanner-emulator/emulator

이 명령어는 에뮬레이터를 실행하고 컨테이너의 포트를 로컬 호스트에 있는 동일한 포트에 매핑합니다. 로컬 엔드포인트에는 gRPC 요청을 위한 localhost:9010과 REST 요청을 위한 localhost:9020이 있습니다.

에뮬레이터로 gcloud CLI 사용
에뮬레이터를 gcloud와 함께 사용하려면 인증을 사용 중지하고 엔드포인트를 재정의해야 합니다.

에뮬레이터와 프로덕션 서비스 간에 빠르게 전환할 수 있도록 gcloud 구성을 별도로 만드는 것이 좋습니다. 에뮬레이터 구성을 만들고 활성화하려면 다음을 실행합니다.

gcloud config configurations create emulator
  gcloud config set auth/disable_credentials true
  gcloud config set project your-project-id
  gcloud config set api_endpoint_overrides/spanner http://localhost:9020/

구성된 다음에는 gcloud 명령어가 프로덕션 서비스 대신 에뮬레이터로 전송됩니다. 에뮬레이터의 인스턴스 구성으로 인스턴스를 만들어서 이를 확인할 수 있습니다.

gcloud spanner instances create test-instance \
   --config=emulator-config --description="Test Instance" --nodes=1

에뮬레이터와 기본 구성 간에 전환하려면 다음을 실행합니다.

gcloud config configurations activate [emulator | default]

에뮬레이터에 클라이언트 라이브러리 사용
SPANNER_EMULATOR_HOST 환경 변수를 설정하여 에뮬레이터에 클라이언트 라이브러리의 지원되는 버전을 사용할 수 있습니다. 지식을 보급하는 방법에는 여러 가지가 있습니다. 예를 들면 다음과 같습니다.

export SPANNER_EMULATOR_HOST=localhost:9010

다음과 같이 gcloud env-init를 사용할 수도 있습니다.

Linux/macOS

$(gcloud emulators spanner env-init)

애플리케이션이 시작되면 클라이언트 라이브러리는 자동으로 SPANNER_EMULATOR_HOST를 확인하고 실행 중인 에뮬레이터에 연결합니다.

SPANNER_EMULATOR_HOST가 설정된 다음에는 아래의 시작하기 가이드에 따라 에뮬레이터를 테스트할 수 있습니다. 프로젝트 만들기, 인증, 사용자 인증 정보와 관련된 안내는 에뮬레이터를 사용할 때 필요하지 않기 때문에 무시해도 됩니다.

인스턴스 구성 나열

gcloud spanner instance-configs list

이 프로젝트의 모든 Cloud Spanner 인스턴스를 나열하려면 다음을 실행하세요.

gcloud spanner instances list

기본 인스턴스 설정

gcloud config set spanner/instance test-instance

데모 데이터베이스 생성

gcloud spanner databases create example-db

스키마 만들기
Cloud Spanner의 데이터 정의 언어(DDL)를 사용하여 표를 만들거나 변경하거나 삭제하고 색인을 만들거나 삭제합니다.

테이블 두 개를 만들겠습니다.

gcloud spanner databases ddl update example-db \
  --ddl='CREATE TABLE Singers ( SingerId INT64 NOT NULL, FirstName STRING(1024), LastName STRING(1024), SingerInfo BYTES(MAX) ) PRIMARY KEY (SingerId)'
gcloud spanner databases ddl update example-db \
  --ddl='CREATE TABLE Albums ( SingerId INT64 NOT NULL, AlbumId INT64 NOT NULL, AlbumTitle STRING(MAX)) PRIMARY KEY (SingerId, AlbumId), INTERLEAVE IN PARENT Singers ON DELETE CASCADE'

데이터 쓰기
Google 데이터베이스에 샘플 데이터를 추가하겠습니다.

gcloud spanner rows insert --database=example-db \
      --table=Singers \
      --data=SingerId=1,FirstName=Marc,LastName=Richards

gcloud spanner rows insert --database=example-db \
      --table=Singers \
      --data=SingerId=2,FirstName=Catalina,LastName=Smith

gcloud spanner rows insert --database=example-db \
      --table=Singers \
      --data=SingerId=3,FirstName=Alice,LastName=Trentor

gcloud spanner rows insert --database=example-db \
      --table=Albums \
      --data=SingerId=1,AlbumId=1,AlbumTitle="Total Junk"

gcloud spanner rows insert --database=example-db \
      --table=Albums \
      --data=SingerId=2,AlbumId=1,AlbumTitle="Green"

gcloud spanner rows insert --database=example-db \
      --table=Albums \
      --data=^:^SingerId=2:AlbumId=2:AlbumTitle="Go, Go, Go"

기본적으로 쉼표가 목록에서 항목을 구분하는 데 사용됩니다. 마지막 삽입 명령어에서 앨범 제목에 쉼표를 사용할 수 있도록 콜론(^:^)을 구분자로 지정했습니다.

SQL을 사용하여 데이터 쿼리
명령줄에서 쿼리를 실행합니다.

gcloud spanner databases execute-sql example-db \
    --sql='SELECT SingerId, AlbumId, AlbumTitle FROM Albums'

Cloud Spanner SQL 참조는 쿼리 구문을 참조하세요.

execute-sql 명령어를 사용할 수 있는 플래그의 목록을 확인하려면 gcloud spanner databases execute-sql을 참조하세요.

삭제
이 가이드에서 사용한 리소스에 대한 추가 비용이 Google Cloud 계정에 청구되지 않도록 하려면 데이터베이스와 새로 만든 인스턴스를 삭제합니다.

데이터베이스 삭제
기존 인스턴스를 삭제하려면 다음을 사용하세요.

gcloud spanner databases delete example-db

인스턴스 삭제
기존 인스턴스를 삭제하려면 다음을 사용하세요.

gcloud spanner instances delete test-instance

인스턴스를 삭제하면 해당 인스턴스의 모든 데이터베이스도 삭제됩니다. 인스턴스를 삭제하고 나면 되돌릴 수 없습니다.

참고:
Getting-started
에뮬설치
gcloud spanner query test

코드랩:
Cloud Spanner를 사용한 Spring Boot 애플리케이션

profile
Tiny coder

0개의 댓글