階層型ストレージの概要

このページでは、Spanner で階層ストレージがどのように機能するかについて説明します。この機能は、GoogleSQL 言語データベースと PostgreSQL 言語データベースの両方でサポートされています。

Spanner 階層ストレージは、データをソリッド ステート ドライブ(SSD)とハードディスク ドライブ(HDD)のどちらに保存するかを選択できる、完全マネージド ストレージ機能です。デフォルトでは、階層ストレージを使用していない場合は、データは SSD ストレージに保存されます。データの使用頻度やアクセス頻度に応じて、階層ストレージを使用して、SSD ストレージと HDD ストレージの両方にデータを保存することを検討してください。

  • SSD ストレージは、ほとんどのユースケースで最もパフォーマンスが高く(秒間クエリ数が多い)、費用対効果に優れています。書き込みと読み取りのスループットが高く、低レイテンシのデータアクセスを必要とするアクティブ データを保存するために使用する必要があります。
  • HDD ストレージは、レイテンシの影響を受けない大規模なデータセットや、アクセス頻度の低いデータセット、ストレージの費用が重要な考慮事項である場合に適しています。

階層ストレージを使用すると、アクティブ データの高パフォーマンスをサポートする SSD ストレージと、低コストでデータアクセス頻度が低い HDD ストレージの両方を活用できます。

SSD ストレージと HDD ストレージのいずれかを選択する

次の表に、SSD ストレージと HDD ストレージの違いと類似点を示します。判断に迷った場合は、SSD ストレージを選択することをおすすめします。

SSD ストレージ HDD ストレージ
対象のユースケース 書き込みと読み取りのスループットが高く、低レイテンシのデータアクセスが必要なデータ レイテンシの影響を受けにくい大規模なデータセット、またはアクセス頻度の低いデータセット
ノードあたりの予想スループット
リージョン構成
最大 3,500 QPS の書き込み
最大 22,500 QPS の読み取り
最大 3,500 QPS の書き込み
最大 1,500 QPS の読み取り
ノードあたりの予想スループット
デュアルリージョン構成とマルチリージョン構成
最大 2,700 QPS の書き込み
最大 15,000 QPS の読み取り
最大 3,500 QPS の書き込み
最大 1,000 QPS の読み取り
サポートされているオペレーション 読み取り、書き込み、更新、削除 読み取り、書き込み、更新、削除

利点

階層型ストレージを使用すると、SSD ストレージと HDD ストレージの両方を使用できるため、次のようなメリットがあります。

  • 総所有コストの大幅な削減: HDD ストレージは、レイテンシの影響を受けにくい大規模なデータセットや、アクセス頻度の低いデータセットに低コストのオプションを提供します。
  • 管理の容易さ: 追加のパイプラインと分割ロジックの複雑さのないフルマネージド ティアリング サービスを提供します。
  • 統合された一貫性のあるエクスペリエンス: ホットデータと(変更可能な)コールドデータにわたる統合されたデータアクセスと単一のメトリックセットを提供します。
  • パフォーマンスの向上: データを異なるロカリティ グループに整理することで、クエリのパフォーマンスが向上します。これにより、列間でデータのロカリティと分離が実現されます。同じロカリティ グループ内のデータは物理的に近くに保存されます。

階層型ストレージの仕組み

デフォルトでは、新しいインスタンスを作成すると、データは SSD ストレージにのみ保存されます。同様に、既存のインスタンスのデータも SSD ストレージにのみ保存されます。

階層型ストレージを使用して一部のデータを HDD ストレージに保存する場合は、ローカリティ グループを作成する必要があります。これは、スキーマ内のデータの階層型ストレージ ポリシーの定義に使用されます。ロカリティ グループを作成するときに、ストレージ タイプ(ssd または hdd)を定義できます。必要に応じて、HDD ストレージに移動する前に SSD ストレージにデータを保存する時間を定義することもできます。指定された時間が経過すると、Spanner は通常の圧縮サイクル中にデータを HDD ストレージに移行します。通常、このサイクルは指定された時間から 7 日以内に行われます。これは、保存期間ベースの階層型ストレージ ポリシーと呼ばれます。存続期間ベースの階層ストレージ ポリシーを使用する場合、HDD ストレージに移動する前に SSD に保存する必要があるデータの最小時間は 1 時間です。

ロカリティ グループを定義したら、テーブルを作成するときに、データベース、テーブル、列、またはセカンダリ インデックス レベルで階層型ストレージ ポリシーを設定できます。階層型ストレージ ポリシーは、データの保存方法と保存場所を決定します。手順については、ロカリティ グループの作成と管理をご覧ください。

バックアップと復元

Spanner バックアップを使用してデータをバックアップおよび復元できます。バックアップには、各ローカリティ グループのストレージ タイプを指定する INFORMATION_SCHEMA.LOCALITY_GROUP_OPTIONS など、すべてのストレージ スキーマ情報が含まれています。ローカリティ グループを含むバックアップを新しいインスタンスに復元するには、移行先のインスタンスが Spanner Enterprise エディションまたは Spanner Enterprise Plus エディションである必要があります。

Data Boost

Spanner Data Boost を使用して、SSD または HDD ストレージ上のデータにアクセスできます。HDD ストレージ上のデータに対してクエリを実行すると、I/O オペレーションが増加するため、コストが増加します。詳細は、料金をご覧ください。

検索インデックス

全文検索ベクトル インデックスは、データベース オブジェクトに設定されているローカリティ グループを継承します。

オブザーバビリティ

階層ストレージには、次のオブザーバビリティ機能があります。

Cloud Monitoring の指標

Spanner には、Cloud Monitoring を使用して階層ストレージの使用状況とデータをモニタリングするために次の指標が用意されています。

  • spanner.googleapis.com/instance/storage/used_bytes(合計ストレージ): SSD ストレージと HDD ストレージに保存されているデータの合計バイト数が表示されます。Google Cloud コンソールの Spanner インスタンスとデータベースの [システム分析情報] ページには、この指標の [ストレージ タイプ] のプルダウン メニューがあります。プルダウンを使用して、すべてHDD のみ、SSD のみのストレージに保存されているデータの合計バイト数を表示します。
  • spanner.googleapis.com/instance/storage/combined/limit_bytes: SSD と HDD のストレージの合計上限が表示されます。
  • spanner.googleapis.com/instance/storage/combined/limit_bytes_per_processing_unit: 各処理ユニットの SSD と HDD のストレージの合計上限が表示されます。
  • spanner.googleapis.com/instance/storage/combined/utilization: SSD と HDD の合計ストレージ使用率と、合計ストレージの上限を比較して表示します。
  • spanner.googleapis.com/instance/disk_load: HDD の使用率(パーセント)が表示されます。インスタンスのディスク負荷が 100% に達すると、レイテンシが大幅に増加します。

既存の指標を storage_class:ssd でフィルタする既存のクエリがある場合は、HDD の使用量を表示するためにフィルタを削除する必要があります。

Spanner リソースのモニタリングの詳細については、システム分析情報を使用してインスタンスをモニタリングするCloud Monitoring を使用してインスタンスをモニタリングするをご覧ください。

情報スキーマ

INFORMATION_SCHEMA.LOCALITY_GROUP_OPTIONS には、Spanner データベース内のローカリティ グループとオプションのリストが含まれています。これには、default ローカリティ グループの情報が含まれます。詳細については、GoogleSQL 言語データベースの locality_group_optionsPostgreSQL 言語データベースの locality_group_options をご覧ください。

組み込みの統計テーブル

階層ストレージを使用するデータベースでは、次の組み込み統計情報テーブルを使用できます。

  • SPANNER_SYS.TABLE_SIZES_STATS_1HOUR: データベース内の各テーブルの HDD と SSD のストレージ使用量が表示されます。
  • SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR: データベース内の各ロカリティ グループの HDD と SSD のストレージ使用量が表示されます。

詳細については、テーブルサイズの統計情報クエリ統計情報をご覧ください。

料金

階層ストレージの使用に追加料金はかかりません。インスタンスで使用されるコンピューティング容量とデータベースで使用されるストレージの量に対して、標準の Spanner 料金が請求されます。SSD と HDD に保存されているデータは、それぞれのストレージ料金で課金されます。SSD ストレージと HDD ストレージ間でデータを移動しても料金は発生しません。詳細については、Spanner の料金をご覧ください。

次のステップ