インメモリ ティアの概要

インメモリ ティアは、特殊なノードを使用するクラスタレベルの設定です。このページを読む前に、インスタンス、クラスタ、ノードについて理解しておいてください。制限事項についてもよく理解しておくことをおすすめします。

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)クラスタは、インメモリ ティアをサポートしていません。

次のステップ