2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Cloud SQLの一部のデータを毎月保存しなさいと言われたら

Last updated at Posted at 2023-10-31

はじめに

仕事をしていると、Cloud SQLの中の一部のデータを毎月保存しておいてくれと言われるのは、稀に良くあると思います。

最初に思いついたアーキテクチャ

私が最初に思いついたのは、以下のようなアーキテクチャです。

  1. Cloud SQLのエクスポート機能(※1)を使い、必要な情報をCloud Storageに保存するスクリプトを作成
  2. 先ほどのスクリプトをCloud Functionsに登録
  3. Cloud Schedulerから先ほど作成したスクリプトを定期実行

※1
Cloud SQL for MySQL から CSV ファイルにデータをエクスポートする

世は大クラウド時代、一見難しそうな依頼もこんな簡単にできてしまうことに、感謝の念を禁じ得ません。
しかし、私は極度に怠惰な人間でございますので、上記のアーキテクチャでも「結構やりたくない」という感情の芽生えを抑えることができなかったのです。

最終的なアーキテクチャ

調査をしていたところ、とんでもない方法が見つかりました。

  1. BigQueryから、Federated QueriesでCloud SQLの情報を抽出し、EXPORT DATA関数を使ってCloud Storageに保存
  2. Big QueryのScheduled Queryを使い定期実行

完全に勝利しました。
Cloud Storageを作成し、あとはSQL一本書いて終わりです。
繰り返しますが、完全に勝利です。
全てのエンジニアに幸あれ。

EXPORT DATA
  OPTIONS(
    uri='gs://bucket/folder/*.csv',
    format='CSV',
    overwrite=true)
AS (
  SELECT
    *
  FROM
    EXTERNAL_QUERY('project-id.locations.connection-id',
      '''SELECT * FROM users LIMIT 10;''')
);

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?