0

私は SQL の世界から来たので、NoSQL にはテーブルやリレーションなどがないことを聞かないでください。それはわかっていますが、リレーションのないカテゴリでニュースを保持する方法を理解するのは難しいです。

では、データベースのニュース、ニュースのカテゴリ、タグ、ユーザー プロファイル、およびユーザーによるニュースのコメントを保持したいとします。SQL では、このタスクは次のようなアーキテクチャで解決できると思います (構文を見ないでください。これは疑似コードです)。

categories ( id, title )
news (id, title, content, category_id)
users (id, first_name, last_name, homepage_url)
news_comments (id, news_id, user_id, comment)
tags (id, title)
news_tags (news_id, tag_id)

このタスクは MongoDB / CouchDB / NoSQL でどのように解決できますか? 私は優れたアーキテクチャに興味があります。インデックスのような特定のものについて知る必要はありません。

4

1 に答える 1

1

一般に、データを非正規化する必要があります。「ニュース」レコードは次のようになります。

news (id, title, content, category_title, [tags]) # that is list of tags

または技術的により正確で、次のようなものです。

(id, type=news, title, content, category_title, [tags])

「外部キー」でフィルタリングできるので、

news_comments (id, news_id, user_id, comment)

特定のニュースのコメントを選択する場合はそれほど問題にはなりませんが、ユーザーのコメントを表示する場合first_nameは、そのデータをコメントレコード自体に含めることをお勧めします。

では、ユーザーがコメントした後にデータを変更した場合はどうなるでしょうか。

  1. あなたは本当に気にしません
  2. 仕事に間違ったツールを使用しています

すべてのコメントを見つけて更新するオプション3がありますが、それが十分に一般的なケースである場合は、最初にリレーショナルデータベースが必要になる可能性があります。

于 2012-04-05T20:38:09.557 に答える