🧭

Spannerの保存から一定時間経過したデータをSSDからHDDに移行する

に公開

はじめに

Google CloudのSpannerはフルマネージドのリレーショナルデータベースサービスです。
今回はSpannerの学習のため、階層型ストレージ機能を使用してSSDからHDDにデータを移行する手順を実践してみました!

階層型ストレージ機能について

Spannerでは通常SSDにデータが保存されます。
階層型ストレージ機能を使用することでコールドデータをSpanner単体でHDDに保存・移行でき、ストレージコスト削減が見込めます。

https://cloud.google.com/spanner/docs/tiered-storage?hl=ja

コスト比較

asia-northeast1(東京)のシングルリージョンの場合ストレージコストを比較すると以下のようになっており、HDDに保存することで80%のコスト削減ができそうです。

ストレージタイプ 料金(1GB当たりの月額)
SSD $0.39
HDD $0.078

階層型ストレージ機能の実践

階層型ストレージ機能はローカリティグループを作成し、ストレージポリシーを設定することで利用できます。
ストレージポリシーには保存するストレージ(SSD/HDD)、時間経過(最小1時間)でSSD→HDDに転送するオプションを設定できます。

サンプル:SSDにデータを保存し、1時間経過後にHDDにデータを移行するローカリティグループ
CREATE LOCALITY GROUP spill_to_hdd_1day OPTIONS (storage = 'ssd', ssd_to_hdd_spill_timespan = '1h');

また、ローカリティグループはデータベースやテーブル単位だけでなく、列やセカンダリインデックスレベルでの紐付けが可能です。

Spannerの準備

初めに検証用のSpannerの準備を行います。
コンソールからSpannerのページに移動して、今回は以下の設定で試行してみます。

  1. エディション:Enterprise
  2. インスタンス情報
    • インスタンス名:demo-instance
    • インスタンスID:demo-instance
  3. 構成
    • リージョン:asia-northeast1(東京)
  4. コンピューティング容量
    • 単位:処理ユニット
    • スケーリングモード:手動で割り当てる
      • 数量:100
  5. データベース作成
    • データベース名:demo-db
    • データベース言語:Google 標準 SQL

ストレージポリシーの設定

インスタンス、データベースの設定が完了したら、ストレージポリシーを設定したローカリティグループを作成します。
今回はテーブル単位に登録から1日経過したデータSSD→HDDに移行する設定を適用します。

  1. ローカリティグループの作成
    • storage = 'ssd': デフォルトの保存先をSSDに設定
    • ssd_to_hdd_spill_timespan = '1d': 1日の経過でHDDへの移行対象に設定
    CREATE LOCALITY GROUP spill_to_hdd_1day OPTIONS (storage = 'ssd', ssd_to_hdd_spill_timespan = '1d');
    
  2. テーブル作成
    CREATE TABLE NewsDemo (
      NewsId STRING(36) NOT NULL,
      Description  STRING(MAX),
      AnnouncedTime   TIMESTAMP NOT NULL,
    ) PRIMARY KEY (NewsId), OPTIONS (locality_group = 'spill_to_hdd_1day');
    
  3. データ投入
    -- 1000件分のデータを登録(省略)
    INSERT INTO NewsDemo (NewsId, Description, AnnouncedTime) VALUES
      (GENERATE_UUID(), 'ニュース1', CURRENT_TIMESTAMP()),
      ...
    

データの移行確認

最後にデータが移行されていることを確認します。

移行が完了するのを待ち、Spannerの[オブザーバビリティ] > [ストレージ使用量] > [データの探索]を確認します。

ポリシーで設定したデータ登録から1日経過後に約6日ほどでSSDからHDDにデータが移行されていることが確認できました!

参考記事

レスキューナウテックブログ

Discussion