所以我有一个设计决定要做。我正在建立一个网站,所以速度是最重要的。我的价值观依赖于其他价值观。我有两个选择:
1- 从数据库中检索我的对象,然后生成依赖值/对象。
2- 检索具有已存储在数据库中的相关值的对象。
我将 ASP.NET MVC 与实体框架一起使用。
在做出这样的选择时我应该考虑哪些因素?
所以我有一个设计决定要做。我正在建立一个网站,所以速度是最重要的。我的价值观依赖于其他价值观。我有两个选择:
1- 从数据库中检索我的对象,然后生成依赖值/对象。
2- 检索具有已存储在数据库中的相关值的对象。
我将 ASP.NET MVC 与实体框架一起使用。
在做出这样的选择时我应该考虑哪些因素?
您几乎肯定会发现存储派生值不会带来任何性能优势。显然,如果依赖项非常复杂或依赖于大量数据,这可能会发生变化,但是您没有提及有关数据的任何具体内容,所以我只能笼统地说。
换句话说,不要存储完全派生的值,因为它们会引入更新异常(换句话说,在更新数据时,必须有人了解这些依赖关系并为其编写代码,而不是像可能的)。
问自己这个问题:
依赖值是否基于业务规则?
如果是这样,那么不要将它们存储在数据库中 - 不是因为您不能或不应该,而是因为这是一种好的做法 - 如果这是最好的或唯一的地方,您应该只在数据库中拥有业务规则它,不仅仅是因为你可以。
将对象序列化到数据库通常比在普通编译代码中创建对象要慢。数据库访问通常很快,但序列化的行为很慢。但是,如果您有一个耗时的复杂对象创建过程,那么序列化可能会更快结束,特别是如果您使用自定义序列化方法。
Sooooo ....如果您的“对象”是具有一些计算/派生值的相对正常的数据对象,那么我建议您将“对象”的值存储在数据库中,从数据库中读取这些值并将它们映射到数据在编译的代码中创建的对象*,然后计算您的依赖值。
*请注意,这是标准数据检索 - 有些人使用 ORM,有些人手动将值映射到对象。