NoSQL数据库架构设计

时间:2017-03-18 16:13:33

标签: mongodb

我正在尝试找到一种创建数据库模式的方法。对数据库的大多数操作都是Read。

假设我在应用程序上销售书籍,因此架构可能看起来像这样

 T(n) <= 2T(n-2) + c
 T(n) <= 4T(n-4) + 2c
 T(n) <= 8T(n-6) + 3c
          .
          .
          .

所以大多数操作都会像

T(n) <= 2^k*T(n-2k) + kc

我应该为作者和流派创建单独的集合,然后像在关系数据库中那样引用它们,或者像上面那样嵌入它们?因为看起来我嵌入它们,为了在db中存储数据我必须手动输入作者名称,我可能会错误地将F.Scott Fitzgerald放入文档中,我不会得到结果。

1 个答案:

答案 0 :(得分:0)

首先,我会说一个不错的数据库选择。

就mongo而言,应该定义模式,以便最好地为您的访问模式提供服务。在设计模式时,我们还必须注意到mongo不支持SQL等连接和事务。因此,考虑到所有这些和其他属性,我建议您选择架构最好,因为它为您的访问模式提供服务。通常每当我们提取任何书籍细节时,我们都需要所有信息,如作者,页面,流派,年份,价格等。它就像面向对象编程,其中一个类必须具有其所有属性,并且所有非类属性应保存在其他类。 将作者单独收集只需添加一个额外的集合,然后您需要通过代码处理连接和事务。考虑到您对手动输入作者姓名的担忧,我实际上并没有得到。假设用户希望通过作者“xyz”查看书籍,以便他点击作者姓名“xyz”(如某些标签),您可以获取查询以将所有具有所选名称的书籍作为作者之一。如果用户手动键入用户名,那么它只是通过输入的字符串查找文档。我这里看不到任何手册。 只需添加,价格键也适用于每个文件。