NoSQLデータベースを40種類以上リストアップ、キーバリュー型にもいろいろある
Webスケールのデータを扱うためにさまざまなデータベースが登場してきている、ということを昨日のエントリ「データベースは目的別に使い分けるべし」で紹介しました。
特にリレーショナルモデルをベースとしない、非SQL系(NoSQL)と呼ばれるさまざまな種類のデータベースが登場してきています。非SQL系のデータベースは以前からオブジェクトデータベースやドキュメントデータベース、階層型データベースなどが存在していましたが、最近注目されているのがキーバリュー型データストアと呼ばれるデータベース。
ブログ「High Scalability」にポストされたエントリ「A Yes for a NoSQL Taxonomy」では、これら非SQL系のデータベースを詳細に9分類し、それぞれの分類に属するデータベースをリストアップしています(基になったのは「NoSQL is a Horseless Carriage」というドキュメントです)。特に、キーバリュー型データストアが、キャッシュ、データベース、結果整合型などにまで分類されており非常に興味深いリストです。
ここではその記事を基にいくつかのソフトウェアを追加し、また各Webサイトへのリンク情報を付加し、Webサイトからの説明を引用してまとめてみました(名称からWebサイトが見つからなかった一部の製品の割愛もしました)。
Key-value-chache
- Memchaced
Memcached is an in-memory key-value store for small chunks of arbitrary data - Repcached
repcachedとは、memcachedにデータのレプリケーション機能を追加実装したものです - Oracle Coherence
Oracle Coherenceは、信頼のおけるスケーラビリティの高いピア・ツー・ピアのクラスタ・プロトコル上で、複製および配布した(パーティション化した)データの管理とキャッシュ・サービスを行います - Infinispan
Infinispan is an extremely scalable, highly available data grid platform - 100% open source, and written in Java. - IBM WebSphere eXtreme Scale
WebSphere eXtreme Scaleなら、きわめて高い効率とリニアなスケーラビリティーによって膨大なトランザクションを処理することができます。 - JBoss Cache
JBoss Cache's goal is to provide enterprise-grade clustering solutions - Microsoft Velocity
マイクロソフト プロジェクト コード名 Velocity は、あらゆる種類のデータに対応し、高いスケーラビリティを備えたメモリ内アプリケーション キャッシュを提供します - Teracotta
Terracotta offers a full range of caching products to increase application performance by 10X and reduce database load by 30%-90%
Key-value-store
- Keyspace
Keyspace is a consistently replicated,fault-tolerant key-value store - Flare
Flareはmemcached互換の分散key-valueストレージサーバです。ただし、memcachedには無い多くの機能がサーバ側に追加されています - RAMCloud
Designed primarily for usage within a datacenter - Roma
ROMA: A Distributed Key-Value Store in Ruby
Eventually-consistent key-value-store
- Dynamo
a highly available key-value storage system that some of Amazon's core services use to provide an "always-on" experience. - Project Voldemort
Voldemort is a distributed key-value storage system - Dynomite
Open source dynamo clone written in Erlang. - SubRecord
SubRecord is a distributed, scalable, non-relational, attribute-oriented storage supposed to be used in the cloud - DovetailDB
DovetailDB is a schemaless, JSON-based database. It is similar in spirit to Amazon's SimpleDB - MemcacheDB
MemcacheDB is a distributed key-value storage system designed for persistent
Orderd-key-value-store
- Tokyo Tyrant
Tokyo Tyrant is a package of network interface to the DBM called Tokyo Cabinet - LightCloud
LightCloudはTokyo Cabinet/Tokyo Tyrantをバックエンドに使う分散key-valueデータベース - nmdb
nmdb is a network database (dbm-style) for controlled networks - Lux IO
Lux IO is a yet another fast database manager - actord
Data-structures server
- redis
Redis is an advanced key-value store. It is similar to memcached but the dataset is not volatile
Tuple-store
- GigaSpaces eXtreme Application Platform
The Scalable, High Performance Application Server for High-End Distributed Applications - Coord
Coord is an open source implementation of a SBA(Space-based Architecture) built on DHT(Distributed Hash Table) - Apache River
a project furthering the development and advancement of Jini technology
Object database
- Zope Object Database
The ZODB is a persistence system for Python objects - db4objects
Java/.NETにネイティブなdb4oを組み込めば、どんな複雑なオブジェクトも1行で保存できます - Project Shoal
Shoal is a java based scalable dynamic clustering framework that provides infrastructure to build fault tolerance, reliability and availability.
Document store
- CouchDB
Apache CouchDB is a document-oriented database that can be queried and indexed in a MapReduce fashion using JavaScript - Mongo
The best features of document databases, key/values stores, and RDBMSes in one - Jackrabbit
Apache Jackrabbit is a fully conforming implementation of the Content Repository for Java Technology API - ThruDB
Thrudb is a set of simple services built on top of the Apache Thrift framework that provides indexing and document storage services for building and scaling websites - CloudKit
CloudKit provides schema-free, auto-versioned, RESTful JSON storage with optional OpenID and OAuth support, including OAuth Discovery. - Persevere
Persevere helps you rapidly develop data-driven JavaScript-based rich internet applications - Riak Basho
Riak combines a decentralized key-value store, a flexible map/reduce engine, and a friendly HTTP/JSON query interface to provide a database ideally suited for Web applications - Scalaris
Scalaris is a scalable, transactional, distributed key-value store. It can be used for building scalable Web 2.0 services - 各種XML Databases
Wide columnar store
- Bigtable
Bigtable is a distributed storage system for managing structured data that is designed to scale to a very large size - Hbase
HBase is the Hadoop database. Use it when you need random, realtime read/write access to your Big Data - Cassandra Project
Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store - Hypertable
In a web-driven world, datasets are larger than ever before - with "web scale" becoming the term of choice to describe the ultimate size of problems - Kai
Kai is a distributed key-value datastore, which is mainly inspired by Amazon's Dynamo - OpenNeptune
Neptune is another open source project implementing Google's Bigtable
どの製品が生き残るのか?
このリストの基になったドキュメント「NoSQL is a Horseless Carriage」を公開したSteven Yen氏は、そのドキュメントの中で、これだけたくさんあるさまざまなデータベースの中で、どれが生き残るのか、その条件を次のように指摘しています。
the most approachable API with enough power will win.
十分なパワーの下で適切なAPIを提供したものが勝つ
リレーショナルデータベースはSQLという非常に強力で、(ある程度)標準化されたAPIを備えたことで普及してきました。次世代のデータベースもAPIが普及のカギになるということです。同意します。