WCAデータベースのMySQLへのインポートにはBigDumpを使うと高速で楽

ブログ初投稿の記事です.



はじめに

一部のスピードキューバの方々はWCAのDatabase exportを利用されていると思います. 近年の公式大会数の増大に伴って,データベースファイルが容易に扱いにくくなるレベルまでサイズが大きくなっています.(2014-11-14現在,sqlファイル約94.4MB)
エクスポートページではSQLファイルとTSVファイルが公開されていますが,これほど大きいサイズのデータを扱うとなると,TSVファイルを純粋なファイル関数やオレオレパーザで現実的な時間で操作することはほとんど不可能になってきています.
そこでSQLファイルを使用して,MySQL等のデータベースを使用するのが妥当でしょう.

公開されているSQLは差分をinsertするのではなく,テーブルをdropして1からデータを挿入するため,データ量が膨大になるにつれ,インポート時間が相当長くなるという問題があります.
さらに,php.iniでいろいろファイルサイズやタイムアウト値を制限されてると変更だったり面倒だし,レンタルサーバ等ではこれらの値を変更されることができずにインポートができないことも考えられます.
仮に変更できたとしても,phpMyAdmin等からインポートすると,1回でインポートしきれないため,途中から再開したりだとかとにかくいろいろ手間がかかりまくりです.

本記事は,BigDumpを使用すると,楽に,高速にインポートできるよ,というお話です.
データベースはMySQL前提です.

※サーバに直接ログインできる or ssh接続できる 等の環境であれば,mysqlコマンドからインポートできるので,本記事はVPS等ではなく共用のレンタルサーバでsshログインが許可されていない場合を想定しています.

導入

まず,BigDump公式サイトからbigdump.phpをダウンロードします.
(ちなみに2014-11-14現在 ver. 0.35b (beta) です.)

wcaexport-with-bigdump-1_1

bigdump.phpをWebからアクセスできる適当なディレクトリに配置します.
さらに,WCA results exportからダウンロードして解凍したWCA_export.sqlを同じディレクトリに置きます.

bigdump.phpを編集します.編集箇所を以下に列挙します.

  1. 46~48行目: データベース名,ユーザ名,パスワード
  2. 97行目: $max_query_linesの値

行数は現行バージョンのなので将来変わる可能性があります.
$max_query_linesの値はデフォルトの300ではエラーになりますので10000ぐらいに変更しておきます.
(ちなみに,WCAのSQLファイルは,行数は100万ぐらいありますが,SQL文は数百です.)

Webブラウザからbigdump.phpにアクセスします.
パスワード等が誤っていると以下の様な警告が表示されます.

wcaexport-with-bigdump-1_2

以下の画面のように,WCA_export.sqlがリストアップされていればOKです.

wcaexport-with-bigdump-1_4

“Start Import”リンクをクリックするとインポートが開始します.
プログレッシバーが表示されるので,退屈しません.

wcaexport-with-bigdump-1_5

1分程で完了します.
phpMyAdminで試したところ,筆者の環境では途中で2回手動での再開を要求され,完了するまでの時間が5分程であったので(これは環境やphp.iniの内容によって変わります),BigDumpで楽に高速にインポートできたことがわかります.

wcaexport-with-bigdump-1_6

おわりに

本稿では,BigDumpを紹介し,WCA exportをMySQLに楽に高速にインポートする方法を紹介しました.
筆者は,早稲田記録 – 早稲田大学スピードキュービングサークルを始めとして,WCAデータベースを扱うことがたまにあります.
いくら,BigDumpを用いて楽にデータをインポートできるとしても,これが手動であれば結局面倒なことにかわりありません.
今後の課題は,BigDumpをプチハックして,不定期に更新されるWCA exportのインポートを完全自動化することです.
これは次の記事で紹介しようと思います.

2014-12-07,次の記事書きました.

Thumbnail of WCAデータベースを自動で定期更新する方法 — terabo.netWCAデータベースを自動で定期更新する方法 — terabo.net
本記事では,WCAデータベースをサーバまたはローカルに自動的に定期更新する方法を説明します.前の記事でBigDumpを用いて手動で簡単に高速にインポートできることを紹介しました.本記事はその続きです....
この記事をシェアする:Tweet about this on Twitter
Twitter
Share on Facebook
Facebook
Email this to someone
email