使えるシステムから使いたいシステムへ、有限会社アテージ

ArangoDBはスキーマフリーでMongoDBやCouchDBと比較されることが多いデータベースです。グラフも扱えるということで、試しに使ってみました。

インストール

主要なOSについては、インストーラもしくはパッケージが用意されています。今回はUbuntu12.04にパッケージをインストールしました。

インストール後、起動してデフォルトで8529番ポートで待ち受けます。

CRUD

ArangoDBもMongoDBなどのドキュメント指向DB同様、RDBのテーブルに相当するものをコレクション、レコードに相当するものをドキュメントと呼んでいます。

Webのインターフェイス(http://localhost:8529/)もありますが、arangoshを使ってデータを操作してみます。arangoshを起動すると、パスワードを聞かれますが、設定を変更していなければノーパスでログインできます。

まず、コレクションを作成。

作成したコレクションにドキュメントを登録。

登録したレコードを取り出してみます。start_pretty_print()は結果を整形して出力するためのコマンドです。

ドキュメントをIDで取り出してみます。IDで取り出す場合は、ドキュメントが返ってきますのでtoArray()なして表示されます。

属性に一致するドキュメントの取り出し。

より複雑な条件で検索するにはAQLという問い合わせ言語使います。AQLの詳しい文法はこちら

ドキュメントの更新。

ドキュメントの削除。

データのインポート

もう少し大きなデータを入れて検索してみます。こちらのサンプルデータを使います。いくつかサンプルデータがありますが、主要都市の緯度経度の情報を登録してみます。レコード数は約30万件です。

インポートできるのはjson, csv, tsv(タブ区切り)の3種類で、csvとtsvは属性名を1行目に入れて、データは2行目から始めます。

検索の注意点

上で登録したデータから”Tokyo”を抜き出してみます。このとき、byExample()による検索とAQLによる検索ができますが、それぞれ所要時間を計測してみます。

byExample()による検索

AQLによる検索

byExample()では96msecのところが、AQLでは1903msecと大きな開きがあります。AQLを使わなくても済むところでは、AQLは使わないのが鉄則です。

ちなみにMySQLでキャッシュを無効にして試したところ、140msecでした。

次回は”edge”と呼ばれる特殊なドキュメントについてみていく予定です。

おまけ

最初のほうでWebのインターフェイスもあると書きましたが、Webのインターフェイスは、http://localhost:8529/にアクセスすれば使えます。