Asp.net 在数据库或文件系统中存储静态数据
目前,我们通过创建不同的查找表(性别、状态等),将静态数据(如性别、婚姻状况、状态等)存储到数据库中。我们有近10个查找表。所有这些表都是FK to transaction table-user(存储所有用户的人口统计信息)。其中一些静态数据也被其他事务表使用。现在,在获取用户信息时,我们通常会将一个连接放到这些表中,并获取相关文本。当然,这些连接可能会产生性能问题,而且根据MSDN,我们在一个select查询中的连接不应该超过5个。现在为了避免这种情况,我们可以将所有静态数据移动到xml文件中并从中读取。当然,我们将缓存xml数据,以便只读取一次。我想知道的是,这是一个好办法。我可以看到下面的权衡-Asp.net 在数据库或文件系统中存储静态数据,asp.net,.net,sql,xml,localization,Asp.net,.net,Sql,Xml,Localization,目前,我们通过创建不同的查找表(性别、状态等),将静态数据(如性别、婚姻状况、状态等)存储到数据库中。我们有近10个查找表。所有这些表都是FK to transaction table-user(存储所有用户的人口统计信息)。其中一些静态数据也被其他事务表使用。现在,在获取用户信息时,我们通常会将一个连接放到这些表中,并获取相关文本。当然,这些连接可能会产生性能问题,而且根据MSDN,我们在一个select查询中的连接不应该超过5个。现在为了避免这种情况,我们可以将所有静态数据移动到xml文件中
连接到为类型列指定文字值的引用表,然后匹配Id或值。这可能也适用于FK约束(但需要在不同的数据库软件上进行检查)。我认为MSDN关于连接数量的声明应该被视为一个指导原则,而不是一个规则。你有没有想解决的具体问题?这些查询当前是否执行缓慢?如果是这样的话,您可以采取其他方法来提高性能,例如索引、应用程序中的缓存,最后作为最后的解决方案进行非规范化。目前还没有,因为数据量很低,但当我们将有25k行放入表中时,它肯定会出现。此外,为了明确数据将如何存储在用户表中,将为该用户存储静态数据的相关id(例如,用户表将具有列stateid,并且其中将保存状态id),静态文本将存储在xml中,并将根据id检索适当的文本。免责声明:以下是我自己开发的快捷方式,我开发了这些快捷方式,以加速这些类型的问题,这些快捷方式是基于多年来的数据库内容返回到dBase。I键查找表通常是静态的,按字符串的行数很小(即PhoeType:Mobile、Home、Work等)。我不使用整数ID为它们设置键。这样,您就不需要连接来显示文本,但它仍然会强制您保持完整性并根据需要提供查找。@鉴于我不知道Sql Server运行在哪种类型的硬件上,这只是一个随机猜测,但我认为您不会看到这种设计的性能问题(假设索引正确)直到您进入数百万行…Sql Server非常擅长查询这样的关系数据。@Punit-到目前为止,听上去我是如何做到这一点的。请注意,虽然每个
连接都需要成本(在性能方面),大多数RDBMS将能够处理大量的表引用—我已经编写了包含近20个表引用的语句,但DB2的限制是100+(取决于版本)对于具有“很少”行的静态查找表,系统可能会将其保存在内存中。或者,如果系统支持它,考虑物化/索引视图。