Amazon SimpleDB

AWS | Amazon SimpleDB – Simple Database Service

ついに出ましたね。Amazon純正のデータベースエンジン。
仕様を読む限りでは、前述のドキュメント指向データベースほどの自由度はないものの、定型テーブルを作らなければならないという制約がないという意味ではリレーショナルデータベースよりも制限が緩い。

まだ触ることはできていないのだけど、以下の記事を読んで心の準備中。

Product: Amazon's SimpleDB - High Scalability -
The Current Pros and Cons List for SimpleDB - High Scalability -

ドキュメント指向データベース

先日の日記(S3ネイティブなデータベースエンジン - Webプログラミング日記)でThrudbについて書いたが、あのようなSQLを使わないデータベースのことをドキュメント指向データベース(Document Oriented Database)と呼ぶらしい。

少し調べるとCouchDbというプロジェクトが流行の源になっていて、同様のエンジンが複数出ているようだ。
それぞれの特徴は、

CouchDb (http://couchdb.org/)

javascript形式でクエリをpost。HTTPで操作するので、様々なクライアントから利用可能。内部的にはErlangによって実装されている。最新のバージョンではLuceneによる検索機能を付加。よくできたWebインターフェースが最初から付属しているので遊んでいて楽しい。

RDDB (http://rddb.rubyforge.org/)

Rubyによる実装(クライアントライブラリだけでなく、エンジンもRubyで実装されている)。

Thrudb (http://thrudb.googlecode.com/)

Cによる実装(cLuceneによる検索機能、Spreadのメッセージ通知機能を使ったマルチマスタレプリケーション)。Thriftを使うことで多種クライアント(ruby, php, perl)をサポート。

上記3種のエンジンはどれもストレージとしてAmazon S3に対応している。

少しずつ、いじりながら勉強を始めているのだが、例えばタグを実現しようとすると、従来のリレーショナルデータベースを使った場合JOIN命令を使ってテーブルをつなぐ形で実装することが多かったと思う。それに対してドキュメント指向データベースでは、タグをテキストとしてえいやと書いていけるらしい。

S3ネイティブなデータベースエンジン

大分、更新していなかった。

http://developer.amazonwebservices.com/connect/thread.jspa?messageID=72953&tstart=0#72953

EC2はデータが揮発性だから移行に二の足を踏んでいる、などとウダウダ言っていたのだが、いよいよS3を使った不揮発(かつ先進)のデータベース(?)エンジンが出てきた模様。

前回(mysql interface to amazon s3 - Webプログラミング日記)紹介したアプローチは、mysqlのバックエンドストレージの一つとしてS3を利用して不揮発性を実現しようというものだったが、こちらは全く新しいデータベースエンジンを作ってしまったらしい。

「データベース(?)エンジン」とハテナつきで紹介しているのはなぜかというと、従来のSQL記法すら捨て去っていて、クエリをLucene記法で書くから。具体的には以下のような感じ

bm.find("tags:(+css +examples)",{ :random => 1})
bm.find("title:(linux)",{:sortby => "title"})

http://thrudb.googlecode.com/svn/trunk/tutorial/rb/BookmarkExample.rbより

まだソースは読んでいないのだが、S3のメタデータ情報のあたりにキーとなるテキストを格納しておいて、サーバプログラムはそれをキャッシュとして取り込んで、高速で検索できるようにLuceneでインデキシングしておくという感じの実装だろうと想像している。

クエリを出すたびに全文検索エンジンが走っているわけなので、パフォーマンス面が若干心配されるが、作者のサイトhttp://junkdepot.com/は既に上記エンジン上で構築されているらしく重さは感じられない。

ちなみにLucene記法はこんな感じ
http://lucene.apache.org/java/docs/queryparsersyntax.html

全文検索だとすると、数値データの算術比較などはできないはずなので、どうするのかと思っていたら、Range Search記法でできるっぽい。

非定型テーブルでも扱えるXMLデータベースのような使い方ができそうで、だとするとすごい自由度が高そうだ。問題は果たして使いこなせるかどうか。

いろいろな意味で先進で面白い試みのソフトウェアですばらしい。

高速大容量化したEC2

オンデマンドで占有サーバを起動できるWebサービスAmazon EC2が高速大容量化したというお知らせ。
従来からの32bitサーバ「Small Instance」に加えて、64bitデュアルコアの「Large Instance」、64bitクアッド(!)コアの「Extra Large Instance」を選択できるようになったとのこと。

Amazon EC2 Instance Types - Amazon Web Services

Extra Large Instanceの場合、従来のサーバ比で8倍速&メモリを15GBも積んでいるらしい。従来のサーバが性能にしてXeon 1.0GHz相当というからその8倍。私が職場で使っている科学技術計算用PCよりも高速で大容量だ。

この記事(科学技術計算 on EC2 - Webプログラミング日記)に書いた環境の実現へ向けて、そろそろ動き出したい。

日本の海外研究所

http://www.technobahn.com/cgi-bin/news/read2?f=200708031404&page=2
2年前にお世話になっていた研究所についての残念なニュース。

すごい優秀で良い研究所だったのに、、、。両国にとって大きな損失になるに違いない。