jump to navigation

データベースは目的別に使い分けるべし 11月 14, 2009

Posted by hyhy in 技術情報.
Tags:
trackback

元マイクロソフトのSQL Server開発チームの一員であり、その後マイクロソフトのデータセンターのアーキテクトとして活躍。昨年アマゾンに移籍して、現在はAmazon Web Servicesの上級エンジニアであるJames Hamilton氏が、自身のブログの「One Size Does Not Fit All」というエントリで、リレーショナルデータベースだけにとどまらない幅広いデータベースの種類を4つに分類して紹介しています。

4つの種類とは「機能優先」「スケーラビリティ優先」「シンプル」「目的別」です。

Hamilton氏は、アマゾンがAmazonクラウドでMySQLのサービスを開始したところ、以前から提供していたキーバリュー型データストアの「SimpleDB」は終了するのではないかと心配する声があったことを挙げ、
リレーショナルデータベースがあれば十分な人が多いために、こうした声が出ることは理解している。しかし、構造化ストレージの世界はリレーショナルを超えてもっと幅広いものなのだ。
と、リレーショナルデータベース以外にもさまざまな目的に対応したデータベースの存在に目を向けるために、このエントリを書いたと説明しています。Hamilton氏が4つに分類したデータベースの世界を見てみることにしましょう。

■機能優先のデータベース
このセグメントでは、いわゆるリレーショナルデータベースがリストアップされています。

Oracle 、SQL Server、DB2、MySQL、PostgreSQL

さらに、クラウド対応としてAmazon Relational Database Serviceを挙げています。Hamilton氏のリストには含まれていませんが、マイクロソフトのSQL Azureを追加しておきましょう。

■スケーラビリティ優先のデータベース
データベースのスケーラビリティを実現する方法としてHamilton氏は「多数のRDBMSによるデータ共有」と「スケーラブルなキーバーリュー型データストア」の2つを挙げています。

前者として挙げているのが、DB2 Parallel EditionとOracle Real Application Clusters(Oracle RAC)。

後者としてはさまざまなデータストアがありますが、Hamilton氏が挙げているのが、Project Voldemort、Ringo、Scalaris、Kai、Dynomite、MemcacheDB、ThruDB、CouchDB、Cassandra、HBase、Hypertableなど。

また、クラウド上のキーバーリュー型データストアとしてAmazon SimpleDBも挙げています。ここではグーグルのBigtableも追加しておきましょう。

■シンプルなデータベース
Hamilton氏が「Simple Structured Storage」と書いているセグメント。リレーショナルデータベースほどの機能や複雑な操作は必要とせず、キーバリュー型データストアほどのスケーラビリティも不要。しかしファイルシステムほどおおざっぱでは困るし、検索やインデックス付けといった機能は求めたい、といった要求に合致するデータベース。

クライアント側で最も多くこの用途で利用されているのはBerkeley DB。そしてサーバ側ではいくつか例が挙がっていますが、FacebookのメールのインボックスとしてCassandra、Last.fmではProject-Voldemortを利用予定、アマゾンのショッピングカート用にはDynamoが使われているとのことです。

■目的特化型データベース
ここではわずかな例しか挙げられていませんが、イベント処理プラットフォームのStreamBase、データウェアハウス用のVertica、MapReduceをベースとしたAster Dataなど、さまざまな目的に特化したデータベースがこれからも登場するだろうとHamilton氏は書いています。

■データベース多様化の時代がくる
Hamilton氏が指摘するように、今後は何でもリレーショナルデータベースを使うのではなく、データの大きさ、処理の内容によって適切なデータベースを使い分ける時代が来ると僕も思います。

これは何と言っても、ビジネスで処理するデータがWebスケールになったため、データの量や増加速度、そしてデータそのものの中味が多様化してきたためです。「Hadoopの最新動向を「Hadoop World:NY 2009」の資料から(前編)」で紹介したように、成功するネットビジネスでは毎日数テラバイトのレベルでデータが増えており、それを保存するだけでなく、分析してビジネスに活かしていかなければなりません。MapReduceのように、それに適した新しいデータ処理方法が注目されるのは当然でしょう。

一方で、「カラムナデータベース(列指向データベース)とデータベースの圧縮機能について、マイケル・ストーンブレイカー氏が語っていること 」で紹介したカラムナデータベースや、「SSDに最適化したデータベース「RethinkDB」、ロックもログも使わずにトランザクション実現 」のように、あるいは「キャッシュの大きいRDB vs インメモリデータベース、性能がどれだけ違うのか調べてみると 」で紹介したようにリレーショナルデータベースそのものも新しい環境や技術をベースにして進化し続けています。

まるで今はデータベースの種類が爆発的に増えているカンブリア紀のようですね。

新しいデータベースの種類や技術が登場すると、次に期待されるのはそれらに対応した「SQL」のようにデータに対して汎用かつ分かりやすい操作体系の登場でしょう。それがSQLのような言語になるのか、RESTのようなAPIっぽくなるのか、あるいは別の形態をとるのか分かりませんが、そうなるには新しい分野のデータベース体系がもう少し整理されてからのように思うので、まだ数年単位で時間がかかることは間違いなさそうです。

参考サイト

広告
%d人のブロガーが「いいね」をつけました。