Migrate は、外部ソースのデータを Drupal に取り込む仕組みと API を提供するモジュール。Drupal 8 からコアの一部となり、標準のデータ移行手段として広く使われている。
先日、Drupal 6 で構築したブログサイトの記事データを Drupal 9 に移行することがあり、ちょうど良い機会なので使ってみることにした。まずは、Migrate の概要を整理しておく。
Migrate は Drupal の ETL ツール
Migrate は Drupal の ETL ツールと見なすことができる。ETL とは、Extract(抽出) Transform(変換) Load(格納) の頭文字をとったもので、データ統合に必要な3つの処理を指す。
Migrate では、この3つの処理をそれぞれ source、process、destination という用語で表し、それぞれの処理をプラグイン(共通の外部仕様に基づく差し替え可能なソフトウェア)として実装する構造になっている。
Migrate モジュールは、ETL を実行する全体の枠組みと、特定の目的に応じた機能を source、process、destination の各パートにプラグインとして組み込むための API を提供する。
ETL を実装するプラグイン
ETL を実装する各プラグインは、コアに含まれる Migrate モジュールのほか、追加の拡張(contributed)モジュールによって提供される。
source プラグイン
入力データの抽出機能を提供する。データを取得する対象に応じて固有のプラグインが実装される。旧バージョンの Drupal データベースからデータを抽出するものや、さまざまなデータソースに対応したものが存在する。
process プラグイン
process プラグインは、source プラグインが抽出したデータを変換する処理要素を提供する。単純な値の格納をはじめ、データの連結、配列の展開、反復処理など、コアだけでもさまざまなプラグインが提供されている。
destination プラグイン
destination プラグインは、process プラグインの変換結果を Drupal のエンティティとしてデータベースに格納する役割を果たす。ノード、ユーザー、タクソノミーターム、コメント、ファイルといったコンテンツのエンティティだけでなく、構成設定のエンティティとして格納するプラグインもある。
ETL の各パートそれぞれに対応するプラグインを組み合わせて全体の処理を組み立てる仕組みにより、多様なデータソースから抽出したデータを自在に変換し、その結果を Drupal システムのエンティティとして取り込むことができる。
参考資料: