本書では、なぜNoSQLを使うのか、という理由を、水平スケーラビリティ、プログラムの容易さ(プログラムに適したデータモデルの利用)という2つとしています。
NoSQLの水平スケーラビリティについては改めて言うまでもありませんが、プログラムの容易さというのは興味深い観点だと思いました。いわゆるリレーショナルモデルとプログラム言語のデータモデルとのインピーダンスミスマッチを解消する手段としてNoSQLを使うという考え方です。
キーバリューストアやドキュメントデータベースなどでは、一つのレコードをAggregateというひとまとまりのデータと考えることで、配列やハッシュなどのごちゃまぜになったデータ構造をうまく保存できるとしています。この部分については、NoSQLのデータ構造をうまく説明していますので、一読の価値ありです。
またNoSQLの持つスキーマの柔軟性は頻繁な変更のあるシステムと相性が良いのではないかと指摘しています。
また本書では、NoSQLといっても水平スケール指向のものだけでなく、Graph Databaseのように一つのサーバーだけで動かすことを中心にした種類のものにも言及されています。
ドキュメントデータベースなどは、JSONなどのデータにたいして柔軟なクエリを行うこともできるので、一つのサーバーだけで動かすのでもメリットがあるのではないかと考察されています。DynamoDBなどにも対応して欲しい機能です。
但し、本書では依然としてRDBMSがデータベースの第一選択肢に止まり続けるだろうと述べています。私としても、本書を読んだ限りでは、NoSQLの利用は一部の大規模システムなどに止まるのではないかという印象を受けました。より広く使われるには、NoSQLソフトウェアやそれを取り巻く環境がもっと成熟してくることが必要ですね。
本書は列指向データベースのようなOLAP用のデータベースには触れられていなかったのが残念です。私の読解力では、本書で触れられているColumn-Family Storeというものが、Key-Value Databaseとどのように異なるのか全く理解ができませんでした。
0 件のコメント:
コメントを投稿