Next'25 速報 - Use the power of AI to migrate your SQL Server databases
はじめに
現在ラスベガスで開催されている Google Cloud の旗艦イベント「Google Cloud NEXT'25(以下、Next'25)」に現地参加中の Shanks / kazz / 小堀内 / 岸本 です。
Next'25 で発表された 最新情報 を現地からお届けしています!
本記事では、多くの企業で課題となっているレガシーな SQL Server データベースから、クラウドネイティブな PostgreSQL へと移行する「データベースモダナイゼーション」に焦点を当てます。
このセッションでは、Google Cloud のデータベース移行サービス (DMS) と、最新の AI 技術である Gemini が、この複雑な移行プロセスをどのように簡素化し、加速させるかについて、Google Cloud のエキスパートである Kerry Osborne 氏、Erez Alsheich 氏 によって解説されました。
主要ポイント
このセッションで特に重要だったポイントは以下の通りです。
-
DMS による包括的な移行支援
- DMS は、SQL Server から PostgreSQL へのスキーマ変換、コード変換、データ移行までを一気通貫でサポートするマネージドサービスです。
-
Gemini による変換の自動化と精度向上
- 従来の決定論的な変換エンジンに加え、Gemini を活用することで、変換できなかったコードの修正提案や、より自然なコードへの変換が可能になり、手作業を大幅に削減します。
-
Gemini による開発者の学習支援
- 変換されたコードのロジック説明、パフォーマンスチューニングの提案、コードへのコメント自動生成など、Gemini は PostgreSQL に不慣れな開発者の学習と移行作業を強力にサポートします。
-
CDC による低ダウンタイム移行
- 変更データキャプチャ (CDC) 技術を利用し、初期データロード後も継続的に変更を同期することで、本番環境への影響を最小限に抑えた移行を実現します。
技術詳細
DMS
DMS (Database Migration Service) は、Google Cloud へのデータベース移行を支援するフルマネージドサービスです。
主に 2 つの移行タイプをサポートしています。
-
同タイプの移行
- MySQL から Cloud SQL for MySQL へ、PostgreSQL から Cloud SQL for PostgreSQL へ、といった同じ種類のデータベース間の移行です。比較的シンプルで、主にデータ移動が中心となります。
-
異種移行
- 今回の主題である SQL Server から PostgreSQL (Cloud SQL or AlloyDB) への移行のように、異なる種類のデータベース間での移行です。スキーマ、データ型、ストアドプロシージャなどのコード変換が必要となり、より複雑になります。
DMS はこれらの移行を、サーバーレス、安全、スケーラブル、そして使いやすいインターフェースで実現します。
スキーマとコード変換: 決定論的エンジン + Gemini の力
異種移行における最大の難関は、スキーマとコード(特に T-SQL のストアドプロシージャなど)の変換です。
T-SQL (Transact SQL) について
DMS はこの課題に対し、2 つのエンジンを組み合わせた革新的なアプローチを採用しています。
-
決定論的 (Deterministic) アルゴリズムエンジン
- 既知の変換ルールに基づき、SQL Server のスキーマや T-SQL コードを PostgreSQL の構文に自動変換します。
- データ型のマッピング(例:
VARCHAR
->TEXT
)などはカスタマイズ可能です。 - 変換可能なものは高速かつ正確に処理されますが、複雑なカスタムコードや特定のパターンには対応できない場合があります。
-
Gemini による支援
- 決定論的アルゴリズムエンジンが変換できなかった箇所や、より自然な PostgreSQL コードへの改善が必要な場合に Gemini が活用されます。
- DMS は単にコードを Gemini に投げるのではなく、洗練されたプロンプトエンジニアリング を行います。「この T-SQL コードのこの部分が決定論的エンジンで変換できなかったので、PostgreSQL のこの機能を使って修正してください」といった具体的な指示を与えます。
Gemini アシスタント: 開発者の学習と作業を加速
DMS はコード変換だけでなく、Gemini を活用して開発者の移行作業と学習を多角的に支援します。
-
変換ロジックの説明
- 「なぜこの T-SQL がこのように PostgreSQL コードに変換されたのか?」という疑問に対し、Gemini が SQL Server と PostgreSQL の構文の違い、使用された関数や機能、変換の理由などを自然言語で詳しく説明します。
- これにより、PostgreSQL に不慣れな開発者でも、変換後のコードを理解し、レビューや保守を行うスキルを迅速に習得できます。まるで、そのコード専用のカスタマイズされたトレーニングを受けているかのようです。
-
コードの最適化
- Gemini に変換後の PostgreSQL コードを分析させ、パフォーマンス改善の提案を受けることができます。
- 非効率なクエリの書き換え、冗長なコードの削除などを提案し、その理由も説明してくれるため、レビューして適用するかどうかを判断できます。
-
コードへのコメント追加
- ドキュメントが不足しているコードに対し、Gemini がビジネスロジックや機能レベルでの説明コメントを自動生成します。「A が 5 より大きいかチェック」のような表層的なものではなく、「注文金額が割引適用条件を満たすか確認」といった、意図を汲んだコメント を生成してくれるため、コードの可読性と保守性が向上します。
これらの機能により、開発者は単に変換されたコードを受け取るだけでなく、その内容を深く理解し、より品質の高いコードを効率的に作成できるようになります。
データ移行: CDC でダウンタイムを最小化
スキーマとコードの準備ができたら、次はデータの移行です。DMS はここでもダウンタイムを最小限に抑える工夫をしています。
- 初期ロード (Full Dump / Initial Load): まず、既存のデータを SQL Server から PostgreSQL へ一括でコピーします。DMS は高いスループットで並列処理を行い、データ型の変換も自動で行います。
- 変更データキャプチャ (Change Data Capture - CDC): 初期ロード中も、本番の SQL Server で発生するデータの変更(INSERT, UPDATE, DELETE)を SQL Server ネイティブの CDC 機能を利用して捕捉し続けます。 初期ロード完了後、捕捉した変更データを PostgreSQL 側に継続的に適用していきます。
- プロモーション : 移行先の PostgreSQL が本番環境とほぼリアルタイムで同期された状態になったら、アプリケーションを短時間停止し、接続先を PostgreSQL に切り替え、移行を完了(プロモート)します。
この CDC を利用したアプローチにより、移行作業中も本番システムを稼働させ続けることができ、ビジネスへの影響を最小限に抑えることが可能です。
移行プロセス全体像と関連ツール
DMS を中心とした移行プロセスは、一般的に以下のフェーズで進められます。
- アセスメント: 移行対象のデータベースの複雑性(コード量、特殊な機能の使用状況など)を評価し、移行にかかる工数を見積もります。Google Cloud の Black Belt チーム などが支援を提供します。
- 計画: アセスメント結果に基づき、移行の優先順位付けやウェーブプランニング(段階的な移行計画)を行います。
- スキーマ/コード変換: DMS の決定論的エンジンと Gemini を活用して変換とリファクタリングを行います。
- データ移行: DMS を使用して初期ロードと CDC を実行します。
- (オプション) アプリケーション層の変換: アプリケーションコード (Java, .NET など) に埋め込まれた SQL を変換する必要がある場合、CodeETR というツール(将来的には DMS に統合予定)が利用できる可能性があります。これも DMS と同様の変換エンジンと Gemini を利用します。
- テストと最適化: 変換後のコードが正しく動作し、期待通りのパフォーマンスを発揮するかをテスト・検証します。ここでも自動テストツールの活用などが検討されています。
まとめ
Next'25 で発表された DMS と Gemini の連携は、SQL Server から PostgreSQL へのデータベースモダナイゼーションを劇的に加速させる可能性を秘めています。
日本のエンタープライズ環境においても、SQL Server で稼働しているシステムは数多く存在します。
これらのシステムをクラウドネイティブな PostgreSQL へ移行することは、コスト削減、パフォーマンス向上、将来的なスケーラビリティ確保の観点から非常に有益です。
DMS と Gemini は、この困難な移行を強力にサポートしてくれるでしょう。
ぜひ、皆さんのプロジェクトでも DMS と Gemini の活用を検討してみてはいかがでしょうか。
Discussion