2

在我的系统员工日志中,请求和请求是关于设备的。

为了避免每次需要显示请求时都加载员工和设备文档,我想在请求文档中对员工姓名和设备库存编号、制造商名称和型号进行非规范化处理。

我在这里走错路了吗?这是反模式吗?

我意识到,如果我这样做,那么我将不得不更新所有受影响的请求文档,以防员工姓名更改或设备库存编号更改的极少数情况。


PS:文档数据库建模指南的链接也将不胜感激。

4

3 回答 3

2

狡猾,这实际上取决于您所需的速度水平。如果您只有一个没有分片的数据库,并且您可以使用非常快.Include的性能,那么为了简单起见,请不要进行非规范化和使用。但是,它们不适用于分片会话,因此您可能希望在那时进行非规范化并获得闪电般的性能

.Include我非常个人的观点是,除非您有充分的理由不使用它,否则您应该始终使用它。

于 2012-02-21T21:14:00.093 回答
1

Sly,就您而言,如果信息发生变化,您真的需要更新信息吗?如果 Sally May 在 2011 年要求购买一台新笔记本电脑,那么在 2012 年将该要求更改为 Sally May-Jones 是否有意义?

通常当我们想要非规范化时,我们不想要它以提高性能(尽管它是一个因素,但 Include 可以很好地处理它)。我们希望它能够获得数据的时间点视图。

于 2012-02-22T04:25:20.927 回答
1

是一篇关于非规范化的简短文章。

总之,如果您永远不打算更新,非规范化是可以的,并且性能优势超过了存储劣势(通常是这样)。

于 2012-02-21T21:17:30.597 回答