2016-02-28 39 views
2

例如,让我们假设下面的嵌套数据:每个标有'^'的单词将具有PLUDY的CRUD操作。没有标记'^'的单词也会有CRUD操作,但数量有限。NoSql中的分层数据表示 - 设计选择

此外,这些'单词'可以有新的孩子在前进。

什么是良好的设计选项/必须考虑代表这些数据的问题。 mongodb(NoSQL)中的单个文档还是多个文档?

DISTRICT^ 
    cities^ 
    streets 
     flats^ 
     houses 
      rooms 
      lightBulbs^ 

回答

1

首先您需要考虑16MB的文档大小限制 - 如果这将是一种情况 - 那么数据需要位于多个文档中。

然后 - 您需要能够在该结构上构建有效的查询。因此,尝试从底层向上构建模式(意味着从下到上包含成员),并加载测试数据 - 以查看性能。 Mongo为更新子文档提供了很好的灵活性,但是在驱动程序级别(如c#),您最终可能会获得完整的大文档,执行就地更新并将更改推回到mongo。

当您拆分数据时 - 那么您将不得不对受影响的数据执行一组更新 - 因此您将在一个文档上丢失一个原子更新。

要考虑的其他事情是体系结构(一台服务器或分片群集),这会影响您如何拆分负载和缩放。

+0

感谢您的建议 - 文档中会出现几个缩略图,可能会将其推到16mb以上(我没有想过如何处理 - gridfs?),否则文本总是小于16mb - 可以分别处理图像?这个问题可能会很天真 - 因为我是网络后端新手。 – npr

+1

是的 - 您可以将图像推送到gridFS,并仅将其引用到基本文档中。 玩得开心! – profesor79