NoSQL

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内, 検索

NoSQLとは、リレーショナルデータベース管理システム(RDBMS)以外のデータベース管理システムを指し、リレーショナルデータベースの長い歴史を打破するものとして、広い意味での関係モデル以外に属するデータベースの発展を促進させようとする運動である。関係モデルではないデータストアの特徴として、固定されたスキーマに縛られないこと、関係モデルの結合操作を利用しないこと(場合によっては単にそのような機能が欠落しているだけ)、水平スケーラビリティが確保しやすい事が多い、トランザクションを利用できないものが多いことなどが挙げられる。学術論文や正式な文書ではこの種のデータベースのことを構造型ストレージ (: structured storage) と呼ぶことが多い[1][2][3][4]

産業界での有名な実装として、グーグルBigTableアマゾンDynamoなどがある。オープンソースの実装も数多く存在し、Apache HBaseApache Cassandraなどがある。

目次

[編集] 歴史

NoSQLという用語は1998年、SQLインターフェイスを持たない軽量な関係データベースのオープンソースソフトウェアの名前として最初に用いられた。その著者Carlo StrozziはNoSQL運動について、「関係モデル全体と一線を画すものであるから、『NoREL』などと名づけられるべきだった」と主張している[5]。この用語は、Last.fmのJohan Oskarssonの呼びかけによって2009年初頭に開催されたオープンソースの分散データベースについての会合において、Rackspace英語版の従業員Eric Evansによって再導入された[6]。この名前はMySQLMS SQLPostgreSQLなど関係データベースのシステムで広く用いられていた命名法を参照して付けられたものであり、ACID保証を提供しないような非関係型の分散データストアの勃興を表現する意図が込められていた。

NoSQL運動が普及するに従い、その名前のもつネガティブな印象(SQLは不要である、など)が問題となり議論が起こっている。Eric EvansはNoSQLをNot only SQLバクロニムとして理解するのが好ましいとしている[7]

[編集] アーキテクチャ

現代的な関係データベースは、小規模の高頻度なトランザクションか、巨大だが書き込みをほとんど伴わないトランザクションに最適化されて設計されているため、近年必要とされてきている大規模データに基づく (: data-intensive) 応用事例では性能が劣化してしまう[8]。そのような応用の例として、検索のための文書のインデキシング、トラフィックの高いウェブサイトのサーバストリーミングデータの配布などがあり、Diggのgreen badge[9]、Facebookのインボックスの検索、eBayのシステム全体などがその実例である。

NoSQLのアーキテクチャにおいては、結果整合性のみを保証するなどして一貫性の保証を弱く設計したり、トランザクションをひとつのデータアイテムに限るという制限を設けたりすることが多い。補助的なミドルウェアの層を付加することによって完全なACID保証を提供している場合もある(たとえば[10] )。

いくつかのNoSQLシステムは分散アーキテクチャを採用している。そのようなシステムでは、多くの場合は分散ハッシュテーブルを用いて、データを複数のサーバーに、冗長性を持たせながら配置する。これにより、サーバーを追加するだけでシステムを容易にスケールアップさせることができ、障害への耐性も強くなる[11]

[編集] 分類

NoSQL には、主要なものとして、以下のものがある。

  • キー・バリュー型 (Key Value Store) - キーに対して値という単純な構造。
  • ドキュメント指向 - XMLやJSONといった、 スキーマレスでデータ構造が柔軟なもの。MongoDB, Apache CouchDB など。XMLデータベースなどのシステムでは、XQueryを利用できるものもある。

[編集] オープンソースのプロジェクト一覧

[編集] 参考文献

  1. ^ Hamilton, James (2009年11月3日). “Perspectives: One Size Does Not Fit All”. 2009年11月13日閲覧。
  2. ^ Lakshman, Avinash; Malik, Prashant. Cassandra — A Decentralized Structured Storage System. Cornell University. http://www.cs.cornell.edu/projects/ladis2009/papers/lakshman-ladis2009.pdf 2009年11月13日閲覧。. 
  3. ^ Chang, Fay; Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach, Mike Burrows, Tushar Chandra, Andrew Fikes, and Robert E. Gruber. Bigtable: A Distributed Storage System for Structured Data. Google. http://labs.google.com/papers/bigtable-osdi06.pdf 2009年11月13日閲覧。. 
  4. ^ Kellerman, Jim. “HBase: structured storage of sparse data for Hadoop”. 2009年11月13日閲覧。
  5. ^ NoSQL Relational Database Management System: Home Page”. Strozzi.it (2007年10月2日). 2010年3月29日閲覧。
  6. ^ NOSQL 2009”. Blog.sym-link.com (2009年5月12日). 2010年3月29日閲覧。
  7. ^ NoSQL: What's in a name?”. Eric Evans's Weblog (2009年10月30日). 2010年5月31日閲覧。
  8. ^ Agrawal, Rakesh et al. (2008). “The Claremont report on database research”. SIGMOD Record (ACM) 37 (3): 9--19. doi:http://doi.acm.org/10.1145/1462571.1462573. ISSN 0163-5808. 
  9. ^ Looking to the future with Cassandra | Digg About”. About.digg.com (2009年9月9日). 2010年3月29日閲覧。
  10. ^ CloudTPS: Scalable Transactions for Web Applications in the Cloud”. Globule.org. 2010年3月29日閲覧。
  11. ^ Cassandra: Structured Storage System over a P2P Network (PDF)”. 2010年3月29日閲覧。

[編集] 関連項目

個人用ツール
名前空間
変種
操作
案内
ヘルプ
ツールボックス
他の言語