検索

ホームページ  >  に質問  >  本文

redis - 如何设计“多对一”在非关系型数据库

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

post:$post_id
    title,
    content
    ...

comment:$comment_id
    content,
    date,
    status

posts:
    $post_id, $comment_id

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

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

ringa_leeringa_lee2765日前895

全員に返信(3)返信します

  • 伊谢尔伦

    伊谢尔伦2017-04-21 11:18:51

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

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

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

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

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

    返事
    0
  • 阿神

    阿神2017-04-21 11:18:51

    リストを使用しますか?

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-21 11:18:51

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

    返事
    0
  • キャンセル返事