Google CloudがBigQueryからAlloyDBへのエクスポートのGAを発表、BigQuery日本語版ページはプレビュー表示
公開:
Google Cloudは、BigQueryからAlloyDBへのエクスポートの一般提供(GA)を発表しました。BigQueryからAlloyDBへのエクスポートは、データエンジニアリングチームが1つの宣言的なSQL文でデータを書き出せる機能です。[1]
この記事では、BigQueryからAlloyDBへのエクスポートでできることと、使い始める前に確認する条件を解説します。分析システム(OLAP)とトランザクションデータベース(OLTP)の間でデータを同期する処理は、しばしばリバースETLと呼ばれます。
目次
BigQueryからAlloyDBへの直接エクスポート
BigQueryからAlloyDBへのエクスポートでは、BigQueryが最適化された並列の接続でAlloyDBインスタンスと直接やり取りします。Cloud Storageの中間ファイルやgCloudスクリプト、一時テーブルの管理は要りません。[1]
Copelの従来の処理
Copelは従来、Managed Service for Apache Airflowの複雑なDAGでリバースETLを制御していました。BigQueryからAlloyDBへ数億件のレコードを加工して書き出す過程は、壊れやすい中間段階を複数含むものでした。
Apache Airflowは、本番テーブルの書き込みロックやデータ破損を防ぐため、SQLでAlloyDBに一時テーブルを作成していました。最後に、SQLのトランザクションブロックが本番テーブルを安全に削除し、一時テーブルを本番の名前に変える手順でした。
Copelのチームは、パイプラインの保守やファイルのステージングの慎重な管理を担っていました。複数サービスにまたがる複雑なIAMの権限借用や、システム全体の健全性の常時監視も必要でした。
Copelの置き換え後の処理
Copelは、従来の多段階の処理を1つのSQL文に置き換えました。数十行の複雑なスクリプトと独自のエラー処理を削除し、Airflow DAGは1つのBigQueryInsertJobOperatorタスクだけになりました。
Copelは、高性能な組み込みのリバースETLへ移行し、大規模なオーケストレーションのボトルネックを解消しています。スマートメーターのテレメトリーも、移行によって規模を拡大しました。
Google Cloudが挙げる4利点
Google Cloudは、1つの宣言的なSQL文による方法で、複雑なETLミドルウェアが完全に不要になるとしています。同社が挙げる組み込みのエクスポート方式の利点は、次の4点です。
Copelの全件エクスポート(Test 2)では、N2(16 vCPUs、128 GB RAM)のAlloyDBへ207,484,577行を書き出しました。エクスポートの処理量は、毎分約420万行でした。
BigQueryからAlloyDBへのエクスポート手順
Copelのコード例は、一般提供(GA)の機能でhourly_metricsをTO_JSONでJSONBに変換する構成です。Google Cloudは、値がエクスポート時にAlloyDBの列へ完全に対応付けられ、入れ子の構造もPostgreSQL側でクエリやインデックスの対象にできるとしています。[1]
プレビューの機能では、BigQueryのEXPORT DATA文でBigQueryテーブルからAlloyDBテーブルへデータをエクスポートできます。エクスポート前にクエリでデータの処理や絞り込みも可能です。[2]
このエクスポート(プレビュー)では、宛先のデータベースとスキーマ、テーブルを含むAlloyDBクラスタと、READY状態のPRIMARYインスタンスを事前に用意します。AlloyDBへのBigQuery接続はユーザー名とパスワード認証のみで作成し、データベースユーザーに宛先テーブルのINSERTと宛先スキーマのUSAGEの権限が必要です。
必要なIAMロールの確認
BigQuery側の各ロールはプロジェクトに、AlloyDBクライアントは接続サービスアカウントに付与します。カスタムロールやほかの事前定義ロールでも権限を得られます。
プレビューのEXPORT DATA文
プレビュー表示の機能では、alloydb_optionsのJSON文字列で宛先を指定します。宛先のスキーマやテーブル、最大接続数を指定でき、必須はtableだけです。
次のプレビュー表示の例は、mydataset.table1から選んだフィールドをAlloyDBのmy_target_tableへエクスポートします。
EXPORT DATA
WITH CONNECTION `myproject.us-central1.my-alloydb-conn`
OPTIONS (
format='ALLOYDB',
uri="https://alloydb.googleapis.com/v1/projects/myproject/locations/us-central1/clusters/my-cluster/instances/my-instance",
alloydb_options="""{
"schema": "public",
"table": "my_target_table"
}"""
)
AS SELECT
col1 AS id,
col2 AS name,
col3 AS value
FROM
`mydataset.table1`;
公式資料からの抜粋:AlloyDB にデータをエクスポートする(リバース ETL)(データのエクスポート)。対象版・範囲:BigQuery日本語版ページ(最終更新日2026-11-11 UTC、プレビュー表示の機能)。
上記のコード(プレビュー)では、formatにALLOYDBを指定し、uriで宛先のAlloyDBインスタンスを示しています。SELECT文の各列には、宛先テーブルの列名と一致する別名が必要です。
AlloyDBへのエクスポートの利用条件
BigQueryからAlloyDBへのエクスポートは一般提供と発表されましたが、最終更新日2026-11-11 UTCのBigQuery日本語版ページはプレビュー表示です。本番環境で使う場合は、一般提供前のサービス規約の対象かどうかを含め、適用される提供状態を事前に確かめます。[1][2]
プレビュー版のAlloyDBへのエクスポートでは、BigQuery Standardエディションとオンデマンドコンピューティングは対象外です。QUERYの割り当てがあるBigQuery EnterpriseかEnterprise Plusの予約が必要です。
リージョンの組み合わせ
プレビュー版では、単一リージョンのBigQueryデータセットとAlloyDBインスタンスを、まったく同じGoogle Cloudリージョンに置く必要があります。USマルチリージョンのデータセットはus-central1、EUマルチリージョンはeurope-west4のAlloyDBインスタンスにだけ書き出せます。
上記以外の組み合わせのクロスリージョンエクスポートは、サポートされていません。プレビューと表示された機能で日本のリージョンのBigQueryデータセットを書き出す場合は、AlloyDBインスタンスも同じリージョンに置く構成を前提に計画します。
書き込みに関する制限
プレビュー版のAlloyDBへのエクスポートはバッチエクスポート専用で、継続的クエリでは使えません。ほかの制限は次のとおりです。
プレビュー機能の制限
プレビューと表示された機能では、宛先テーブルへのPRIMARY KEY制約かUNIQUE制約の定義が推奨対象です。同機能では、抽出ジョブなどのBigQueryジョブは最大6時間で、非常に大規模なエクスポートは複数の小さなジョブへの分割が推奨されます。
エクスポートにかかる料金
EXPORT DATA文によるAlloyDBへのエクスポート(プレビュー)に適用されるのは、BigQuery容量コンピューティングの料金です。書き出したデータをAlloyDBに保存すると、AlloyDB for PostgreSQLの料金も発生します。
プレビューのAlloyDBへのエクスポートと同期の選択
AlloyDBへのエクスポートのGAが発表された一方、日本語版ページのEXPORT DATA文とテーブルの同期はプレビュー表示です。テーブルの同期は、SQLによる変換が要らないテーブル全体のコピーや自動ミラーリングに使えます。[1][2]
プレビューと表示された機能を使う場合、クエリで加工や絞り込みをしてから既存のテーブルへ行を追加したいときの候補は、EXPORT DATA文です。BigQueryのテーブルを読み取り専用の表として定期的に映したいときは、定期的な同期(ミラーリング)が候補です。
編集部は、プレビューと表示された機能のEXPORT DATA文で同じデータを繰り返し書き出す場合に、宛先テーブルの制約と同時実行の扱いを先に決めることを提案します。決める内容は、宛先のAlloyDBテーブルのPRIMARY KEY制約かUNIQUE制約と、同じ宛先テーブルへのEXPORT DATAジョブを同時に実行しない運用です。
出典
- ^ Google Cloud. 「From OLAP to OLTP: How Copel Simplified Reverse ETL Using BigQuery's Native Export to AlloyDB」. https://cloud.google.com/blog/products/data-analytics/reverse-etl-bigquery-exports-to-alloydb, (参照 26-11-13).
- ^ Google Cloud. 「AlloyDB にデータをエクスポートする(リバース ETL)」. https://docs.cloud.google.com/bigquery/docs/export-to-alloydb?hl=ja, (参照 26-11-14).
※本記事は公式の一次情報を基に編集しています。内容はAIで確認していますが、誤りや最新情報との差異がある場合は、以下フォームよりご報告ください。
修正・削除・掲載などの依頼はこちら


















