我的任务是构建一个应用程序,其中业务用户将定义许多数据操作规则。处理(例如,取一个数值并在基于规则中指定的条件选择的多个记录中平均分割它)。
每月必须运行批处理应用程序,以便按照定义的规则处理大约50万条记录。每条记录大约有100个字段。环境是.NET,C#和带有第三方规则引擎的SQL服务器
如果需要在8到10个小时左右的时间范围内处理记录,请您建议如何定义和/或确定哪种硬件最适合。如果用户想要根据硬件成本增加或减少时间范围,规格将如何变化?
提前致谢
Abby
答案 0 :(得分:1)
创建应用程序并对其进行概要分析?
答案 1 :(得分:1)
步骤0.创建应用程序。不可能像你从“纸张”规范那样描述一个多计算机系统的现实世界性能......你需要尝试一下,看看最大的缓慢下降......这是传统的物理IO,但是并不总是......
步骤1.在隔离环境中使用样本数据集进行概要分析。这是粗略指标。你不是要孤立花费时间的东西,只是衡量运行规则所需的总时间。
隔离环境意味着什么?您希望在计算机之间使用相同类型的网络硬件,但不允许该网段上的任何其他流量。这引入了太多变量。
个人资料意味着什么?使用当前硬件,衡量在以下情况下完成所需的时间。 编写程序以自动生成数据。
场景1.可能有1,000条最简单的规则。
场景2.您可以合理地期望用户输入1,000个最复杂的规则。
场景3& 4. 10,000最简单,最复杂。
场景5& 6. 25,000最简单和最复杂的
场景7& 8. 50,000最简单,最复杂的
情景9& 10. 100,000最简单和最复杂的
步骤2.分析数据。
查看完成时间是否有趋势。弄清楚它们是否与严格的规则数量相关联,或者复杂性是否也会影响......我认为它会。
开发一条趋势线,显示如果有200,000和500,000条规则,您可以期待多长时间。以200,000执行另一次运行。查看趋势线是否正确,如果没有,请修改开发趋势线的方法。
步骤3.在系统处理20,000个规则集时测量数据库和网络活动。查看更多规则是否发生了更多活动。如果是这样,您加快进出SQL Server的吞吐量的速度就越快。
如果这些“相对较低”,那么CPU和RAM的速度很可能是你想要加强所要求的机器规格的地方......
当然,如果所有这些测试都会让您的雇主花费更多而不是购买最强大的服务器硬件,那么只需量化测试时间的成本与购买最佳服务器的成本以及完成测试所需的成本您的应用程序和您控制的SQL以提高性能......
答案 2 :(得分:0)
如果此系统不是第一种,那么您可以考虑以下内容:
如果不是这种情况并且性能要求非常重要,那么最好的方法是创建一个原型,比如实施10个规则。使用原型处理数据集并外推到完整的规则集。根据这些信息,您应该能够获得初始性能和硬件要求。然后,您可以根据已处理数据量的计划增长,可扩展性要求和冗余来微调这些规范。