NoSQLデータベース ― 定義と解説

NoSQLとは

NoSQL(Not Only SQL)データベースとは

NoSQLデータベース環境とは、簡単に言えば、幅広い種類の膨大な量のデータを高速かつ動的に整理し分析することを可能にする、非リレーショナルな広域分散データベースシステムです。NoSQLデータベースは、クラウドデータベース、非リレーショナルデータベース、ビッグデータデータベース、その他いろいろな名前で呼ばれますが、今日のユーザー(ユーザーが生成するデータ)とそのアプリケーション(マシンが生成するデータ)によって生成、格納、分析される膨大なデータへの答えとして開発されたものです。

一般に、NoSQLデータベースは、スケーラビリティ、可用性、耐障害性を判断基準としたときに、リレーショナルデータベースに代わる第一の候補となっています。今日の最新ビジネスアプリケーションのニーズを満たす点においては、より広く知られている従来のリレーショナルデータベース(Oracle、SQL Server、DB2などのデータベース)をはるかに凌駕します。このテクノロジーの特徴は、非常に柔軟でスキーマレスなデータモデル、水平スケーラビリティ、分散アーキテクチャ、そしてSQLに限定されない(“not only” SQL)言語やインタフェースの使用です。

ビジネスの面では、NoSQLもしくは「ビッグデータ」環境を考慮することが、明らかな競争優位をもたらすと数多くの業界で証明されています。これは、「データの時代」において、データの重要性を一言で言い表した「データが増えていないのであれば、ビジネスも伸びていないということだ」という素晴らしい格言と同様に、説得力のある情報です。

NoSQLデータベースの種類

NoSQLデータベースは主に4つのタイプがあり、それぞれ固有の特性を持っています。

  • キーバリューストア(Key-Value Store) ― これを最初に取り上げる理由は、このタイプがNoSQLの選択肢の中でも複雑さが最も低い部類に属するからです。これらのデータベースは、スキーマレスな形でデータを格納するように設計されています。キーバリューストアでは、その中のデータはすべてインデックス付きのキーと値(バリュー)で構成されています。それがその名前の由来です。このタイプのデータベースの例は次の通りです:Cassandra、DyanmoDB、Azure Table Storage(ATS)、Riak、BerkeleyDB。

  • カラムストア(Column Store) ―(ワイドカラムストア(Wide-column Store)とも呼ばれます)このタイプのデータベースは、データを行ではなく、データテーブルをカラムに分割して格納します。このような簡単な説明では、標準的なデータベースを逆にしたようにも聞こえますが、ワイドカラムストアは、非常に高いパフォーマンスと高度にスケーラブルなアーキテクチャを備えています。次のような例があります:HBase、BigTable、HyperTable。

  • ドキュメントデータベース(Document Database) ―  キーバリューストアの基本的な考え方を拡張して、より複雑なデータを「ドキュメント」に格納し、ドキュメントを取り出すために個々のドキュメントに一意のキーを割り当てます。これらは、準構造化データとも呼ばれるドキュメント指向の情報を格納し、取り出し、管理することができるように設計されています。次の例があります: MongoDB、CouchDB。

  • グラフデータベース(Graph Database) ― このタイプのデータベースは、グラフ理論に基づき、相互に結びついた要素で構成され、それぞれの間に任意の数の結びつきのあるデータどうしの関係をグラフとして表すのが適切なデータを対象とするように設計されています。次の例があります:Neo4J、Polyglot。

以下の表は、NoSQLデータベースを評価する際に考慮すべきいくつかの重要な特性を示します。

データモデル

パフォーマンス

スケーラビリティ

柔軟性

複雑さ

機能性

キーバリュー

なし

様々(なし)

カラム

最小限

ドキュメント

様々(高)

様々(低)

グラフ

様々

様々

グラフ理論

 

なぜNoSQLなのか

リレーショナルデータベースに対してNoSQLデータベースが有利な点

企業がリレーショナルデータベースよりもNoSQLデータベース環境を採用する理由の大部分は、以下の市場の要請と技術要件に関係します。

NoSQLに乗り換える場合には、NoSQLの教育、移行、そして成功までのロードマップとなる「リレーショナルデータベースからNoSQLデータベースへ」を参照するとよいでしょう。

ビッグデータの成長

ビッグデータは、企業におけるNoSQLの成長と人気を支える重要な原動力の1つです。単純なオンラインアクションからPOS、GPSツール、スマートフォン、タブレット、高度なセンサ、その他に至るまで、ほぼ無限とも言える数のデータ収集テクノロジーがデータの増加に寄与しています。

実のところ、NoSQLを使い始める理由の1つは、取り組まなければならないビッグデータプロジェクトがあるからです。ビッグデータプロジェクトは一般に以下のような特徴があります。

  1. 高速でのデータ受取り ― 大量のデータが高速に、場合によっては複数の場所から入ってくる。

  2. 多様なデータ ― 構造化データ、準構造化データ、及び非構造化データの格納。

  3. 大量のデータ ― テラバイト単位、ペタバイト単位のデータの取扱い。

  4. 複雑なデータ格納 ― 複数の異なる場所やデータセンターへのデータの格納。

 

データの継続的な可用性

クリック1つ先に競合がいる今日の市場環境では、ダウンタイムは企業の収益と評判にとって致命的になり得ます。ハードウェア故障は起こり得るものですが、幸いなことにNoSQLデータベース環境は分散アーキテクチャに基づいて構築されているため、単一障害点がなく、機能とデータの両方について冗長性を備えています。1つまたは複数のデータベースサーバーもしくはノードが停止しても、システム内の他のノードが、データを失うことなく運用を継続でき、真の耐障害性を実現します。この方法により、NoSQLデータベース環境は、1つの場所、データセンターをまたいで、あるいはクラウド上を問わず、継続的な可用性を提供できます。NoSQLデータベースは、適切に配備すれば大規模でも、決してダウンすることなく高いパフォーマンスを提供できます。データベースをオフラインにすることなくシステムの更新や変更が行えるため、非常に有益です。この事実だけでも、アプリケーションに高い可用性を期待する顧客にサービスを提供し、ダウンタイムが現実の逸失利益につながる企業の注目を集めます。

本当の位置独立

「位置独立」という言葉は、I/O処理が物理的にどこで行われているかに関係なくデータベースに対する読み書きができ、そこから書き込み操作を伝搬させ、他のサイトのユーザーやマシンがデータを利用できるようにする能力を意味します。このような機能を、リレーショナルデータベースで設計するのは非常に困難です。マスタ/スレーブアーキテクチャのような手法を採用したり、データベースのシャーディングなどにより、読み取り処理の位置独立の要求に応えられる場合もありますが、データをどこにでも書き込むことは、特にデータ量が多い場合には、話が異なります。多くの異なる地域の顧客にサービスを提供しながら、素早いアクセスが可能なように、それらのサイトでローカルにデータを維持するなど、位置独立が利点となる状況はほかにも数多くあります。

最新のトランザクション機能

インターネットの時代になり、トランザクションの概念が変わりつつあるように見受けられます。つまり、データベース主導型のシステムで、もはやACIDトランザクションが必須でなくなっていることが明らかにされているのです。トランザクション整合性は、ほとんどのデータシステム、特に情報に対する要件として正確性と安全性が求められるシステムでは、特性の1つとなっているので、この主張は一見極端に聞こえます。しかし、ここで言っているのはデータを危険にさらすことではなく、むしろ、今日のアプリケーションが広域分散システムでトランザクション整合性を確保するための新しい方法なのです。ACIDの「C」は、リレーショナルデータベース管理システムにおいて外部キー/参照整合性制約により実現されるデータの一貫性(Consistency)を表します。NoSQLデータベースのような先進のデータ管理システムでは、より厳密な一貫性の適用が必要となるJOIN操作がないため、この種の整合性は利用されていません。その代り、NoSQLデータベースにおける一貫性はCAP定理に見出せます。これは、分散データベースに関与するすべてのノードにわたってデータの即時の、もしくは結果的な整合性が得られることを意味します。データの安全は依然として確保されており、RDBMSのACID定義のうちAIDの部分は満足しますが、その整合性は、システムの性質とアーキテクチャを前提として、異なる形で維持されます。

柔軟なデータモデル

企業がリレーショナルデータベース管理システム(RDBMS)からNoSQLデータベースシステムに移行する主要な動機の1つは、大半のNoSQLデータベースが備えている柔軟なデータモデルにあります。リレーショナルデータモデルは、テーブル間の定義された関係に基づいており、それらのテーブルはあらかじめ決まったカラム構造によって定義されています。そしてそれらは全てデータベーススキーマとして明示的に編成されています。つまり、すべてが厳密かつ一様です。リレーショナルデータベースでは、今日のITとビジネス環境で当たり前になってきている大量のデータを扱おうとしたときに、スケーラビリティとパフォーマンスの面で問題が起こり始めます。しばしばスキーマレスという言葉で表されるNoSQLのデータモデルは、これらの多くのユースケースやRDBMSにはなじみにくいユースケースに対応することができます。NoSQLデータベースは、構造化、準構造化、非構造化データを問わず、あらゆるタイプのデータを、事前定義のスキーマに頼るリレーショナルデータベースよりもはるかに容易に扱うことができます。リレーショナルデータベースの特性である事前定義のスキーマは、データベースとそのデータの編成を厳密に定めるため、柔軟性を妨げる可能性があります。実際のところ、今日のビジネスアプリケーションの多くは、データの利用について規則を強制する能力ももっているため、スキーマレスデータベースプラットフォームは十分現実的な選択肢となります。

最後に、RDBMSデータモデルではパフォーマンスの要素も作用します。特に「ワイドな行」が関係し、更新アクションが多い場合には、パフォーマンスに実際に影響が生じることがあります。それに対し、NoSQLデータモデルはそのような状況を簡単に扱い、読み取りと書き込みの両方の操作について非常に高速なパフォーマンスを発揮します。

よりよいアーキテクチャ

NoSQLデーベースを使用するもう1つの理由として、特定のアプリケーションのために、より適切なアーキテクチャが必要な場合が考えられます。アプリケーションに関係する膨大な量のデータを扱えるNoSQLプラットフォームを採用することが重要です。すべてではありませんが、一部のNoSQLソリューションは、高度なスケーラビリティ、データ分散、そして継続的な可用性を必要とするアプリケーションに対応できる最新のアーキテクチャを備えています。データセンターのサポート、そして、一般的となった複数データセンターのサポートは、NoSQL環境が対応すべきユースケースとするべきです。意思決定をするときには、ビッグデータが現在どのように見えるべきかだけでなく、より長い目で見て判断するべきです。

分析とビジネスインテリジェンス

NoSQLデータベース環境を実装する際の重要な要素の1つは、ビジネスの競争優位を支える洞察を得られるようにする、収集データをマイニングする能力です。膨大な量のデータから意味あるビジネスインテリジェンスを抽出する作業は、従来のリレーショナルデータベースシステムで行うのは困難です。今日のNoSQLデータベースシステムは、ビジネスアプリケーションのデータを対象にストレージと管理機能を提供するだけでなく、複雑なデータセットを瞬時に把握できるようにする組み込みのデータ分析機能も備えることで、柔軟な意識決定を可能にします。

 

どのNoSQLデータベースを選ぶべきか

適切なNoSQLデータベースの選択

ここまで、企業がNoSQLを採用する理由(あるいは、非リレーショナルデータベースプラットフォームを採用する理由)について詳しく見てきました。また、NoSQLデータベースの様々な選択肢を取り上げました。企業は、採用するNoSQLデータベースを判断するとき、自身のビジネスとアプリケーションをじっくり考慮することを求められますが、それはいずれにしてもよいことです。それは、ビジネスの目標、アプリケーションの現在の要求と課題、そして先々考えられる要求を明確に把握するところから始まります。また、プラットフォームにかかわる意思決定が、主要なステークホルダー全員にとって約束を果たすものとなるように、ビジネスとテクノロジーの目標を確実に整合させます。そしてそこから、これらのニーズを満足し、その上にビジネス、アプリケーションを構築できる最も堅固な基盤を提供するNoSQLプラットフォームを選ぶようにします。

NoSQLプラットフォームを選ぶ際には、以下のようなポイントを考慮しましょう。

  • 作業負荷の多様性 ― ビッグデータには、様々な形があります。厳密なスキーマでは対応しきれません。その代りに、より柔軟な設計が必要になります。データをテクノロジーに合わせるのではなく、テクノロジーをデータに合わせるのが目標です。また、これらのデータを対象に、リアルタイムでトランザクションを実行したり、分析も同様に高速で実行したり、データがどのような形であっても、膨大な量のデータの中から見つけたいものを見つけ出せるようにするなど、より多くのことをしたいものです。

  • スケーラビリティ ― ビッグデータを扱う場合、場所を問わずいつでも、きわめて短時間のうちに規模を拡大できるのが理想です。これは、複数のデータセンターにまたがる場合や、クラウドを対象にする場合も含め、あらゆる状況に当てはまります。

  • パフォーマンス ― すでに議論してきたように、ナノ秒単位の遅れが売上減につながるオンラインの世界では、規模がどれだけ大きくなっても、またデータベースがどれだけの作業を実行していても、ビッグデータは非常に高速で動かなければなりません。環境のパフォーマンス、特にアプリケーションのパフォーマンスは、NoSQLプラットフォームを配備する際の最重要要件の1つとするべきです。

  • 継続的可用性 ― パフォーマンスに対する考慮に加えて、売上をもたらす重要な24時間365日稼働のビジネスアプリケーションへのビッグデータの供給に依存している場合、可用性が高いということさえも十分ではありません。データが途絶えてはならないということは、NoSQL環境に単一障害点があってはならないということです。そうすることで、アプリケーションが常に利用できることが保証されます。

  • 管理のしやすさ ― NoSQLプラットフォームの運用は、可能な限り複雑さを排除すべきです。NoSQL環境へ移行するメリットを維持し、最大限享受するのに必要な運用管理と開発が可能である必要があります。

  • コスト ― リレーショナルデータベース技術を使って、ここに示した条件を1つでも満たそうとすると、きわめてコストが高くなるため、これはNoSQLプラットフォームへ移行する大きな理由となります。

  • 強力なコミュニティ ― これは、おそらくNoSQLプラットフォームへの移行に際して念頭に置くべき最も重要な要素の1つでしょう。対象技術の周辺に頼りとなる有能なコミュニティがあることを確認しましょう。なぜなら、そうしたコミュニティは、対象環境の運用管理を行う個人やチームをもたらす貴重な源となるからです。ベンダーによるコミュニティへの関与は、強力な支援と技術力の提供にとどまらず、ユーザーに対する一貫した奉仕をも含むものでなければなりません。地域のユーザーグループやミートアップは、最適なプラットフォームを最も有効に活用する方法について、すぐれた知見を与えてくれる個人やチームとコミュニケーションをとる数多くの機会を提供します。