我们正在使用 SQL Server 数据库在 .net 3.5 中构建一个新应用程序。该数据库相当大,大约有 60 个表,其中包含数据负载。.net 应用程序具有将数据从数据输入和第三方系统导入此数据库的功能。
数据库中的所有数据都可用后,系统必须进行大量计算。计算逻辑相当复杂。计算所需的所有数据都在数据库中,输出也需要存储在数据库中。每周都会进行数据收集,并且需要每周进行计算以生成所需的报告。
由于上述情况,我正在考虑使用存储过程进行所有这些计算。问题是我们还需要数据独立性,而存储过程将无法为我们提供。但是,如果我一直在.net 中通过查询数据库来完成所有这些工作,我认为它无法快速完成工作。
例如,我需要查询一个表,该表将返回 2000 行,然后对于每一行我需要查询另一个表,该表将返回 300 个结果,而不是每行我需要查询多个表(大约 10 个)以获得所需数据,进行计算并将输出存储在另一个表中。
现在我的问题是我应该继续使用存储过程解决方案并忘记数据库独立性,因为性能很重要。我也认为如果我们使用存储过程解决方案,开发时间会少很多。如果任何客户想要在 oracle 数据库上使用此解决方案(因为他们不想维护另一个数据库),那么我们将存储过程移植到 oracle 数据库并维护两个版本以供将来任何更改/增强。同样,其他客户可能会要求其他数据库。
我上面提到的 2000 行是产品 skus。我提到的 300 行是我们要计算的不同属性,例如处理成本、运输成本等。我提到的 10 个表包含有关货币换算、单位换算、网络、区域、公司、售价、每人售出数量的信息天等。生成的表将所有信息存储为星型模式,用于分析和报告目的。目标是获取有关产品的任何详细信息,以便了解产品销售的哪些属性正在花费我们的钱以及我们可以在哪里进行改进。