NoSQLとは何か?データベース技術の次の大きなトレンドを徹底解説
NoSQLとは何か?
NoSQLとは「Non SQL」や「Non Relational(非リレーショナル)」を語源とするデータベースの総称です。Wikipediaの定義によれば、「NoSQLデータベースは、リレーショナルデータベース(RDBMS)で用いられる表形式のリレーション以外のモデルでデータを格納・検索するメカニズムを提供する」とされています。NoSQLは単一の製品ではなく、ユーザーやオブジェクト、製品に関するデータ量の爆発的な増大、アクセス頻度の上昇、パフォーマンスや処理能力への要求の高まりに応えて開発された、多様なデータベース技術を包括する概念です。一般的に、NoSQLデータベースはキーバリュー型・グラフ型・ドキュメント指向型・カラム指向型のいずれかの構造を採用しています。
数十年にわたるソフトウェア開発の歴史の中で、私たちはSQL(Structured Query Language)を使い、データをリレーショナルなテーブルに保存する形でデータベースを利用してきました。しかし近年、インターネットとWeb 2.0アプリケーションの急速な普及により、データベースは数千テラバイト規模へと成長しています。Facebook、Google、Amazonなどの巨大サービスは、シンプルな設計・高速性・従来型データベースを超える柔軟なスケーラビリティを実現する、まったく新しい時代のデータベース管理のあり方を生み出しました。こうしたデータベースは、ビッグデータ、大規模リアルタイムアプリケーション、データ分析基盤などで広く活用されています。
具体例を挙げてみましょう。ユーザーのブログ記事を保存するブログアプリケーションを運用しているとします。ここで「記事へのいいね」「コメント機能」「コメントへのいいね」といった新機能を追加したい場合、典型的なRDBMSでは既存のデータベース設計の大幅な見直しが必要になります。一方、NoSQLを採用していれば、新しいカラムや厳密な構造を事前に定義し直すことなく、既存のデータ構造にそのまま新しいデータを追加でき、アジャイルな要件変更にも柔軟に対応できます。
RDBMSが抱える課題
RDBMSは、データがあらかじめ明確に定義された構造を持ち、おおむね均質であることを前提としています。
アプリケーション開発の前に、スキーマ(カラム名、データ型など)を先に定義しておく必要があります。このため、変化の激しいアプリケーションにおけるアジャイル開発とは相性が良くありません。
データが肥大化すると、既存サーバーのCPUやメモリを増強する「垂直スケーリング(スケールアップ)」で対応することになります。
NoSQLがRDBMSより優れている点
スキーマレスであること
NoSQLデータベースはスキーマを持たないため、厳密なデータ構造を事前に定義する必要がありません。
動的でアジャイルな運用が可能
要件の変化に合わせて柔軟に成長できる特性を持ち、構造化データ・半構造化データ・非構造化データのいずれも扱えます。
水平スケーリングに対応
サーバー1台の性能を上げる垂直スケーリングが基本のSQLデータベースに対し、NoSQLはサーバー台数を増やす水平スケーリングによって拡張できます。シャーディング(データ分割)やレプリケーション(複製)の仕組みを活用したこの特性は、仮想サーバーをオンデマンドで追加できるAWS(Amazon Web Services)などのクラウドサービスと特に相性が良いと言えます。
高いパフォーマンス
多くのNoSQLデータベースは、従来のRDBMS実装よりも高速な処理性能を謳っています。
一方で課題もあります。NoSQLは単一のデータベースではなく多数のデータベース群の総称であるため、制約は製品ごとに異なります。ACIDトランザクションをサポートしないものもあれば、信頼性の面で課題を抱えるものもあります。ただし、それぞれに固有の強みがあり、特定の要件に対しては最適な選択肢となります。
NoSQLデータベースの種類
ドキュメント指向型データベース
ドキュメント指向型データベースは、ドキュメント(JSON形式など)をひとまとまりの単位として扱い、名前と値のペアに分解して保存することを避けます。コレクション単位では、構造の異なる多様なドキュメントを同一のコレクションに格納できます。また、プライマリ識別子だけでなく、ドキュメントの各プロパティに対してもインデックスを作成可能です。代表的なオープンソースのドキュメント指向データベースとしてはMongoDBとCouchDBが挙げられ、特にMongoDBは現在最も人気の高いNoSQLデータベースのひとつとなっています。
グラフ型データベース
グラフ型データベースは、ノード(頂点)・エッジ(辺)・プロパティからなるグラフ構造でデータを表現・保存します。定義上、グラフデータベースとは「インデックスフリー隣接(index-free adjacency)」を提供するストレージシステムのことであり、すべての要素が隣接要素への直接ポインタを持ち、インデックス参照なしで隣接ノードにアクセスできます。任意のグラフを扱える汎用的なものと、トリプルストアやネットワークデータベースのような特殊用途のものがあります。グラフの走査にはインデックスが利用されます。
カラム指向型データベース
カラム指向型のストレージは、データを効率的に格納できるのが特徴です。値が存在しないカラムについては、NULLを保存せずにそのカラム自体を記録しないため、無駄なスペースを消費しません。データの各単位はキー/バリューの集合とみなすことができ、その単位自体は「ロウキー(row-key)」と呼ばれるプライマリ識別子によって特定されます。GoogleのBigtableおよびそのクローンは、このプライマリキーをロウキーと呼んでいます。
キーバリュー型データベース
キーバリュー型データベースでは、キー/バリューペアのキーはセット内で一意の値であり、キーを指定するだけで目的のデータに簡単にアクセスできます。実装形態はさまざまで、データをメモリ上に保持するものもあれば、ディスクへの永続化機能を備えるものもあります。シンプルでありながら強力なキーバリューストアの例として、OracleのBerkeley DBが知られています。
代表的なNoSQLデータベース
上記の分類ごとに、よく知られているNoSQLデータベースを整理してみましょう。
- ドキュメント指向型:MongoDB、CouchDB、Amazon SimpleDB など
- グラフ型:Neo4j、OrientDB、Facebook Open Graph、FlockDB など
- カラム指向型:HBase、Cassandra、Hypertable など
- キーバリュー型:Redis、Membase、MemcacheDB など

NoSQLデータベースの分類図(画像出典:getfilecloud.com)
まとめ
本記事では、NoSQLデータベース技術とは何か、そしてRDBMSとどう違うのかを学びました。さらに、NoSQLデータベースのさまざまな種類、それぞれの活用場面、そして各タイプで人気の高い具体的な製品についても確認しました。
今日、多くの企業や組織が巨大なデータセットや高負荷・大規模アプリケーションのためにNoSQLデータベースの採用を進めています。これは、NoSQLがWebおよびデータベース技術における次の大きな潮流となり、長年続いてきたRDBMSの伝統を覆す可能性を秘めていることを示しています。
-
Windowsレジストリとは何か?安全な編集方法と便利なカスタマイズ技を解説
Windowsレジストリは、一見すると難しそうで近寄りがたい場所に感じられるかもしれません。しかし実際には、上級ユーザーがWindowsの設定画面には表示されていない項目を変更できる、強力な設定データベースなのです。Windowsである機能を変更する方法を検索すると、「レジストリを編集してください」という手順がよく登場するのはこのためです。 レジストリの編集が必要になっても心配はいりません。どの設定を変更しようとしているのかさえ把握していれば、レジストリの調整は簡単に行えます。ただし、意図しない問題を引き起こす可能性もあるため、編集時には十分な注意が必要です。 Windowsレジストリとは?
-
あなたのポルノ視聴履歴が次の大規模リークの標的に?今すぐできるプライバシー対策
私たちのオンライン上の生活は、常にハッカーの脅威にさらされています。医療記録でさえ、ハッカーにとって格好の標的となっています。しかし、状況はさらに悪化するかもしれません。あるソフトウェアエンジニアが最近、「インターネットの閲覧履歴、特に訪問した成人向けサイトの履歴は、いずれ流出すると覚悟すべきだ」と警告しました。 サンフランシスコ在住のブレット・トーマス氏は、自身のブログで次のように述べています。 「2015年にオンラインでポルノを視聴しているなら、シークレットモードを使っていても、いつか自分の視聴履歴が公開され、本名と紐付けられてしまうものだと考えるべきだ」 もしこれが現実になれば、見知らぬ