NoSQL最佳实践:我应该保存在应用程序中使用的衍生(计算数据)吗?

时间:2014-11-18 06:38:02

标签: mongodb database nosql

我有多个深层嵌套对象,包括一些原始数据,然后在一些用户输入后,对原始数据集进行计算,结果与原始数据一起保存。

Angular还在对象中存储了一些其他冗余数据。通过仅存储原始数据集,用户输入和一些ID,所有这些额外数据将很容易以编程方式重建。

最简单(但最不经济)的版本是按原样存储数据。这意味着大约2-3倍大小的对象,更多的存储空间和带宽使用等等。

另一个版本是存储所需的最少数据,并在每个查询上重建对象。

应用程序不是很大(但将来会增长),而且对象也不是(大约200个键)。

所以我很好奇一般来说最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

它在过度非规范化和在空间和复杂性方面具有高效结构之间取得平衡(如果你进行非规范化,则保持所有内容同步)。

从您的用户故事开始,查询模式将决定单个文档中需要哪些信息。

听起来这就是你无论如何都要这样做的。您在输入期间进行计算的嵌入式子文档。将计算值保留在父文档中,并确保它们与子记录一起更新。使用子文档意味着您也可以原子地更新计算值和emebedded子文档。