Bigtable의 기능, 역할 및 최적화

Bigtable

대규모 데이터를 낮은 지연 시간으로 효율적으로 저장하고 관리할 수 있도록 설계된 확장 가능한 NoSQL 데이터베이스 서비스. 분산형 데이터베이스로 데이터를 여러 노드에 분산 저장하므로 단일 서버의 제약 없이 대규모 워크로드를 처리할 수 있다.

Bigtable의 주요 기능 및 역할

  • 대규모 확장성
  • 높은 성능 및 낮은 지연 시간
  • 완전 관리형 서비스 : 인프라 관리, 유지보수, 업데이트 등을 구글 클라우드에서 자동으로 처리하므로 사용자는 데이터와 애플리케이션 개발에 집중할 수 있다.
  • NoSQL 데이터 모델 : 유연한 스키마리스 데이터 모델을 제공하여 다양한 유형의 데이터를 효율적으로 저장하고 관리할 수 있다.

성능 향상을 위해 노드를 추가해야할까 메모리를 추가해야할까?

빅테이블 클러스터의 성능 향상을 고려할 때 노드 추가와 메모리 추가는 각각 다른 영향을 미친다.

  1. 노드를 추가하는 경우

    • 전체 시스템 처리 용량 증가 : 노드를 추가하면 클러스터 전체의 CPU, 네트워크 대역폭, 디스크 I/O 용량이 증가한다.
    • 처리량 향상 : 읽기 및 쓰기 작업의 전반적인 처리량이 증가하여 더 많은 데이터를 더 빠르게 처리 할수 있게 된다.
    • 내결함성 향상 : 노드수가 증가하여 노드 1대의 장애가 클러스터 전체의 가용성에 미치는 영향이 줄어든다.
  2. 메모리를 추가하는 경우

    • 캐시 효율성 증대 :특정 노드의 메모리를 추가하는 경우 해당 노드에 더 많은 캐시가 가능하다.
    • 낮은 지연시간 : 캐시된 데이터에 대한 접근은 디스크 I/O보다 빠르므로 해당 노드에 대해서는 입출력 지연시간을 줄일 수 있다.

결론적으로 두 방법을 비교해 봤을 대 전체적인 성능 향상의 측면에서는 노드 추가가 더 효과적이라는 결론을 내릴 수 있다.

저장할 데이터를 최소화하려고 할 때 어떤 방법을 사용해야 할까?

1. 정규화

중복성 최소화 및 일관성 유지로 효율적 관리가 가능하다.

2. 압축

빅테이블은 내부적으로 압축을 사용한다. 사용자가 직접 압축 방식을 선택할 필요는 없다.

  • 빅테이블의 데이터 저장 방식 : SSTable(Sorted String Table) sstable이라는 불변의 정렬된 문자열 테이블 형식으로 데이터를 저장한다. sstable은 데이터를 블록 단위로 나누어저장하기 때문에 각 블록을 압축하여 저장하면 저장공간을 효율적으로 사용할 수 있다. 압축 알고리즘은 3개가 있으며, 내부적으로 결정된다.