わかりました、NoSQL データベースはクエリにジョイントを使用しないことがすべてであることは理解していますが、いくつかの概念に頭を悩ませることはできません。たとえば、複数の著者とその著者に関連する記事を含むブログを作成したいとします。MySQL では、ユーザーのテーブルを作成します。
Users: id, name, surname, nickname, password...
Articles: id, user_id, title, content, date, tags...
しかし、MongoDB でこれを適切に設定するための最良の方法が何であるかはわかりません。私はただ言うべきですか:
db.users.insert({
id:1,
name: "Author name",
...
articles: [{id:1, article:1, title:"Article title", ...}, {...}, ...]
});
私はおそらくこのようなことをする必要がありますか?:
db.articles.insert(
{
...
article related stuff
...
user related stuff: {...}
);
それとも、記事用に別のデータベースとユーザー用に別のデータベースを用意する必要がありますか?
最新の 10 の記事の抜粋と著者データを表示するホームページがある場合、MySQL では、著者テーブルから著者のニックネームを取得し、記事テーブルからタイトルと抜粋を取得するための共同クエリを実行します。
ドキュメント指向のデータベースで自分のデータを表現する方法がよくわかりません。著者のデータをそれぞれの記事に保存する必要があるかもしれませんが、著者が情報を変更した場合、その著者のすべての記事を更新する必要があります。
MongoDB で個別のドキュメントを作成するのは理にかなっているように思えます。1 つはすべての著者ドキュメントを保持し、もう 1 つはすべての記事ドキュメントを保持しますが、最初の 10 個の記事を取得し、著者ドキュメントから著者データを取得する何らかの共同操作が必要になります。
わかりました、多分いくつかのマップ削減操作ですが、それがどのように見えるかはわかりません.
私のこの問題に関するあなたの考えとアドバイスをいただければ幸いです。ありがとう!
[編集] また、すべての記事を 1 つのドキュメントに保持する場合、1 つのドキュメントあたり 16 mb の制限があり、これは大規模な Web サイトの場合に問題になるため、記事用に別のデータベースが必要だと思いますか?