【问题标题】:Best approach for SQL Schema to Mongoose ModelsSQL Schema 到 Mongoose 模型的最佳方法
【发布时间】:2018-08-27 18:39:40
【问题描述】:

对于没有 NoSQL 最佳实践经验的人来说,将 SQL 模式转移到 Mongoose 模型的最佳方法是什么。 何时应该使用 SubDocuments 以及何时使用 Populate 来引用其他文档。 是否有任何转换器可以采用大型 SQL Schema 并将其转换为 Mongoose 模型(找不到类似的东西)。

我知道这个问题有点主观和广泛,但任何参考或线索将不胜感激。

亲切的问候

【问题讨论】:

    标签: sql json mongoose


    【解决方案1】:

    您的问题与 Mongoose 没有严格关系,Mongoose 只是 MongoDB 的 ORM,而是与一般 NoSQL 数据库的设计以及它们与传统 SQL 数据库的关系如何。

    一般来说,最好在以下情况下使用嵌入式(非规范化,Mongoose 中的子文档)数据模型:

    • 我们有一些信息需要同时全部检索,经典的例子是地址(来源MongoDB网站):

      地址:{

            street: "123 Fake Street",
            city: "Faketon",
            state: "MA",
            zip: "12345"
          }
      
    • 您有一对 N 的关系,其中 N 个元素始终在第一个元素的上下文中访问。

    所以一般来说,当我们不需要自己访问相关实体时,我们会将它们嵌入到父对象中,或者通常是另一个有意义的对象。这有一些优势,比如最快的读取、更少的数据库操作和原子更新。这种模型是 NoSQL 的标志性特征之一,无模式设计或灵活模式。

    另一种情况是引用(标准化,使用 Mongoose 中的填充方法)数据模型,它更适合以下情况:

    • 我们不想通过嵌入来复制数据,因为这样做不会给我们带来更好的性能,或者仅仅是性能提升不值得增加复杂性。 例如:想象在 Spare Parts 数据库的所有文档中嵌入相同的 Manufacturer 信息,最好有单独的制造商文档并将引用它们放在备件中零件文件

    • 我们需要表示 N-to-N\nested\complex 关系。

    • 我们有分层结构中的数据,出于某种原因我们需要维护它,因此我们关心架构结构并希望保留它。

    • 1234563以相同的方式更新或访问文档的每个部分。
    • 另一方面,如果嵌入更多数据,我们需要更少的查询来获取数据,但仅更新一小部分的计算量会更大,因为它需要访问整个嵌入。

    可以在此处和页面后面的链接中找到有关 MongoDB 设计模式的良好入门。 https://docs.mongodb.com/manual/core/data-model-design/

    【讨论】:

    • 这非常有用,并帮助我将我的大脑包裹在 NoSQL 模型上,谢谢您,先生
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 2022-01-22
    • 2015-01-05
    • 2023-03-17
    • 2019-11-01
    • 2013-12-20
    相关资源
    最近更新 更多