私はRedisをnosqlデータベースとして使用していますが、実際にはそれを楽しんでいますが、それは便利ではない場合もあります(すべてのデータモデルをnosqlで使用できるとは限りませんが...)。
私は、Redisで以下を実行する適切な方法があるのか、それともRDMSを決定的に行う必要があるのかを知りたいと思います。nosqlによる情報の重複?
のは、私は2つのオブジェを持っているとしましょう:
- User
- Asset
資産は、「フラット」、「建物」や「家」のいずれかになります。
は、私のような資産を収集し「資産」という名前のRedisのリストを使用します。
assets = [asset:1, asset:2, ....]
各資産があるが、ハッシュのように:私はすべての資産のリストを取得できますか
asset:1 = {type: flat, value: 150000$}
タイプ "フラット"?
最も簡単な方法は、アセットのリストを反復して、それぞれのタイプをチェックすることです。これは線形であり、とても良いようです。
もっと良い解決策はありますか?
「フラット」というタイプの資産の参照を含む「フラット」が新しいリストを作成すると便利なことがありますが、このニュースリストはオーバーヘッドを引き起こすため、同期させる必要があります。
flats = [asset:1, asset:5, ...]
これはデータ複製につながります...これは悪い...これはまだnosqlと一緒に行く方法ですか?
他の提案はありますか?
感謝you'r権利を格納し、1、事は私達がはっきりオーバーヘッドを参照のNoSQLです。最後の点については、私もユーザーのためのリストを使用する場合は、あなただけのインデックスを使用してもusers:[2、4、9]、assets = [1,5]?私はこのアプローチを使用しませんでしたが、私はユーザーと資産の鍵が十分に分かれていないことを肯定するでしょう。 – Luc
RDMSと同じインデックス機構を構築すれば、nosqlのメリットは何ですか?私は、RedisがRAMにあるので、利点はスケーラビリティとパフォーマンスだと言いますが、それはそれほど明白です。 – Luc
@Lucキーの名前はIDをスコープできます。それはタイプ "user"の値 "1"なので、キーユーザを構築することを知っています:1 ポイントはリレーショナルデータベースに関して有効です。制御の引数があります。あなたはもっときめ細かくコントロールできます。ほとんどの人は、たとえそれを使わなくてもデータをレディスでモデル化しなければならないと考えているので、実際にはどのリクエストを実行する必要があるのかを見ることができます。 Oracleはそれを隠すでしょう、あなたはそれを見ています。 – menacingly