NOSQL系のDBでよくあるスキーマレスという言葉ですが、これは、
・スキーマがなくてもOK という意味合いなのか
・スキーマがあってはならない という意味合いなのかどちらでしょうか。
もちろん、スキーマがあってはならないなんて言うことは無いと思うのですが、
スキーマを定義してNOSQLを利用するという事が、NOSQLの本来的意義に反しているのかなぁと疑問に思っています。
現在自前のCMSの構築にMongoDBを使用しようと考えています。
例えばartileオブジェクトは配下にtitleとauthor,contentを保有しなければならず
contentに含まれるcodeオブジェクトはlineオブジェクトの集合からなる…
などのルール(スキーマ)を決めてPHPからパースする予定です。
もちろんスキーマレスという構造上,こういったルールを強制することはできないと言うことは理解しております。
ただ、こうやって事前にスキーマを決めてからスキーマレスのDBを使うという方法が
正しいのかどうかについて疑問に思い質問させて頂きました。
詳しい方いらっしゃいましたらお願い致します。
スキーマレスと言っても、どんなデータがどうやって入ってるかを知らないと、
取り出しも、更新もできないわけで。
その約束事を、NoSQL Database ではシステムとして持っていない、というだけの話です。
質問にあるように embed を使うなら、なおさらです。
MongoDB のようにフィールド名があるようなタイプは、スキーマレスというよりは、
スキーマフリーと呼ぶ方がしっくりくると思います
Key-Value データベースだって、キーの意味を決めないとデータのやり取りはできないし、
名前と値という二つだけのフィールドという固定のスキーマになっている、とも言えますし。
もちろんスキーマレスという構造上,こういったルールを強制することはできないと言うことは理解しております。
ただ、こうやって事前にスキーマを決めてからスキーマレスのDBを使うという方法が
正しいのかどうかについて疑問に思い質問させて頂きました。
正しいかどうかというか、普通に作ると、そのような手順になると思います。
MongoDB だと、将来的な追加/変更が楽チンなので、ルールを緩くしておいたり、
設計の煮詰め度合いを軽くしておいて、必要なら後で変えよう、というやり方ができるね、
ってところが RDBMS と違うだけです。
コメント(0件)