2017-02-17 10 views
0

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

ユーザー、投稿、コメントを保存します。

SQLバージョン:シンプル、[OK]を

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を格納している可能性が私はNoSQL、SQLではないので、私はそれをやっていません。

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

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

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

+0

NoSQLは単に「SQLではない」という意味ですか? NoSQLと呼ばれる標準化された構文はないので、すべては使用しているデータベースに依存します。あなたが投稿するものはJavaScriptオブジェクトのようなものです。 –

+0

NoSQLデータストア(Cassandraなど)は、通常、キー値ストアです。したがって、あなたのケースでは、おそらくキーがユーザーIDになりますし、はい、それが指しているJSON BLOBを処理する方法を見つける必要があります。 –

答えて

0

質問の問題は、「ドキュメント」(JSON)をデータベースに格納する方法に関連するような問題に基づいて、すべてのNoSQLデータベースが同じ方法で動作することを前提としていることです後で内容を取り出すことができます。

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

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

リレーションシップを実行するには、後でIDを持つドキュメントを取得し、必要に応じてIDを保存して、SQLワールドでの場合と同じ方法でデータベースを正規化します。この場合、インデックスを使用してidがドキュメントの内部IDではなくユーザーである場合は、パフォーマンスを確保するか、ドキュメント自体のIDとしてユーザー名を使用してください。 djondbでのようなものになります。

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

とブログは今、あなたはいくつかの文書を更新するために何が必要な場合は

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

を持っているのだろうか?http://djondb.com/section/transactions/

免責事項:djondbでの取引に関するhttp://djondb.com/nosql-masterdetail-sample/

より:、その場合には、あなたは、一貫性のあるデータモデリングについて

もっと自分のデータベースを維持するために、djondb、いくつかの書類上の取引を支援する文書データベースが必要になります。私はdjondbと仕事をするので、私はいつも偏っています!

希望します。