NoSQLとビッグデータ、「Apache Hadoop」の台頭
診断的分析は洞察を得るうえで極めて有効であるため、業務分析プログラムを開発し、データ駆動型運営を採用する企業が増加し始めた。しかし、この種の分析には限界があり、最終的にそうした限界が行く手を阻むようになった。
業務データベースからデータウェアハウスへのデータ移行には、抽出、変換・加工、ロード(ETL:Extracting, Transforming, and Loading)という作業がつきものだ。こうした作業はわずらわしく、問題を引き起こしやすいうえ、時間もかかる。またデータウェアハウスは、特定の疑問に対する答えを導き出すために、あらかじめ想定された次元でデータを保管するという考えに基づいて設計されている。
新たな疑問が出てきた場合、さらなるETL作業とデータウェアハウスの設計および実装サイクルが必要となる。さらに悪いことに、データに対する4V、すなわちVolume(容量)とVariety(多様性)、Velocity(速度)、Veracity(真正性)という要求は、当時唯一の現実的な手段だったリレーショナルデータベースでは対応できないようなレベルに達しようとしていた。
その結果、4Vを満足したかたちでデータを取り扱えるようにする、「ビッグデータ」という考え方が生まれ、一連の関連テクノロジが新たに作り出された。それらのなかでも注目すべきは「Apache Hadoop」とNoSQLデータベースだ。
最終的に「Not Only SQL」(SQLだけではない)と解釈されることになったNoSQLは、リレーショナルモデルをベースとしないさまざまなデータベースソリューションを表す言葉となった。これらのデータベース(ドキュメント型やキーバリュー型、カラムナ(列指向)ストア型、グラフ型)は、業務アプリケーションに合わせてスケールアップするのではなく、スケールアウトすることで、特定の問題や分野に最適なモデルをサポートできるシステムを実現するというニーズから生み出されたものだ。
NoSQLデータベースは、手元の問題に対してよりパワフルなハードウェアを投入するという、リレーショナルデータベースやデータウェアハウスでよく見かけるものとは異なったアプローチを採用している。また、NoSQLデータベースは水平方向へのスケールアウトを考慮して設計されており、クラスタ化された分散型システム内により多くのノードを追加することで直線的なスケーラビリティの維持を目指している。
スケールアップではなくスケールアウトするとともに、ユースケースそれぞれが要求する最適なモデルに対応できるようにするというニーズから、さまざまなデータベースソリューションや分析ソリューションが生み出された。
NoSQLデータベースはリレーショナルデータベースの伝統とは袂を分かち、CAP定理に基づくとともに「結果整合性」(Eventual Consistency)という考え方を採用している。CAP定理によると、ネットワークが分割されている場合、一貫性(Consistency)と可用性(Availability)のトレードオフを考えることになる。
このことは、ほとんどのNoSQLデータベースが、リレーショナルデータベースにおけるACID(Atomic:不可分性、Consistent:一貫性、Isolated:独立性、Durable:永続性)トランザクションという実績ある整合性モデルを捨て、BASEモデル(Basically Available:基本的に利用可能、Soft-State:柔らかい状態、Eventual Consistency:結果整合性)に依拠するという意味を持っている。言い換えれば、NoSQLデータベースにはメリットがあるかもしれないが、データの一貫性を維持するうえで、サポートしているアプリケーションに重荷をもたらすシナリオもあるということだ。