2016-03-28 12 views
0

CONTEXTのネストされた層のためのNoSQLデータベースの文書デザイン:Couchbaseの:データ

私は深くネストされた情報を持っているデータセットを持っています。そこに5つの層。最上位層には2番目のリストがあり、2番目には3番目のリストなどがあります。

私はすべての異なるデータへのアクセスレベルを持つユーザーがいます。 IEのトップレベルユーザーは、最上位レイヤーとその下のすべてのレイヤーにアクセスできます。 2番目のレベルのユーザーは2番目のレベルにアクセスし、その下のすべてのレイヤー、3番目から3番目のレベルなどはそのレベルにアクセスすることができます。

現在、トップレベルの情報しか保持していないDBがあります。トップレベルには8つの文書があります。したがって、レベル2または3のユーザーがログインすると、それらに関連するレベル1のデータが得られ、次にサーバー側のコードでは、ユーザーが必要とするデータのみをフィルタリングして送信します。

質問

私は良いのNoSQL DB設計はサーバAPIに基づいてドキュメントを設計することになると聞きました。私のデータでは、これはたくさんの冗長データを作成するようです。たとえば、ユーザーレベル5(最下位レベル)のデータは、同じデータがレベル3のデータに含まれるいくつかのレベル4データにすべて含まれていて、すべてが異なるドキュメントに含まれます。

これは問題ではありませんか?あるいは、私はこの問題について間違っていると思いますか?

答えて

1

データへのアクセスパターンについて考える必要があります。

本当に、それは冗長なデータを引き起こすかもしれませんが、私たちは情報化時代に生きています。

ここで本当に懸念しているのは、データにアクセスする速度です。 最速の方法は、それぞれ、レベルに1つのドキュメントですが、その後、あなたは

  • 冗長データを持っている
  • ネストされた文書
  • 更新が遅くなります
  • あなたはたくさんのが必要な場合は最速で

を読み込み更新、+あなたは一貫性が必要な場合は、小さな文書に分割することができます。 これを行う方法は、親の関係と親の子への参照を持つように文書のキーを設計することです。 あなたが望むようにキーを選択できるのは、Couchbaseの非常に一般的な操作方法です。

  • 文書の冗長データ
  • 個、いくつかは、文書ごとに取得
  • 高速アップデート - のみ更新ごく一部
  • 遅い読み込み、いくつかは、文書ごとに取得する(またはあなたがN1QLを使用している場合、参加する)

参考文献と埋め込みを組み合わせて使用​​することもできます(ユースケースによって異なります)。

+1

私はこれをすべて知っていたと思うが、それを再確認するためには私より賢明な人が必要だった。ありがとう。 – discodane

+0

クールで、ここでお手伝いします。力があなたと強くなるように、あなた自身に自信を持ってください! –

関連する問題