Technology
分散型ノン・リレーショナル・データベースとは
このクラウドには、一般的にたくさんのコンピューターを用いた分散処理方式(分散コンピューティング)が採用される傾向がありますが、それは何故でしょう か。その最大の理由は、同じ処理性能を実現する場合に、少数の高価なハイエンド・マシンによるシステムに比べて、安価なPCサーバーをたくさん使った分散 コンピューティングによるシステムの方が、圧倒的に経済性の高いシステムを構築し運用することが出来るからです。
分散型のノン・リレーショナル・データベース(Distributed Non-Relational Database)は、このようなクラウドでの分散コンピューティング環境に求められる、膨大なデータへの可用性(アベイラビリティ)の高いアクセスを経 済的に提供するための分散ストレージ技術です。
分散型のノン・リレーショナル・データベースは、キー・バリュー・ストアやキー・バリュー型データベースとも呼ばれるように「キー(Key)」とキーに対 する「値(Value)」のペアというデータ・モデル(データの格納方法)を提供します。このデータ・モデルではリレーショナル・データベースと比較した 場合に、キーを指定して値の読み書きを行うと言った、非常にシンプルな操作方法を提供します。
では、クラウドでは何故、データベースとしてはより一般的なリレーショナル・データベースに比べて、キー・バリュー・ストアやキー・バリュー型データベー スのような分散型のノン・リレーショナル・データーベースの方が、より可用性(アベイラビリティ)が高く経済的といわれるのでしょうか。
クラウドの分散コンピューティング環境では、システムを構成するコンピューターだけではなく、そこで扱う膨大な量のデータ、いわゆるBIGDATAもたく さんのコンピューター群に分散して配置されることが前提となります。そして、分散配置されたデータの安全性およびそれらのデータへのアクセスの可用性を高 めるために、個々のデータを複製(レプリケーション)することが重要となります。
ここで、分散配置されたデータの一部に変更が発生した場合に、そのデータの複製(レプリカ)も同じ内容とするための同期が必要です。これを実現することは リレーショナル・データベースにおいても、ノン・リレーショナル・データベースにおいても容易なことではありませんが、リレーショナル・データベースにお ける実現はより困難が生じます。
その理由は、一般的なリレーショナル・データベースが、データ全体を対象としたトランザクションのACID特性(A:Atomic(原子性)、 C:Consistency(一貫性)、I:Isolation(独立性)、D:Durability(永続性))を前提としたシステムであり、多くの異 なる行やテーブルにデータが保存されているからです。
Atomic(原子性)
トランザクションが処理完了または処理未実行のどちらかの状態にしかなり得ない(部分的な実行は行われない)性質。
Consistency(一貫性)
データベースは、宣言されたシステムの完全性に関する制約事項にトランザクションの前後で違反しない。
Isolation(独立性)
トランザクションの処理は他から隠蔽され、あるトランザクションはそれがデータベースに行われる唯一の操作であるかの様に動作する。
Durability(永続性)
トランザクションの処理が完了すると、コミットされた変更は記録され、各種障害が発生した場合にも失われない。
本来はリレーショナル・データベースの特長である厳密なACID特性が、分散コンピューティング環境に於いてシステムの規模を拡大するに従って、原理的に大規模な拡張の実現をより困難にします。
これは、あるトランザクション処理を実行中、システムがデータ全体の整合性を厳密に維持するがために、他の処理要求による同じデータへのアクセスを禁止し処理を待たせる(ロックする)ことで、データの整合性を確保する必要があるからです。
このことからリレーショナル・データベースでは、システムの規模やデータへのアクセスの要求数などが大きくなればなる程、アクセスの競合によるロックが頻繁に発生し処理効率が上がらなくなります。
つまり、リレーショナル・データベースを利用する場合、原理的に分散可能な規模に限界が出て来ることになります。実際に、商用ベンダーやオープンソースソフトウェアにより提供される大半のリレーショナル・データベースシステムはこの制約が生じています。
一方、分散型のノン・リレーショナル・データベースでは「全てのアプリケーションが厳密なACID特性を常に要求している訳ではない」と言う考え方に基づき、ACID特性を限定的に保証するアプローチを採用しています。
データ・アクセスへの可用性(アベイラビリティ)を優先する、このアプローチにより、分散型のノン・リレーショナル・データベースでは、システムの規模やデータへのアクセスの要求数などが膨大になっても、アクセスの競合によるロックが発生しないため、大規模なシステムへの拡張が可能となります。これが、分散型のノン・リレーショナル・データベースがクラウド構築に必要な分散ストレージ技術であると言われる理由です。
但し、このアプローチを採用し、且つシンプルなデータモデルに徹するがために、分散型のノン・リレーショナル・データベースではリレーショナル・データベースと比較して以下の様なデメリットも存在します。
- ACID特性の保証が限定的である
- リレーショナル・データベースでは一般的に提供される、トランザクション、テーブルの結合(JOIN)、テーブルの集計機能などのオペレーションがサポートされない、または限定的である
このため、サービスを構成するアプリケーションの要件に応じたアプリケーションの設計として、アプリケーション毎の必要十分なACID特性や、リレーショ ナル・データベースに比べた場合の分散型のノン・リレーショナル・データベースの機能的な制限事項への対処を考慮した設計が必要となり、アプリケーション の開発に於いて一定の手間が要求されます。
しかし、その手間とのトレードオフにより、分散型のノン・リレーショナル・データベースは、クラウドにおいてリレーショナル・データベースでは実現し得な い「拡張性の高さ(スケーラビリティ)」、「可用性(アベイラビリティ)の高さ」、そして「経済性」を提供することが出来るのです。
つまり、複雑で厳密なトランザクション処理を求めるシステムにはリレーショナル・データベース、一方で、増え続ける大量なデータ、いわゆるBIGDATA への対応のために拡張性(スケーラビリティ)、可用性(アベイラビリティ)、経済性を要求するシステムには分散型のノン・リレーショナル・データベースを 利用することが必要であり、さまざまな要件を含む複雑な全体システムの中でそれぞれを旨く使い分けることが重要と言えます。このように、分散型のノン・リ レーショナル・データベースとリレーショナル・データベースはお互いに補完的な関係にあります。最近では「NoSQL」との表現がありますが、これは 「No SQL」ではなく、「Not Only SQL」であるべきと考えています。
最近ではBIGDATAと呼ばれ始めたように、インターネットで流通するデータ量は爆発的に増加し、クラウドに保存されるデータ量も従来のパラダイムを超 えた時代となっています。そのため、インターネットでサービスを提供する多くのプロバイダが、クラウド・コンピューティングのストレージ技術として、拡張 性(スケーラビリティ)、可用性(アベイラビリティ)、そして経済性に配慮した、分散型のノン・リレーショナル・データベースを採用し始めています。

