このようにNoSQLは広い意味をさしているため、同じNoSQLに分類されているデータベースでも、採用しているデータベースのメカニズムや提供している機能、得意分野などは多岐に渡る。データマイニングに特化したものからグラフの仕組みをベースにしているもの、ドキュメントがそのままデータベースに対応しているもの、従来からあるキーバリュー式のものまで様々だ。次にそれらのうちいくつかをまとめておく。
| 列指向データベース | 特徴 |
|---|---|
| Cassandra | MapReduce系。HDFSレプリケーション対応。Java実装。 |
| HBase | MapReduce系。Hadoopデータベース。Java実装。Apache Thrift対応。 |
| Hypertable | HQL系。HDFSレプリケーション対応。Apache Thrift対応。 |
| グラフ指向データベース | 特徴 |
|---|---|
| AllegroGraph | Java、Python、Ruby、Perl API提供。REST対応。 |
| Bigdata | JavaおよびJiniサービスAPI。 |
| HyperGraphDB | Java対応。実装もJava。 |
| InfoGrid | Java、HTTP、REST対応。OpenID、RSS、Atom、JSONなど各種プロトコル提供。 |
| Neo4J | かなり多くの言語に対応。REST対応。Java実装。 |
| Sones | .NET API提供。 |
| ドキュメント指向データベース | 特徴 |
|---|---|
| CouchDB | JSON対応。REST対応。MapReduce対応。 |
| MongoDB | BSON対応。C++実装。多種多様なプロトコルに対応。 |
| Riak | JSON対応。REST対応。MapReduce対応。 |
| Terrastore | HTTPおよびJava API提供。 |
| キーバリューデータベース | 特徴 |
|---|---|
| Berkeley DB | CおよびJava実装あり。多くの言語用APIを提供。 |
| Chordless | JavaおよびRPC APIあり。Javaで実装。 |
| Dynomite | Amazons DynamoのOSS実装。Erlangで実装。 |
| GT.M | PerlやPytohon、CのAPIあり。 |
| HamsterDB | 組み込みDB。ACID互換。 |
| MemcacheDB | C実装。Mencacheプロトコル使用。 |
| Redis | かなり多くの言語APIを提供。C実装。 |
| Tokyo Cabinet | Java、Perl、Ruby APIあり。軽量高速DB。 |
| Voldemort | Amazons DynamoのOSS実装。 |
NoSQLはRDBMSを置き換えるものではない
RDBMSが主流だったこれまでのデータベースシステムでは、ベースになっているスキーマがはっきりしていたため、その技術を習得すれば幅広い問題に対してデータベース設計ができるようになるといった特徴があった。
これと比べNoSQLに分類されるデータベースは対象としている分野がプロダクトごとに異なっているため、これまでRDBMSで培ってきたノウハウはそのままでは適用できないという特徴がある。状況に応じて適切なデータベースを選択し、そのデータベースに適した設計と実装を模索する必要がある。RDBMSを採用しているケースでも、シンプルなテーブル設計しか使っていないような状況であればNoSQLの適用は難しくない。
なお、NoSQLはRDBMSを置き換えるようなものではないことに留意しておく必要がある。RDBMSを適用してきたシステムは、これからもRDBMSで事足りる。NoSQLはシンプルなデータ構造で事足りるケースで、高いスケーラビリティや柔軟な運用、特化した処理が要求される場合に新しく採用しやすい技術ということになる。