NoSQLデータベースとは?基本概念・4つの分類・主要製品を徹底解説
NoSQLという言葉は1998年に誕生しました。「SQLを揶揄するための蔑称では?」と思われがちですが、実際には「Not Only SQL(SQLだけではない)」の略です。この名称には、SQLとNoSQLは対立関係ではなく、共存しながらそれぞれの得意分野で活躍すべきだという思想が込められています。
近年、Web 2.0時代を牽引する企業が次々とNoSQL技術を採用したことで、NoSQLムーブメントは大きな注目を集めました。Facebook、Twitter、Amazon、LinkedIn、Googleといった世界的なテック企業が、こぞって何らかの形でNoSQLを活用しています。本記事では、CIOや同僚に説明できるレベルを目指して、NoSQLの基礎をわかりやすく解説します。

NoSQLが生まれた背景
爆発的に増加するデータ量
世界に蓄積されるデジタルデータの総量は、エクサバイト(EB)単位で測られる規模に達しています。1エクサバイトは10億ギガバイト(GB)に相当します。Internet.comによれば、2006年だけで161エクサバイトのデータが新たに保存され、わずか4年後の2010年には約1,000エクサバイトへと500%以上の増加が予測されていました。世界で保存されるデータ量は、今後も増え続ける一方です。
相互につながるデータ
データはますます相互接続的になっています。Webの誕生はハイパーリンクを生み、ブログにはピンバックが備わり、主要なソーシャルネットワークにはコンテンツ同士をつなぐタグ機能が存在します。大規模システムは、最初から相互接続を前提として設計されているのです。
複雑化するデータ構造
NoSQLは、階層構造を持つネストされたデータを容易に扱えます。同じことをSQLで実現するには、さまざまなキーを組み合わせた複数のリレーショナルテーブルが必要になります。さらに、パフォーマンスとデータの複雑さには相関関係があり、ソーシャルネットワーキングアプリケーションやセマンティックWebに必要な膨大なデータを従来のRDBMSに保存すると、性能が低下する可能性があります。
NoSQLとは何か?
NoSQLを定義するひとつの方法は、「何ではないか」から考えることです。NoSQLはSQLではなく、リレーショナルモデルでもありません。名前が示すとおりRDBMSの代替品ではなく、それを補完する存在です。NoSQLは、非常に大規模なデータ需要に対応する分散型データストア向けに設計されています。数億人規模のユーザーを抱えるFacebookや、毎日テラビット級のデータが蓄積されるTwitterを想像してみてください。
NoSQLデータベースには固定スキーマがなく、結合(JOIN)もありません。RDBMSが高速なハードウェアやメモリ増設によって「スケールアップ」するのに対し、NoSQLは「スケールアウト」を活用できます。スケールアウトとは、負荷を多数の汎用(コモディティ)サーバーに分散させることを指します。この特性こそが、NoSQLを大規模データセットにとって低コストなソリューションたらしめているのです。
NoSQLの4つの分類
現在のNoSQLの世界は、大きく4つのカテゴリに分類できます。
- キーバリューストア(Key-Value Store):2007年のAmazonによるDynamo論文に端を発するモデルです。一意のキーと、特定のデータ項目へのポインタからなるハッシュテーブルを基本とし、パフォーマンスを最大化するためキャッシュ機構が組み合わされるのが一般的です。
- カラムファミリーストア(Column Family Store):多数のマシンに分散した大量のデータを保存・処理するために作られました。キーの概念は残りますが、キーは複数のカラムを指します。GoogleのBigTableでは、行はロウキーで識別され、データはこのキー順にソート・格納され、カラムはカラムファミリーごとに整理されます。
- ドキュメント指向データベース(Document Database):Lotus Notesに着想を得たモデルで、キーバリューストアに似ています。基本的には、他のキーバリューのコレクションからなるバージョン管理されたドキュメント群であり、JSONのような半構造化フォーマットで保存されます。
- グラフデータベース(Graph Database):ノード、ノード間のリレーションシップ(関係)、ノードのプロパティで構成されます。SQLの行と列による厳格な構造の代わりに、柔代わりに、柔軟なグラフモデルを採用し、多数のマシンへスケールできます。
主要なNoSQLデータベース
NoSQLの主要プレーヤーは、それを採用した組織とともに台頭してきました。代表的なNoSQL技術には以下があります。
- Dynamo: Amazon.comが開発した、最も著名なキーバリュー型NoSQLデータベースです。電子商取引向けに高度にスケーラブルな分散プラットフォームが必要だったAmazonが独自に開発しました。Amazon S3はDynamoをストレージ基盤として利用しています。
- Cassandra: Facebookがオープンソース化したカラム指向のNoSQLデータベースです。
- BigTable: Google独自のカラム指向データベースです。利用できるのはGoogle App Engine上に限られます。
- SimpleDB: Amazonのもうひとつのデータベースサービスです。Amazon EC2やS3とともにAWSの一部を構成し、従量課金制で提供されています。
- CouchDB / MongoDB: いずれもオープンソースのドキュメント指向NoSQLデータベースです。
- Neo4j: オープンソースのグラフデータベースです。
NoSQLへのクエリの発行方法
開発者が最も関心を持つのは、NoSQLデータベースをどうクエリするかという点でしょう。巨大なデータベースにデータを保存しても、取り出してエンドユーザーやWebサービスに提供できなければ意味がありません。NoSQLデータベースはSQLのような高水準の宣言型クエリ言語を提供せず、クエリ方法は各データモデル固有のものになります。
多くのNoSQLプラットフォームはRESTfulインターフェースでデータへアクセスでき、クエリAPIを提供するものもあります。複数のNoSQLデータベースを横断してクエリすることを目指すツールも登場していますが、これらは通常、単一のNoSQLカテゴリ内でのみ動作します。その代表例がSPARQLです。SPARQLはグラフデータベース向けに設計された宣言型クエリ仕様です。以下は、特定のブロガーのURLを取得するSPARQLクエリの例です(IBM提供)。
PREFIX foaf:
SELECT ?url
FROM
WHERE {
?contributor foaf:name "Jon Foobar" .
?contributor foaf:weblog ?url .
}
NoSQLの将来展望
大量のデータ保存ニーズを持つ組織は、NoSQLを真剣に検討しています。一方で、小規模な組織への浸透はまだ限定的なようです。Information Weekの調査によると、ビジネスIT担当者の44%はNoSQLを聞いたことがなく、戦略的方向性の一部としてNoSQLを挙げた回答者はわずか1%にとどまりました。相互接続された現代の世界においてNoSQLには確かな存在意義がありますが、多くの人々が期待するような幅広い普及を実現するには、さらなる進化が必要でしょう。
-
【Ruby入門】開発者が押さえておきたい主要データ構造の特徴と使い方
データ構造とは? データ構造とは、データを整理し、効率よくアクセスするための具体的な方法のことです。 代表的な例としては以下のようなものがあります。 配列(Array) 二分木(Binary Tree) ハッシュ(Hash) データ構造ごとに得意な処理は異なります。たとえば、ハッシュは辞書(単語と意味)や電話帳(名前と電話番号)のように「キーと値」のペアを扱うデータの保存に最適です。 どのようなデータ構造が存在するのか、そしてそれぞれの特性を理解することは、Ruby開発者としてのレベルアップに直結します。 本記事では、その知識をわかりやすく解説していきます! 配列(Array)を理解する
-
Excelのデータ入力の種類を徹底解説|4つのデータ型と入力方法まとめ
Microsoft Excelは、データの整理や分析に欠かせない代表的な表計算ソフトです。しかし、Excelでデータを分析するには、まずデータを入力する必要があります。データにはさまざまな種類があり、種類に応じて適切な入力方法が異なります。この記事では、Excelにおける4種類のデータ入力の方法とルールについて詳しく解説します。 Excelで扱える4つのデータの種類 データはMS Excelの中核となる要素です。Excelは入力されたデータを処理し、結果を出力します。Excelで扱えるデータは主に以下の4種類です。 テキスト(Text) 数値(Value) 日付(Date) 数式(Formul