redis - 如何设计“多对一”在非关系型数据库
ringa_lee
ringa_lee 2017-04-21 11:16:51
0
3
921

现在存文章内容用hash类型:

post:$post_id
    title,
    content
    ...

comment:$comment_id
    content,
    date,
    status

posts:
    $post_id, $comment_id

存了一个hash类型的posts来表示关系,可能是还是没摆脱关系型数据库。

这种“一对多”的模式,如何在redis上更合理……更redis的体现出来.
应该如何设计这里

ringa_lee
ringa_lee

ringa_lee

全員に返信(3)
伊谢尔伦

NoSQL が Join 関数を完全にサポートしていることはほとんどないため、展開された関係を NoSQL に保存するには非正規化形式が一般的に使用され、その関係はもはや「多対 1」ではなく「1 対多」になります。

コレクションタイプを使用して、Redis のリストやセット、MongoDB のサブドキュメントなどのサブドキュメントを保存できます。

NoSQL の場合は、記事やコメントなどの関連するものをまとめるという単純な原則があります。可能であれば、記事内だけでなく、コンテンツを含む記事とコメントのすべての属性をまとめてください。コメントの ID がレコードに保存されます。
この利点は明らかです。データをどのように分割しても、1 回の読み取り操作だけでデータを取得できます。これは、非常に手間がかかります。バックエンドのスケーラビリティが大幅に向上します。
もちろん、このような設計が常にアプリケーションに適しているとは限りません。たとえば、記事と著者の間の関係は完全に非標準化できない場合があるため、データの表示方法とプロセスを慎重に検討して、データをどのように整理するかを決定する必要があります。

つまり、NoSQL は万能薬ではなく、より高い柔軟性、拡張性、パフォーマンスを提供しますが、元のブラック ボックス データベースをホワイト ボックス ストレージ エンジンに簡素化することもできます。さまざまな要素の中から最適なバランスを自分で見つける必要があります。この仕事には多くの経験とビジネスに対する深い理解が必要です。

もちろん、データ量が少ない場合は問題ありません。

いいねを押す +0
阿神

リストを使用しますか?

いいねを押す +0
巴扎黑

post_id:setにコメントのIDを入れることはできないでしょうか?

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート