테이블 관리

Cloud Bigtable 테이블을 관리하는 가장 쉬운 방법은 cbt 명령줄 도구를 사용하는 것입니다. 이 페이지에서는 cbt를 사용하여 테이블을 생성, 수정, 삭제하는 방법과 cbt 또는 Google Cloud Console을 사용하여 기존 테이블의 정보를 가져오는 방법을 설명합니다.

cbt 도구는 이 페이지에서 설명하지 않는 여러 명령어를 지원합니다. 전체 명령어 목록은 cbt 참조를 참고하세요.

또한 Cloud Bigtable 클라이언트 라이브러리 또는 서비스 API 중 하나를 사용하여 프로그래매틱 방식으로 테이블을 관리하거나 HBase 셸 명령줄 도구를 사용하여 테이블을 관리할 수도 있습니다. HBase 셸을 사용하는 방법에 대한 자세한 내용은 HBase 문서를 참조하세요.

시작하기 전에

시작하기 전에 cbt 도구를 설치해야 합니다.

cbt 도구 구성하기

다음 cbt 구성 설정에 대한 기본값을 지정할 수 있습니다.

  • Cloud Bigtable 인스턴스가 있는 프로젝트
  • 연결할 Cloud Bigtable 인스턴스
  • 인스턴스에 연결할 때 사용할 JSON 형식의 사용자 인증 정보 파일. 서비스 계정 키 작성 안내를 참조하세요. gcloud auth application-default login을 실행하여 인증했거나 Compute Engine 인스턴스에서 cbt 도구를 사용하고 있는 경우 사용자 인증 정보 파일이 필요 없습니다.
  • 사용할 API 엔드포인트. 보통 이러한 값은 변경할 필요가 없습니다.

이러한 설정의 기본값을 지정하려면 홈 디렉터리에 .cbtrc 파일을 만듭니다. 명령줄 플래그를 사용하여 .cbtrc에서 기본값을 재정의할 수 있습니다.

.cbtrc 파일을 만들려면 다음 명령어를 실행합니다. 이때 [PROJECT_ID][INSTANCE_ID]를 적절한 값으로 바꿉니다.

echo -e "project = [PROJECT_ID]\ninstance = [INSTANCE_ID]" > ~/.cbtrc

편의상 이 페이지의 나머지 안내에서는 .cbtrc 파일에 프로젝트 ID와 인스턴스 ID를 설정했다고 가정합니다. cbt를 실행할 때마다 -project-instance 플래그를 사용하여 이러한 값을 설정할 수도 있습니다.

테이블 만들기

cbt 도구로 테이블을 만들 때 테이블에서 사용할 column family를 지정할 필요가 없습니다. 이후에 column family를 추가하거나 삭제할 수 있습니다.

테이블을 만들려면 다음 명령어를 사용합니다. 이때 [TABLE_NAME]을 테이블 이름으로 바꿉니다.

cbt createtable [TABLE_NAME]

row key로 테이블 분할하기

완전 관리형 서비스인 Cloud Bigtable의 한 가지 기능은 여러 노드 간에 테이블을 자동 분할하는 기능입니다. 이 기능은 각 노드에 저장된 데이터 양을 균일하게 배포하고 자주 액세스하는 행을 가능한 분산시켜 성능을 최적화합니다.

테이블을 만들 때 row key를 선택하여 테이블을 사전 분할할 수 있습니다. 예를 들어 테이블에 많은 행을 쓰려는 경우 특정 행을 지정하여 테이블을 사전 분할할 수 있습니다. 테이블을 사전 분할할 필요는 없지만, 테이블을 만들 때 부하 및 데이터 점유공간이 기본으로 사용될 가능성이 있는 위치에 대한 Cloud Bigtable 정보를 제공하기 때문에 유용합니다. 사전 분할은 데이터가 들어올 때 Cloud Bigtable이 한 번에 테이블을 분할하고 부하를 다시 분산하는 것을 방지합니다.

테이블을 만들 때 사전 분할하기로 선택한 row key에서 테이블이 분할된 상태로 유지되지 않습니다. Cloud Bigtable은 테이블의 데이터 양과 각 행의 액세스 빈도를 기준으로 여러 row key에서 테이블을 분할합니다.

row key를 기준으로 테이블을 사전 분할하려면 다음 구문을 사용하여 테이블을 만듭니다. 이때 [TABLE_NAME]을 테이블 이름으로 바꾸고, [SPLITS]를 사전 분할에 사용할 row key 프리픽스 목록(쉼표로 구분)으로 바꿉니다.

cbt createtable [TABLE_NAME] splits=[SPLITS]

예를 들어 1020으로 시작하는 row key에서 테이블 my-table을 사전 분할하려면 다음 명령어를 사용합니다.

cbt createtable my-table splits=10,20

테이블에서 column family 수정하기

cbt 도구를 사용하여 기존의 테이블에서 column family를 삭제하거나 삭제할 수 있습니다.

column family 추가하기

테이블에 column family를 추가하려면 다음 명령어를 사용합니다. 이때 [TABLE_NAME]을 테이블 이름으로 바꾸고, [FAMILY_NAME]을 column family 이름으로 바꿉니다.

cbt createfamily [TABLE_NAME] [FAMILY_NAME]

예를 들어 테이블 my-table에 column family cf1cf2를 추가하려면 다음 명령어를 사용합니다.

cbt createfamily my-table cf1
cbt createfamily my-table cf2

column family 삭제하기

테이블에서 column family를 삭제하려면 다음 명령어를 사용합니다. 이때 [TABLE_NAME]을 테이블 이름으로 바꾸고, [FAMILY_NAME]을 column family 이름으로 바꿉니다.

cbt deletefamily [TABLE_NAME] [FAMILY_NAME]

예를 들어 테이블 my-table에서 column family cf2를 삭제하려면 다음 명령어를 사용합니다.

cbt deletefamily my-table cf2

테이블 목록 보기

Console

인스턴스의 테이블 목록을 보려면 다음 안내를 따르세요.

  1. Cloud Console에서 Cloud Bigtable 인스턴스 목록을 엽니다.

    인스턴스 목록 열기

  2. 테이블을 보려는 인스턴스를 클릭합니다.

  3. 왼쪽 창에서 테이블을 클릭합니다.

    테이블 페이지에는 인스턴스의 테이블 목록이 표시됩니다.

    • 테이블의 복제 목록을 확장하려면 테이블 ID 옆에 있는 화살표를 클릭합니다.
    • 테이블의 모니터링 데이터를 확인하려면 테이블 이름 옆에 있는 측정항목 보기를 클릭합니다.

cbt

인스턴스의 테이블 목록을 보려면 다음 명령어를 실행하세요.

cbt ls

테이블에 대한 정보 보기

cbt 도구를 사용하면 테이블의 기존 column family 목록을 가져올 수 있습니다.

테이블의 column family를 보려면 다음 명령어를 사용합니다. 이때 [TABLE_NAME]을 테이블 이름으로 바꿉니다.

cbt ls [TABLE_NAME]

가비지 컬렉션 정책 설정하기

이 섹션에서는 cbt 도구를 사용하여 Cloud Bigtable에 보관되는 각 값의 버전 수를 제어하는 방법과 값에 대해 만료 시간을 지정하는 방법을 설명합니다. Cloud Bigtable 클라이언트 라이브러리를 사용할 때 프로그래매틱 방식으로 가비지 컬렉션 정책도 설정할 수 있습니다.

각 값의 여러 버전 보관하기

column family를 만들면 해당 column family에 보관할 각 값의 버전 수를 지정할 수 있습니다. 이 설정을 지정하지 않으면 Cloud Bigtable에서 다음 기본 설정 중 하나를 사용합니다.

  • 자바용 HBase 클라이언트 또는 HBase 셸 또는 자바용 HBase 클라이언트를 사용하는 다른 도구로 column family를 만드는 경우 Cloud Bigtable은 column family에 각 값의 버전을 1개만 보관합니다. 이 기본 설정은 HBase와 일치합니다.
  • cbt를 포함한 다른 클라이언트 라이브러리 또는 도구로 column family를 만들면 Cloud Bigtable은 각 값의 버전을 무한대로 보관합니다.

column family 내에 보관되는 버전 수를 변경하려면 다음 명령어를 사용하여 [TABLE_NAME]을 테이블 이름으로, [FAMILY_NAME]을 column family 이름으로, [VERSIONS]를 보관할 버전 수로 바꿉니다.

cbt setgcpolicy [TABLE_NAME] [FAMILY_NAME] maxversions=[VERSIONS]

예를 들어 각 값의 버전 5개를 보관하도록 테이블 my-table의 column family cf1을 업데이트하려면 다음 명령어를 사용합니다.

cbt setgcpolicy my-table cf1 maxversions=5

값의 만료 시간 설정하기

column family를 만들 때 해당 column family의 각 값이 만료되는 시기를 지정할 수 있습니다. 이 설정을 지정하지 않으면 column family의 값이 절대로 만료되지 않습니다.

지정된 시간이 지난 후 값이 만료되도록 하려면 다음 명령어를 사용하여 [TABLE_NAME]을 테이블 이름으로, [FAMILY_NAME]을 column family 이름으로, [DAYS]를 각 값을 보관할 일수로 바꿉니다.

cbt setgcpolicy [TABLE_NAME] [FAMILY_NAME] maxage=[DAYS]d

예를 들어 1일 후에 column family cf1의 값이 삭제되게 하려면 다음 명령어를 사용합니다.

cbt setgcpolicy my-table cf1 maxage=1d

테이블 백업 및 복원

Cloud Bigtable을 사용하면 테이블 백업을 만들고 최대 30일까지 TTL(time-to-live)을 할당할 수 있습니다. 백업이 생성된 인스턴스의 새 테이블로 백업을 복원할 수 있습니다. 테이블을 백업하고 복원하는 방법에 대한 자세한 내용은 백업 관리를 참조하세요.

테이블 삭제

테이블을 삭제하려면 다음 명령어를 사용합니다. 이때 [TABLE_NAME]을 테이블 이름으로 바꿉니다.

cbt deletetable [TABLE_NAME]