/ / NoSQLの計画例 - sql、database、nosql

NoSQL計画の例 - sql、database、nosql

私はNoSQLについてのことを読んでいますが、それは関係に基づいているわけではないことを知っていますが、基本的なことをする方法を見つけ出すことはできません。 (そして、実際のサンプルコードが見つかりませんでした)。

ユーザー、投稿、コメントを保存したい

SQLバージョン:

user"s table: user_id, username
posts"s table: post_id, user_id, content
comments"s table: comment_id, content

わかりました。

NoSQLでは、私が起草したのは(100%の機能性、私は今のところMongoDBなどの技術を使用していません)

users:
{
id: XX,
username: "John"
},
{
id: OO,
username: "Mike"
}

posts:
{
id: YY,
content: "How are you all ?",
user: {
id: OO,
username: "Mike"
},
comments: {
id: ZZ,
content: "Fine",
user: {
id: XX,
username: "John"
}
}
}

ユーザー全体の代わりに投稿とコメントにユーザーのIDを格納することができましたが、SQLではなくNoSQLを使用しているため、私はそれをやりません。

最初 ?このデータモデルはNoSQLにとってうまくいきますか?

第二に、前の質問の答えが「はい」の場合、ユーザーXX(John)が「Tony」のユーザー名を変更した場合潜在的に私は彼からのすべての投稿を更新しなければならず、コメントごとに同じものを更新する必要があります。彼がそれのユーザーの人生の間に投稿したと想像してみましょう.10,000 +コメント、だから、私はそれを間違っていると推測しています。

私の誤解を明確にすることはできますか?

回答:

回答№1は0

問題の問題は、それがすべてのNoSQLデータベースは、 "Documents"(JSON)をデータベースに保存して後で内容を取り出せるようにするための質問があるような問題に基づいて、同じ方法で動作します。ドキュメントストアの視点:

既にNoSQLにはこれを手動で処理する必要があります。 NoSQL Worldでは通常、データベースへの往復の少ないドキュメントを確実に取得するための最初の手順です。したがって、ポストにユーザー名を追加する方法が一般的なアプローチです。

あなたが述べている問題は完全に有効です。ユーザー名が変更されるとどうなりますか?それは有効ではあるが本当にそうではないが、ブログのユーザ名は通常すべての鍵であるため、それを変更することは大きな変化の一種であり、通常は許可されない。

リレーションシップを実行するには、後でIDを持つドキュメントを作成し、必要に応じてIDを格納する必要があります.SQLの世界と同じ方法でデータベースを正規化します。この場合、IDがユーザーの場合はインデックスを使用してパフォーマンスを向上させる必要がありますドキュメント内部ID、またはユーザー名をドキュメント自体のIDとして使用します。 djondbでは次のようになります:

{
"_id": "myuser",
"name": "Cross"
}

ブログには

{
"userid": "myuser",
"content": "Hello world"
}

さて、複数のドキュメントを更新する必要がある場合はどうしますか?その場合、データベースを一貫性を保つために、いくつかのドキュメントのトランザクションをサポートするドキュメントデータベースdjondbが必要になります

データモデリングの詳細: http://djondb.com/nosql-masterdetail-sample/

djondbのトランザクションの詳細: http://djondb.com/section/transactions/

免責事項:私はdjondbと仕事をするので、私はいつも偏っています!

お役に立てれば、