Drupal で Akiban データベースを使う

2012 年 12 月 6 日 - 15:32 -- ドリース バイテルト

ボストンのベンチャー企業 Akiban は新しいクラスの NewSQL / NoSQL データベースを構築している。僕が同社の顧問(アドバイザー)になってからもう 4 年になる。うれしいことに、4 年間の懸命な努力を経て、Akiban は同社初の Drupal カスタマー ソリューションを Acquia Cloud に立ち上げた。これは Akiban がやっていることについてもう少し話しておく絶好の機会だ。また、僕が同社のチームに喜んで協力する理由も話しておこう。

Akiban がとった初期段階の戦略は、既存のデプロイメント(たとえば MySQL)を拡張し、いくつもある能力のなかでクエリのパフォーマンスを強化することだ。Acquia と Akiban の両社を利用しているカスタマーが、カスタム作成された、ある Drupal レポート コードで、パフォーマンス、並行性(concurrency)、可用性(availability)の問題に直面していた。そのレポート(機能)は一つのモジュールとして Drupal 内に組み込まれたものだった。それには一連の複雑な結合操作(join)が含まれていたため、パフォーマンスが予測不可能になり、結果としてクエリ パフォーマンスの速度が頻繁に低下し、サイト全体が周期的にクラッシュすることになった。そのカスタマーが Akiban のデータベースを使用したところ、その Drupal アプリケーションを特に大きく変更したわけでもないのに、それまでの実装と比べて 66 倍に改善されたパフォーマンスが実現している。

Akiban で中核となる利点のひとつはクエリの高速化だ。Akiban データベースは「拡大モード(augmentation mode)」で MySQL サーバーと一緒に動作することができる。これはマスター・スレーブ構成に相当する。Akiban はレポート用クエリを Akiban サーバーへとリダイレクトできるシンプルな Drupal パッチを実装した。Akiban のソリューションではデータを複製する必要があるが、それはサイトの日常的な動作への介入が実質的にはなくなることも意味する。

レポート モジュールは最初に設計されたとおりの状態だが、問題となるクエリが Akiban サーバーへとリダイレクトされるようになった。Akiban のコア テクノロジーはテーブル グルーピング(Table Grouping)と呼ばれる。これは論理レイヤーを保持し、開発者たちが SQL を使える状態を保ったままで、テーブルを物理的にグルーピングできるようにするものだ。このグルーピングは、ANSI SQL を使用しながらも、複雑な従来型の結合操作を排除してくれる。それに加えて、Akiban はクロス集計インデックス(cross-table index)を作成できるので、以前は遅かったクエリが加速される。その結果、レポート用クエリが Akiban サーバーに向けられるようになったことも相まって、レポートのパフォーマンスが 66 倍の速度になったということだ。

Akiban チームは、Akiban サーバーとは「新しいクラスのデータベース」であるとしている。それは、開発者たちが従来の SQL と RESTful の両環境(SOA)でデータにアクセスできる状態を保ちながら、SQL および NoSQL データ(処理)を 10 ~ 100 倍に高速化するものだ。他のデータベース テクノロジーと比較すると、テーブル グルーピングは構造化データおよび半構造(化)データを格納、クエリするための革新的な方法を与えてくれる。

Akiban 社のパドレイグ オサリヴァンPadraig O'Sullivanは Drupal 7 用のモジュールに取り組んでいる。まだテストや最適化でやるべきことが残っているものの、彼は開発中の Drupal 8 用のソース データベースとしてすでに Akiban が動くようにもした。これは注目し続けるべきことだろう。もし自分で Akiban をいろいろと試してみたい場合は是非、akiban.com へ行ってダウンロードしてほしい。

分類キーワード: