こんにちは!Cloud Spannerの世界へようこそ。
私は日々、大規模なシステムと向き合っているエンジニアです。
「Cloud Spannerって名前はカッコいいけれど、なんだか難しそう……」
「データの引越し(エクスポートやインポート)って、失敗したらどうしよう?」
そんな風に不安を感じていませんか?大丈夫です。安心してください。今日は、Cloud Spannerのデータのお引越し方法について、専門用語をできるだけ使わずに、私と一緒に一つずつ紐解いていきましょう。
ここをクリアすれば、Cloud Spannerの基本はバッチリマスターできますよ!
—
1. そもそもCloud Spannerのデータ引越しって?
日常に置き換えて考えてみましょう。
あなたは今、世界中に何店舗もある巨大スーパーの「超優秀な店長」です。お店の中には、世界中から集まった膨大な商品データ(顧客情報や売上履歴)が綺麗に整理されています。
ある日、「この巨大な倉庫ごと、別の新しい土地(別のプロジェクトやバックアップ用)にそっくりそのまま引っ越したい!」と思いました。
普通のダンボールに詰めてトラックで運ぶ……なんてしていたら、途中で荷物が崩れたり、トラックがパンクしたりして大変ですよね。しかも、お店を開けたまま(システムを止めずに)引越しを完了させなければいけません。
そこで登場するのが、Dataflow(データフロー)という名の「超特急かつ超安全な自動引越し業者」です。これを使って、データを「Avro(アヴロ)」という世界共通の安全な梱包ボックスにつめて、スムーズに引越しを行うのが今回のテーマです。
—
2. データを外に持ち出す:エクスポートの仕組み
まずは、Cloud Spannerの中にある宝物を、安全に梱包して外の世界へ持ち出す「エクスポート」のやり方です。
イメージとしては、スパナークロウ(Spannerの保管庫)の中身を、シュレッダーにかけるのではなく、「誰でも読める特別な圧縮ファイル(Avro形式)」に綺麗に仕分けして、Google Cloudの物置(Cloud Storage)にしまう作業です。
実行の手順(Dataflowテンプレートの利用)
実は、私たちが一からプログラムを書く必要はありません。Googleさんが「引越し用の万能ロボット(Dataflowテンプレート)」をあらかじめ用意してくれています。
Google Cloudのコンソール画面(操作画面)から、次のようなイメージでポチポチと設定を行います。
[ Cloud Spanner のデータ ]
↓ (お引越しロボット:Dataflowが自動で集める)
[ Avro形式のファイル(段ボール箱) ]
↓
[ Cloud Storage(安全な物置)に保管! ]
実際に裏側で動いている(あるいはイメージする)コマンドの雰囲気を見てみましょう。
【エクスポートの実行イメージ】
「うちのSpannerデータベースのデータを、あの物置(GCS)にAvro形式でダンボール詰めして!」と指示を出します。
gcloud dataflow jobs run spanner-to-gcs-export \
–region=asia-northeast1 \
–gcs-location=gs://dataflow-templates-asia-northeast1/latest/Cloud_Spanner_To_GCS \
–parameters \
-instanceId=my-spanner-instance,\
-databaseId=my-database,\
-exportDir=gs://my-bucket-for-backup/export-folder/
> 先輩からのワンポイントアドバイス:
> エクスポート中も、Cloud Spannerはお店を開け続ける(=通常通りデータの読み書きができる)ことができます。これがSpannerのすごいところです!
—
3. データを新天地へ:インポートの仕組み
さて、次は物置(Cloud Storage)にしまったダンボール(Avroファイル)を、新しいCloud Spannerのデータベースに運び入れて、お店をオープンさせる「インポート」です。
これも引越し業者(Dataflow)にお願いします。
[ Cloud Storage(物置のダンボール) ]
↓ (引越しロボットがテキパキと荷解き)
[ 新しい Cloud Spanner のデータベース ]
↓
🎉 お店オープン!すぐに使い始められます
実行する際のイメージはこうです。
【インポートの実行イメージ】
「あの物置にあるダンボールを、新しく作ったSpannerのデータベースにきれいに並べて!」と指示を出します。
gcloud dataflow jobs run gcs-to-spanner-import \
–region=asia-northeast1 \
–gcs-location=gs://dataflow-templates-asia-northeast1/latest/GCS_To_Cloud_Spanner \
–parameters \
-instanceId=my-new-spanner-instance,\
-databaseId=my-new-database,\
-inputDir=gs://my-bucket-for-backup/export-folder/
これで、データの引っ越し作業は完了です。拍手!
—
4. 大規模データ移行時の「極上のベストプラクティス」
さて、ここからがプロの腕の見せ所です。
もし、あなたの扱うデータが「数テラバイト」を超えるような超巨大データだったらどうでしょう? 引越し業者(Dataflow)が途中で疲れてしまったり、道路が大渋滞(ネットワークの混雑)を起こしたりするかもしれません。
大規模データを安全かつ爆速で移行するための、シニアエンジニアからの秘伝のレシピを3つ授けましょう。
① リージョン(場所)は絶対に合わせる
Cloud Spannerのデータベース、データを入れる物置(Cloud Storage)、そして引越し作業をするDataflow。これらはすべて同じ地域(例: `asia-northeast1`=東京リージョンなど)にまとめてください。
違う国や遠い場所で行うと、データが海を渡るのに時間がかかり、引越し代(ネットワーク費用)も時間も余計にかかってしまいます。
② Dataflowの「働き手(ワーカー)」を適切に増やす
荷物が大量にあるのに、作業員が1人だったら何日かかるかわかりませんよね。Dataflowでは、作業員の人数(マシンの数)を自動、あるいは手動で増やすことができます。
大規模データなら、最初から少し多めの作業員を用意しておくことで、引越し時間を劇的に短縮できます。
③ 事前の「スキーマ(設計図)」の確認を怠らない
インポート先(引越し先)のSpannerには、あらかじめ「棚の形(テーブルの定義)」が正しく作られていなければなりません。ダンボール箱の中身と、新しいお店の棚の形が食い違っていると、ロボットはどこに荷物を置けばいいか分からずパニックになってしまいます。
必ず、引越し前にデータベースの設計図(スキーマ)を先に対象のSpannerに作成しておきましょう。
—
まとめ
いかがでしたか?
Cloud Spannerのエクスポートとインポートは、一見難しそうに見えますが、「専用のロボット(Dataflow)に、共通の段ボール(Avro)を使って荷造り・荷解きをしてもらう」という基本の仕組みさえ掴んでしまえば、怖くありません。
1. エクスポートで安全に物置へバックアップ。
2. インポートで新しい場所へスマートに展開。
3. 大規模なときは同じ地域で働き手を増やして高速化。
この3つを心に留めておけば、あなたももうCloud Spannerのデータ移行マスターです。
自信を持って、次のステップへ進んでいきましょう!応援しています!
コメント