쓰기 시간에 값 집계
이 문서에서는 쓰기 시간에 Bigtable 데이터를 집계할 수 있는 방법을 간략하게 설명합니다. 이 문서를 읽기 전에 Bigtable 개요를 숙지하세요.
많은 애플리케이션은 인앱 보고, 실시간 추천, 비율 제한을 비롯한 사용 사례를 지원하는 운영 측정항목을 추적합니다. 이러한 운영 측정항목의 예는 다음과 같습니다.
- 주간 활성 사용자 수
- 광고 노출수
- 소셜 콘텐츠 조회수 또는 공유수
- 미디어 스트림 수
이러한 측정항목은 사용자 대상 애플리케이션에서 사용하거나 머신러닝 모델의 입력으로 사용할 수 있으며 일반적으로 짧은 지연 시간과 높은 처리량이 필요합니다. 쿼리 시간에 이러한 유형의 측정항목을 계산하는 것은 대규모로 실용적이지 않으므로 데이터 수집 중에 사전 집계하는 것이 실시간 시스템에 적합한 접근 방식입니다.
Bigtable은 충돌 없는 복제 데이터 유형, ReadModifyWriteRow 요청, 연속 구체화된 뷰를 비롯하여 쓰기 시간에 데이터를 집계하는 여러 방법을 제공합니다.
쓰기 시간에 Bigtable 데이터를 집계하면 Bigtable에 데이터를 쓰기 전후에 데이터를 집계하기 위해 추출, 변환, 로드 (ETL) 또는 스트리밍 처리 소프트웨어가 필요하지 않습니다. 애플리케이션에서 Dataflow를 사용하여 스트리밍 데이터를 집계한 후 Bigtable에 쓰는 경우 데이터를 Bigtable의 집계 셀에 직접 전송할 수 있습니다.
충돌 없는 복제 데이터 유형
Bigtable을 사용하면 aggregate 유형의 셀만 포함된 column family를 만들 수 있습니다. 집계 셀은 충돌 없는 복제 데이터 유형 증분 업데이트에 최적화된 구조입니다.
Apache Cassandra, Redis 또는 Valkey와 같은 데이터베이스에서 Bigtable로 마이그레이션하는 경우 이러한 시스템의 유사한 구조를 카운터 라고 합니다.
다음 표에는 지원되는 작업과 새로 작성된 값이 처리되는 방식이 나와 있습니다.
작업 |
설명 |
|---|---|
합계 |
셀 값은 새로 추가된 값과 현재 셀 값의 합계로 대체됩니다. |
최솟값 |
셀 값은 새로 추가된 값과 현재 셀 값 중 더 낮은 값으로 대체됩니다. |
최댓값 |
셀 값은 새로 추가된 값과 현재 셀 값 중 더 높은 값으로 대체됩니다. |
HyperLogLog |
작성된 값은 가장 최근 재설정 이후 추가된 모든 값의 확률적 집합에 추가됩니다. 셀 값은 해당 집합의 상태를 나타냅니다. HLL 알고리즘에 대한 일반적인 자세한 내용은 HyperLogLog를 참조하세요. Zetasketch 라이브러리를 사용하여 HLL 값을 읽을 수 있습니다. |
집계 셀을 만들고 업데이트하기 위해 전송할 수 있는 변경 유형은
AddToCell
및
MergeToCell입니다.
Bigtable에서 카운팅을 시작하려면 Bigtable에서 카운터 만들기 및 업데이트 빠른 시작을 참조하세요.
읽기 후 쓰기
쓰기 시간에 데이터를 집계하는 또 다른 방법은 ReadModifyWriteRow 요청을 사용하는 것입니다. 이 요청을 사용하면 값을 트랜잭션 방식으로 증분하거나 추가하여 셀의 값을 조작할 수 있습니다. 이 접근 방식을 사용해야 하는 경우에 대한 자세한 내용은 추가를 참조하세요.
연속 구체화된 뷰
연속 구체화된 뷰는 소스 테이블의 데이터를 집계하는 SQL 쿼리의 미리 계산된 결과입니다. 뷰는 소스 테이블로 수집될 때 데이터를 지속적으로 처리하고 업데이트를 일괄 처리합니다. 여기에는 업데이트 및 삭제가 포함됩니다. 연속 구체화된 뷰를 사용하면 성능과 효율성을 높일 수 있습니다. 자세한 내용은 연속 구체화된 뷰를 참조하세요.
다음 단계
- 집계 셀에 값을 추가하는 방법을 보여주는 코드 샘플을 확인합니다.
- 스키마 설계와 관련된 개념 검토