書き込み時に値を集計する
このドキュメントでは、書き込み時に Bigtable データを集約する方法の概要について説明します。このドキュメントを読む前に、Bigtable の概要を理解しておく必要があります。
多くのアプリでは、アプリ内レポート、リアルタイム レコメンデーション、レート制限など、ユースケースを推進する運用指標を追跡しています。このような運用指標の例を次に示します。
- 1 週間の利用ユーザー
- 広告のインプレッション数
- ソーシャル コンテンツの視聴回数や共有数
- メディア ストリームの数
これらの指標は、ユーザー向けのアプリケーションや ML モデルへの入力として使用できます。通常、これらの使用には低レイテンシと高いスループットが必要です。このようなタイプの指標をクエリ時に計算することは大規模なスケールで実用的ではないため、リアルタイム システムでは、データ取り込み時の事前集計が推奨されます。
Bigtable では、競合のないレプリケートされたデータ型、ReadModifyWriteRow
リクエスト、継続的なマテリアライズド ビューなど、書き込み時にデータを集約する複数の方法が用意されています。
書き込み時に Bigtable データを集計すると、Bigtable にデータを書き込む前または後に、抽出、変換、読み込み(ETL)またはストリーミング処理ソフトウェアを使用してデータを集計する必要がなくなります。たとえば、アプリケーションが以前に Pub/Sub にメッセージをパブリッシュし、Dataflow を使用してメッセージを読み取り、Bigtable に書き込む前にデータを集計していた場合、そのデータを Bigtable の集計セルに直接送信することもできます。
競合のない複製データ型
Bigtable では、集計型のセルのみを含む列ファミリーを作成できます。集計セルは、増分更新用に最適化された競合のない複製データ型構造です。
Apache Cassandra、Redis、Valkey などのデータベースから Bigtable に移行する場合、これらのシステムの同様の構造はカウンターと呼ばれます。
次の表に、サポートされているオペレーションと、新しく書き込まれた値の処理方法を示します。
オペレーション |
説明 |
---|---|
合計 |
セルの値は、新しく追加された値と現在のセルの値の合計に置き換えられます。 |
最小 |
セルの値は、新しく追加された値と現在のセル値の間の低い値に置き換えられます。 |
最大 |
セルの値は、新しく追加された値と現在のセル値の間の高い値に置き換えられます。 |
HyperLogLog |
書き込まれた値は、直近のリセット以降に追加されたすべての値の確率セットに追加されます。セルの値は、そのセットの状態を表します。HLL アルゴリズムの一般的な情報については、HyperLogLog をご覧ください。 HLL 値は Zetasketch ライブラリを使用して読み取ることができます。 |
集計セルの作成と更新に送信できるミューテーション タイプは、AddToCell
と MergeToCell
です。
Bigtable でのカウントを開始するには、Bigtable でカウンタを作成して更新するクイックスタートをご覧ください。
読み取り後に書き込み
書き込み時にデータを集計するもう 1 つの方法は、ReadModifyWriteRow リクエストを使用する方法です。このリクエストを使用すると、トランザクションで値をインクリメントまたは追加することで、セルの値を操作できます。この方法を使用する場合の詳細については、追加をご覧ください。
継続的なマテリアライズド ビュー
継続マテリアライズド ビューは、ソーステーブルのデータを集計する SQL クエリの事前計算された結果です。ビューは、ソーステーブルにデータが取り込まれるたびにデータを継続的に処理し、更新をバッチ処理します。これには、更新と削除が含まれます。継続的なマテリアライズド ビューを使用すると、パフォーマンスと効率を向上させることができます。詳細については、継続的なマテリアライズド ビューをご覧ください。