インメモリ階層の概要
インメモリ ティアは、特殊なノードを使用するクラスタレベルの設定です。このページを読む前に、インスタンス、クラスタ、ノードについて理解しておいてください。制限事項についてもよく理解しておくことをおすすめします。
Bigtable インメモリは、Bigtable ノードの一部として統合されたメモリ階層です。単一の API を介して、アクセス パターンとパフォーマンスのニーズに基づいて、シームレスで費用対効果の高いデータ階層化を実現します。リモート ダイレクト メモリ アクセス(RDMA)を使用する Bigtable インメモリ ティアでは、応答時間が大幅に短縮され、ホットスポットが軽減されるため、レイテンシの影響を受けやすいデータに対しても高スループットを確保できます。詳細については、パフォーマンスについてをご覧ください。
インメモリを使用する場面
次のユースケースでは、インメモリ ティアを有効にすることをおすすめします。
- ミリ秒未満のレイテンシ要件: 1 ミリ秒未満の読み取りレイテンシを必要とするワークロード。通常、セルフマネージド キャッシュ ソリューションでデータベースをフロントエンドに配置することで対応します。
- 高スループットのポイント読み取り: 特定のデータ サブセットで読み取りトラフィックのスループット要件が高いアプリケーション。
- ホットスポットの軽減: トラフィックの急増や特定の行キーのホットスポットが含まれる可能性のある高スループットのワークロード。
- 費用の最適化: 読み取り量の多いデータを費用対効果の高いインメモリ ティアにオフロードして、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)クラスタはインメモリをサポートしていません。
次のステップ
- インメモリ ティアを有効にする方法を確認する