티스토리 뷰

Bigtable

Cloud Bigtable

목차:

1. What is Cloud Bigtable?

2. Cloud Bigtable stoage model

3. Processing

4. Choosing Cloud Bigtable

 

1. What is Cloud Bigtable?

What is Cloud Bigtable?

- Cloud Bigtable은 페타 바이트 규모의 매우 짧은 지연 시간을 제공하는 완전 관리형 NoSQL 데이터베이스입니다. 처리량에 맞게 원활하게 확장되고 특정 액세스 패턴에 맞게 조정하는 방법을 배웁니다. Cloud Bigtable은 실제로 검색, 분석, 지도, Gmail을 비롯한 여러 Google 핵심 서비스를 지원하는 동일한 데이터베이스입니다.

 

- Cloud Bigtable은 짧은 지연 시간으로 높은 읽기 및 쓰기 처리량을 지원하므로 IoT, 사용자 분석, 재무 데이터 분석을 포함한 운영 및 분석 애플리케이션 모두에 적합합니다. 머신 러닝 애플리케이션을 위한 훌륭한 스토리지 엔진이기도 합니다.

 

- Cloud Bigtable은 Hadoop, Cloud Dataflow, Cloud Dataproc과 같은 인기 있는 빅 데이터 도구와 쉽게 통합됩니다. 또한 Cloud Bigtable은 오픈 소스 산업 표준 HBase API를 지원하므로 개발팀이 쉽게 시작할 수 있습니다. 

 

 

2. Cloud Bigtable stoage model

Cloud Bigtable stoage model

- Cloud Bigtable은 각각 정렬된 key/value 맵인 대규모 확장 가능 테이블에 데이터를 저장합니다. 테이블은 일반적으로 단일 entity를 설명하는 행과 각 행에 대한 개별 값을 포함하는 열로 구성됩니다. 각 행은 단일 행 키에 의해 인덱싱 되며 서로 관련된 열은 일반적으로 열 패밀리로 함께 그룹화됩니다. 각 열은 column family 내에서 고유 한 이름 인 column family와 column qualifier의 조합으로 식별됩니다.

 

- 각 행 / 열 교차는 서로 다른 타임스탬프에서 여러 셀 또는 버전을 포함할 수 있으며 저장된 데이터가 시간이 지남에 따라 어떻게 변경되었는지에 대한 기록을 제공합니다. Cloud Bigtable 테이블은 희소합니다. 셀에 데이터가 없는 경우 공간을 차지하지 않습니다.

 

- 여기에 표시된 예는 각 대통령이 다른 대통령의 게시물을 팔로우할 수 있는 미국 대통령을 위한 가상의 소셜 네트워크입니다.

  • 테이블에는 다음과 같은 칼럼 패밀리가 있습니다. 이 패밀리에는 여러 열 한정자(qualifiers)가 포함되어 있습니다.

  • 열 한정자(qualifiers)는 데이터로 사용됩니다. 이 디자인 선택은 Cloud Bigtable 테이블의 희박함과 데이터 변경에 따라 새 열 한정자를 추가할 수 있다는 사실을 활용합니다.

  • 사용자 이름은 행 키로 사용됩니다. 사용자 이름이 알파벳 전체에 균등하게 분산되어 있다고 가정하면 데이터 액세스는 전체 테이블에서 합리적으로 균일합니다.

 

3. Processing

Processing is separated from storage

- 이 다이어그램은 Cloud Bigtable의 전체 아키텍처를 단순화 한 버전을 보여줍니다. 프론트엔드 서버 풀 및 노드를 통해 수행되는 처리가 저장소와 별도로 처리됨을 보여줍니다. 

 

- Cloud Bigtable 테이블은 쿼리 작업 부하의 균형을 맞추는 데 도움이 되도록 태블릿이라는 연속 행 블록으로 분할됩니다. 태블릿은 HBase API를 사용한 사용자에게 HBase 지역과 유사합니다.

 

- 태블릿은 Google의 파일 시스템인 Colossus에 SSTable 형식으로 저장됩니다. SSTable은 key와 value 모두 임의의 바이트 문자열인 키에서 값으로의 지속적이고 순서가 지정된 변경 불가능한 맵을 제공 합니다.

 

 

 

learn access patterns

- 앞서 언급했듯이 Cloud Bigtable은 특정 액세스 패턴에 적응하는 방법을 배웁니다. 특정 Bigtable 노드가 특정 데이터 하위 집합에 자주 액세스 하는 경우에 발생합니다.

 

 

 

Rebalances without moving data

- Cloud Bigtable은 여기에 표시된 대로 다른 노드가 해당 작업 부하를 균등하게 분산할 수 있도록 색인을 업데이트합니다.

 

 

 

Throughput scales linearly

- 이 처리량은 선형 적으로 확장되므로 추가하는 모든 단일 노드에 대해 처리량 성능의 선형 확장 (최대 수백 개의 노드)을 볼 수 있습니다.

 

 

4. Choosing Cloud Bigtable

Choosing Cloud Bigtable

- 요약하면, 1TB 이상의 구조화된 데이터를 저장해야 하거나, 쓰기 양이 매우 많거나, 강력한 일관성과 함께 10 밀리 초 미만의 읽기 / 쓰기 지연 시간이 필요하거나, HBase API와 호환되는 스토리지 서비스가 필요한 경우 , Cloud Bigtable을 사용해보세요. 이러한 항목이 필요하지 않고 잘 확장되는 저장소 서비스를 찾고 있다면 Cloud Firestore를 사용해보세요.

 

- 확장과 관련하여 만들 수 있는 가장 작은 Cloud Bigtable 클러스터에는 3 개의 노드가 있으며 초당 30,000 개의 작업을 처리할 수 있습니다. 애플리케이션이 노드를 사용하는지 여부에 관계없이 해당 노드가 작동하는 동안 비용을 지불해야 합니다.

 

구글의 분산 아키텍쳐
오픈소스 진영의 분산 아키텍쳐(Apache)

  • 대규모의 구조화된 데이터를 여러 부분으로 나눈 다음, 분산해 저장/관리하는 기술
  • 저장 데이터의 정형화 여부와 데이터 모델에 따라 1. 분산 파일 시스템, 2. 데이터베이스 클러스터(클러스터 데이터베이스), 3. NoSQL(Key-Value저장소) 정도로 구분
  • Managed, scalable storage
  • Data encryption in-flight and at rest
  • Control access with IAM
  • Bigtable drives major applications such as Google Analytics and Gmail

 

NoSQL

  • 데이터의 폭발적인 증가에 대응하기 위한 분산 데이터베이스 기술
  • key와 value의 형태로 자료를 저장하여, 빠른 조회가 가능한 구조의 데이터 저장소
  • SQL계열 쿼리 언어를 사용할 수 있다는 사실을 강조한다는 면에서 'Not Olny SQL'로 불리기도 합니다.
  • 스키마 없이 동작하며, 자유롭게 데이터베이스 레코드에 필드 추가 가능
  • 복잡한 join연산 기능은 지원하지 않음
  • 대부분 오픈소스

 

데이터 모델

  • 테이블 내 모든 데이터는 row-key의 사전적 순서로 정렬 및 저장
  • row는 n개의 column-family(column의 모음)를 가질 수 있음
  • 동일한 column-key에 대하 타임스탬프(timestamp)가 다른 여러 버전의 값이 존재 가능
  • 하나의 데이터 키 값 또는 정렬 기준: 'row-key + column-key + timestamp'

 

페일오버(Failover)

  • 특정 노드에 장애가 발생할 경우, 마스터가 장애가 발생한 노드에서 서비스되던 Tablet을 다른 노드로 재 할당
  • 빅 테이블의 SPOF는 Master
    • SPOP(Single Point of Failure) : 시스템의 구성 요소 중 동작하지 않으면 전체 시스템이 중단되는 요소
  • 폴트 톨러런스 지원 구조인 Chubby는 절대 장애가 발생하지 않음
  • Chubby가 Master를 계속 모니터링하다가, 장애 발생 시 가용한 노드가 마스터 역할을 수행하게 함

 

AppEngine

  • 구글 클라우드 플랫폼의 일부로 빅 테이블 사용
  • 사용자 테이블 생성 시 빅 테이블의 특정 테이블에 대한 한 영역만을 차지
  • 빅 테이블과 달리 자동으로 인덱스(index) 생성

 

HBase

  • 하둡 분산 파일 시스템(HDFS)을 기반으로 구현된 칼럼 기반의 분산 데이터베이스
  • 관계형 구조가 아니며, SQL을 지원하지 않음 -> 비 구조화된 데이터에 더욱 적합
  • 수평적으로 확장성이 있어 큰 테이블에 적합
  • 로우키에 대한 인덱싱만을 지원, Zookeeper를 이용한 고가용성 보장
    • Zookeeper : 분산 환경에서 서버들 간에 상호 조정이 필요한 다양한 서비스 제공, 모니터링 및 관리

1. True or false: Each table in NoSQL databases such as Cloud Bigtable has a single schema that is enforced by the database engine itself.

 

False(NoSQL databases such as Cloud Bigtable are suitable when all items in the database needn't have their integrity checked by a database schema. Why not? Maybe you wnat your database items to contain variable fields, or maybe because you simply want your application to manage database integrity.

 

2. Some developers think of Cloud Bigtable as a persistent hashtable. What does that mean?

 

Each item in the database can be sparsely populated, and is looked up with a single key.

 

반응형