NOSQL:スキーマレスの意味


NOSQL系のDBでよくあるスキーマレスという言葉ですが、これは、
・スキーマがなくてもOK という意味合いなのか
・スキーマがあってはならない という意味合いなのかどちらでしょうか。
もちろん、スキーマがあってはならないなんて言うことは無いと思うのですが、
スキーマを定義してNOSQLを利用するという事が、NOSQLの本来的意義に反しているのかなぁと疑問に思っています。

現在自前のCMSの構築にMongoDBを使用しようと考えています。
例えばartileオブジェクトは配下にtitleとauthor,contentを保有しなければならず
contentに含まれるcodeオブジェクトはlineオブジェクトの集合からなる…
などのルール(スキーマ)を決めてPHPからパースする予定です。

もちろんスキーマレスという構造上,こういったルールを強制することはできないと言うことは理解しております。
ただ、こうやって事前にスキーマを決めてからスキーマレスのDBを使うという方法が
正しいのかどうかについて疑問に思い質問させて頂きました。

詳しい方いらっしゃいましたらお願い致します。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/05/15 20:22:52

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

スキーマレスと言っても、どんなデータがどうやって入ってるかを知らないと、
取り出しも、更新もできないわけで。
その約束事を、NoSQL Database ではシステムとして持っていない、というだけの話です。
質問にあるように embed を使うなら、なおさらです。

MongoDB のようにフィールド名があるようなタイプは、スキーマレスというよりは、
スキーマフリーと呼ぶ方がしっくりくると思います

Key-Value データベースだって、キーの意味を決めないとデータのやり取りはできないし、
名前と値という二つだけのフィールドという固定のスキーマになっている、とも言えますし。

もちろんスキーマレスという構造上,こういったルールを強制することはできないと言うことは理解しております。
ただ、こうやって事前にスキーマを決めてからスキーマレスのDBを使うという方法が
正しいのかどうかについて疑問に思い質問させて頂きました。

正しいかどうかというか、普通に作ると、そのような手順になると思います。

MongoDB だと、将来的な追加/変更が楽チンなので、ルールを緩くしておいたり、
設計の煮詰め度合いを軽くしておいて、必要なら後で変えよう、というやり方ができるね、
ってところが RDBMS と違うだけです。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません