쓰기 시간에 값 집계

이 문서에서는 쓰기 시간에 Bigtable 데이터를 집계하는 방법을 간략하게 설명합니다. 이 문서를 읽기 전에 Bigtable 개요를 숙지해야 합니다.

많은 애플리케이션은 인앱 보고, 실시간 추천, 비율 제한을 비롯한 사용 사례를 유도하는 운영 측정항목을 추적합니다. 이러한 운영 측정항목의 예는 다음과 같습니다.

  • 주간 활성 사용자 수
  • 광고 노출수
  • 소셜 콘텐츠 조회수 또는 공유수
  • 미디어 스트림 수

이러한 측정항목은 사용자 대상 애플리케이션에서 또는 머신러닝 모델의 입력으로 사용할 수 있으며, 일반적으로 이를 사용하려면 지연 시간이 짧고 처리량이 높아야 합니다. 쿼리 시 이러한 유형의 측정항목을 계산하는 것은 대규모로 실행하기에는 비현실적이므로 데이터 처리 중에 사전 집계하는 것이 실시간 시스템에 적합한 접근 방식입니다.

Bigtable은 충돌이 없는 복제된 데이터 유형, ReadModifyWriteRow 요청, 연속 구체화된 뷰를 비롯하여 쓰기 시 데이터를 집계하는 여러 가지 방법을 제공합니다.

쓰기 시 Bigtable 데이터를 집계하면 추출, 변환, 로드 (ETL) 또는 스트리밍 처리 소프트웨어를 사용하여 Bigtable에 데이터를 쓰기 전후에 데이터를 집계할 필요가 없습니다. 예를 들어 애플리케이션이 이전에는 Pub/Sub에 메시지를 게시한 후 데이터를 Bigtable에 기록하기 전에 Dataflow를 사용하여 메시지를 읽고 데이터를 집계했다면 이제 데이터를 Bigtable의 집계 셀에 직접 전송할 수 있습니다.

충돌이 없는 복제된 데이터 유형

Bigtable을 사용하면 집계 유형의 셀만 포함된 column family를 만들 수 있습니다. 집계 셀은 증분 업데이트에 최적화된 충돌이 없는 복제된 데이터 유형 구조입니다.

Apache Cassandra, Redis, Valkey와 같은 데이터베이스에서 Bigtable로 마이그레이션하는 경우 이러한 시스템의 유사한 구조는 카운터라고 합니다.

다음 표에는 지원되는 작업과 새로 작성된 값이 처리되는 방식이 나와 있습니다.


작업

설명

합계

셀 값은 새로 추가된 값과 현재 셀 값의 합계로 대체됩니다.

최소

셀 값은 새로 추가된 값과 현재 셀 값 중 더 낮은 값으로 대체됩니다.

최대

셀 값은 새로 추가된 값과 현재 셀 값 중 더 큰 값으로 대체됩니다.

HyperLogLog

쓰여진 값은 가장 최근 재설정 이후 추가된 모든 값의 확률적 집합에 추가됩니다. 셀 값은 해당 집합의 상태를 나타냅니다. HLL 알고리즘에 관한 일반적인 내용은 HyperLogLog를 참고하세요.

Zetasketch 라이브러리를 사용하여 HLL 값을 읽을 수 있습니다.

집계 셀을 만들고 업데이트하기 위해 전송할 수 있는 변형 유형은 AddToCellMergeToCell입니다.

Bigtable에서 집계를 시작하려면 Bigtable에서 카운터 만들기 및 업데이트하기 빠른 시작을 참고하세요.

읽기 후 쓰기

쓰기 시점에 데이터를 집계하는 또 다른 방법은 ReadModifyWriteRow 요청을 사용하는 것입니다. 이 요청을 사용하면 트랜잭션 방식으로 값을 증분하거나 추가하여 셀의 값을 조작할 수 있습니다. 이 접근 방식을 사용하는 경우의 자세한 내용은 추가를 참고하세요.

연속 구체화된 뷰

연속 구체화된 뷰는 소스 테이블의 데이터를 집계하는 SQL 쿼리의 미리 계산된 결과입니다. 뷰는 소스 테이블에 처리될 때 데이터를 연속적으로 처리하고 업데이트를 일괄 처리합니다. 여기에는 업데이트 및 삭제가 포함됩니다. 연속 구체화된 뷰를 사용하면 성능과 효율성을 높일 수 있습니다. 자세한 내용은 연속 구체화된 뷰를 참고하세요.

다음 단계