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