インメモリ ティアの概要
インメモリ ティアは、特殊なノードを使用するクラスタレベルの設定です。このページを読む前に、インスタンス、クラスタ、ノードについて理解しておいてください。制限事項についてもよく理解しておくことをおすすめします。
Bigtable のインメモリ ティアは、Bigtable ノードの一部として統合されたメモリ ティアです。単一の API を介して、アクセス パターンとパフォーマンスのニーズに基づいて、シームレスで費用対効果の高いデータ ティアリングを実現します。リモート ダイレクト メモリ アクセス(RDMA)を使用すると、Bigtable インメモリ ティアによって応答時間が大幅に短縮され、ホットスポットが軽減されるため、レイテンシの影響を受けやすいデータに対しても高スループットを確保できます。詳細については、パフォーマンスについてをご覧ください。
インメモリ ティアを使用するタイミング
次のユースケースでは、インメモリ ティアを有効にすることをおすすめします。
- ミリ秒未満のレイテンシ要件: 1 ミリ秒未満の読み取りレイテンシを必要とするワークロード。通常、セルフマネージド キャッシュ ソリューションでデータベースをフロントエンドに配置することで対応します。
- 高スループットのポイント読み取り: 特定のデータ サブセットで高い読み取りトラフィック スループットの要件があるアプリケーション。
- ホットスポットの軽減: 特定の行キーでトラフィック スパイクやホットスポットが発生する可能性のある高スループット ワークロード。
- 費用の最適化: 読み取り量の多いデータを費用対効果の高いインメモリ ティアにオフロードして、Bigtable ノードの数を減らすシナリオ。
インメモリ ティアの仕組み
インメモリ ティアのサポートは、ハイブリッド ストレージ ノードによって提供されます。これらの特殊なノードは、Bigtable のコンピューティングとストレージの分離を拡張し、垂直方向にスケーラブルなスループットを備えたメモリ階層を含めます。Bigtable が専用のインメモリ ティアノードをプロビジョニングするのに最大 30 分かかることがあります。この期間中、Bigtable は引き続き永続ストレージからトラフィックを処理します。
インメモリ ティアは次のように動作します。
- メモリ階層でデータを取得する: メモリ階層はリードスルー キャッシュ保存動作を提供します。行は、インメモリ ティア用に構成したアプリ プロファイルを使用して、読み取りオペレーションでメモリ ティアに移動します。行データがすでにインメモリ ティアにある場合、アプリ プロファイルからの書き込みオペレーションはメモリ ティアを更新します。
- エビクションと無効化のポリシー: メモリ内階層では、行レベルで Least Recently Used(LRU)エビクションと 15 分の有効期間(TTL)無効化ポリシーが使用されます。
- ネガティブ キャッシュ保存: バックエンドの過負荷を防ぐため、リソースが欠落しているかどうかを一定期間メモリ内階層で記憶します。
- セキュリティ: インメモリ ティアは、保存データの暗号化と転送時の暗号化(TLS)をサポートしています。
- レプリケーション: マルチクラスタ インスタンスでは、異なるクラスタのメモリ階層が同期されません。各メモリ階層は、受信した読み取りトラフィックに基づいてメモリに読み込むデータを個別に決定するため、クラスタごとにメモリ階層に異なる行キーが保持される可能性があります。Bigtable は、ローカル クラスタの SSD 階層からメモリにデータを読み込みます。行への書き込みは、最終的に、その行が存在するすべてのメモリ階層で更新されます。これは、結果整合性の標準的な Bigtable レプリケーション モデルに従っています。
- 垂直自動スケーリング: インメモリ ティアは、Bigtable 自動スケーリングと連携するノードレベルの垂直自動スケーリングをサポートしています。
インメモリ ティアは、現在のデータへの高パフォーマンス アクセス用に最適化されています。このパフォーマンスを維持するため、行の最新のタイムスタンプ付きバージョンのみがメモリ階層に存在します。以前のバージョンのデータ(履歴セルとも呼ばれます)に対するリクエストは、メモリ階層を自動的にバイパスし、永続ストレージから提供されます。
データのコヒーレンス
Bigtable は、インメモリ ティアのデータが SSD または低頻度アクセス ストレージ ティアの永続データと整合性を保つようにします。このハイブリッド アーキテクチャにより、Bigtable はすべてのストレージ階層で一貫したストレージ モデルを提供できます。これにより、データが物理的に RAM に存在するか永続ストレージに存在するかに関係なく、同じセマンティック インターフェースを介してデータにアクセスできます。Bigtable インメモリ ティアを有効にすると、クラスタレベルで書き込み後読み取りの一貫性が維持されます。
垂直方向のスケーリング
インメモリ ティアを有効にすると、各ノードは垂直方向のスケーリングを使用して、インメモリ ティアのスループット容量を変更できます。各ノードには、インメモリ ティア用の 8 GB の RAM が含まれており、ベース容量は 1 秒あたり 40,000 回の読み取りで始まります。ポイント読み取りトラフィックの急増を管理するために、ノードは 1 秒あたり 40,000 回の読み取り単位で自動的にスケールインし、ノードあたり 1 秒あたり最大 120,000 回の読み取りまでスケールインできます。
この垂直スケーリング機能は、Bigtable の自動スケーリングと統合されています。クラスタ内のすべてのノードでインメモリ ティアの最大容量に達し、自動スケーリングが有効になっている場合、Bigtable は追加のノードを自動的にプロビジョニングして、インメモリ ティアのスループットをさらに向上させます。
ノードの垂直スケーリングは、インメモリ ティアの 1 秒あたりの読み取りにのみ適用され、クラスタレベルの自動スケーリングが有効になっているかどうかに関係なく機能します。ベースの 1 秒あたり 40,000 回の読み取りを超える垂直スケーリングは、ノードの時間あたりの費用に乗数を適用して課金されます。詳細については、料金と上限をご覧ください。
制限事項
インメモリ ティアには次の制限が適用されます。
- インメモリ ティアには SSD ストレージが必要です。
- インメモリ階層は、単一行レベルのポイント読み取りオペレーションのみをサポートします。
- インメモリ ティアは、データ スキャンを提供せず、SQL クエリをサポートしていません。
- インメモリ ティアのアプリ プロファイルは、単一クラスタのルーティングのみをサポートします。
- インメモリ ティアでは、行サイズは行キーあたり 1 MiB に制限されます。Bigtable は、この上限を超える行を永続ストレージから読み取ります。
- インメモリ階層には、Java 用 Bigtable クライアント ライブラリ バージョン 2.77.0 以降、または BOM バージョン 26.80.0 以降が必要です。他のクライアント ライブラリはサポートされていません。
- 顧客管理の暗号鍵(CMEK)クラスタは、インメモリ ティアをサポートしていません。
次のステップ
- インメモリ ティアを有効にする方法を確認する