0

以下是什么好方法:

每周,大约 250,000 条表示事务的记录将被附加到 SQL 2005 数据库中的一个大表中。需要扩充此数据并将其附加到另一个表。(例如,基于事务上的客户端 ID,将根据某些业务规则计算各种数据;数据取决于客户端 ID 和事务 ID。)将此表视为分析引擎的预处理输入。然后,该输入数据将通过分析引擎(供应商解决方案),该引擎将生成第三个数据库表。然后,该表将需要进一步处理(例如,通过客户 ID 和一些内部分析进行聚合)以附加到包含我们团队可用于生成报告的形式的结果的表中。将来,相同的数据很可能会提供给其他应用程序,

我们的技能基础是 C、C++、C#、.NET,并且熟悉 ADO.NET 和 LINQ。如果这对于这样的项目还不够,请告诉我。虽然我们现在没有新人才的预算,但我们可能会努力提高我们的内部技能基础或从另一个团队借用以满足项目要求。

4

4 回答 4

3

根据您的描述,这听起来应该完全由数据库驱动,例如使用 T-SQL 和 SSIS。加载到表和前后处理(聚合、后续加载等)是 SSIS 大放异彩的地方。如果我错过了意图,请告诉我。

于 2008-12-24T17:54:23.770 回答
2

这些天我正在阅读有关维度建模、星型模式和数据仓库的信息,所以请原谅我在学习了锤子之后看到了钉子。我会问你手头是否有一个好的数据建模师。我真的很喜欢 Ralph Kimball 关于维度建模的想法。我敢打赌,供应商报告解决方案会直接插入。在我看来,事务模式和报告模式之间的任务差异需要不同的方法。

于 2008-12-24T18:12:46.680 回答
0

这听起来像 ETL 项目。您想使用 SQL Server 集成服务。它是 SQL 2000 中 DTS 的替代品。

于 2008-12-24T18:08:49.497 回答
0
  1. 数据库操作是 S... L... O... W...

  2. 您将内容放入数据库中进行查询。

因此,您的中间结果不适合用于数据库存储。

“代表交易的250,000条记录...。需要扩充此数据...根据交易上的客户ID,将根据某些业务规则计算各种数据;数据取决于客户ID和交易ID。”

前几个操作不会导致您要查询的数据。您只是将它暂存在数据库中。那是(1)慢,(2)不是很有帮助。只需将其保留在文件中即可完成所有这些扩充处理。

将文件放在可以备份的目录中,就像备份数据库一样简单,你会没事的。

由于您的设计看起来相当固定,这就是您所能做的。但是,如果您的数据库设计是灵活的,请查看 Kimball 的数据仓库工具包,您会发现当您有依赖于客户 ID 的字段时,这实际上意味着您有一个客户维度。

定义一个客户表。在事实和维度之间使用简单的连接来定位客户数据。

这种维度查找技术适用于所有这些“数据增强”操作。因此,在您的“数据增强”中几乎不需要进行实际处理。

大多数情况下,您会弄清楚如何将传入交易的密钥与您定义的维度进行匹配。有时尺寸值发生了变化;有时您需要添加新的维度值。因此,您的“增强”转而检查维度,并将一些键附加到每个传入记录。然后将具有适当度量和外键的事实表加载到维度。

于 2008-12-28T15:56:54.627 回答