トレジャーデータ(Treasure Data)ブログ

トレジャーデータ(Treasure Data)ブログです。

本サイトは移転しました。新サイトにリダイレクトします。

(新機能)「Data Connector for MySQL」がトレジャーデータへの定時バルクロードをクライアントレスで実現

本記事は移転しました。新サイトにリダイレクトします。

はじめに

トレジャーデータはクラウドでデータマネージメントサービスを提供しています。従来トレジャーデータのバルクインポート機能は「Client to Server」型で,別のサーバー上にあるデータをクライアントにいったん戻してアップロードするというものでした。

f:id:doryokujin:20150626104849p:plain

もちろんこれ自身とても便利な機能でしたが,サーバー上のあちこちに散在する様々なデータソースを一元的に管理でき,さらにクライアント側の処理を大幅に軽減することができれば,それは従来に比べると「革命」と呼べるくらいに強いインパクトとなります。

Data Connecter が「Server to Server」型のデータバルクロードを実現

トレジャーデータが提供する「Data Connector」は,クライアント側の処理をトレジャーデータがホスティングすることによって「Server to Server」型のバルクロードを可能にします。

前回紹介した Amazon S3 からのバルクロードに加えて,今回新たに My SQL からのバルクロードが可能になりました。

f:id:doryokujin:20150622110236p:plain

Data Connecter は,インプットソースの設定情報を Embulk プラグインで管理することによって,Amazon S3 / MySQL に限らずあらゆるインプットソースに対応します。

Data Connector for MySQL

今回新たに MySQL 向けの Data Connector を用意することとなりました。これによって従来 MySQL からのデータインポート方法であった

  1. SQLクエリ実行
  2. クライアントサイドに CSV 保存
  3. バルクインポートでトレジャーデータにアップロード
  4. インポート完了まで監視
  5. デイリーでバッチ処理する場合などは一連のコマンドスクリプトをCronに設定(毎日確実に実行できているか監視)

の手順が以下のように大幅に省略されることになります。

f:id:doryokujin:20150626105715p:plain

1. Create Seed Config File (seed.yml)

まず,seed.yaml にMySQLの接続情報および取得クエリを設定します。

2. Guess Fields (Generate load.yml)

次に seed.yml をロードし,設定情報に基づくテーブル情報 load.yml を取得します。このload.yml には取得してくるテーブル項目およびそれらの型を類推(Guess)してくれます。

3. Execute Load Job

さあ,これで準備は整いました。あとは以下のコマンドを実行するだけです。

コマンド実行後はバルクロード完了まで待つ必要はありません。記載された Job ID でサーバー上で処理が行われておりますので,後ほどコンソールよりその Job ID で状況の確認ができます。

4. Scheduling

Amazon S3に比べてデータの更新頻度の多いMySQLでは,日次や週時でバルクロードを行う必要があります。このスケジューリングに関しても,Data Connecter でCron Likeに管理運用することが可能になります。

スケジューリングは load.yml 単位で設定可能です。

設定したスケジュールはリストコマンドで一覧できます。

前述しましたが,このバルクロードもバックエンドでは Map Reduce を行っています。よって実行ヒストリーは1つのジョブとして Job ID を持ち,普段の集計クエリ同等にjob内容のチェックが可能になります。

 

トレジャーデータブログでは,今後新しい Data Connecter がリリースされる際にはその方法を含めてご紹介していく予定です。ご期待下さい。