请教banq老师银行成本分摊千万级数据量处理问题

项目概述:xx银行是通过ETL从核心业务系统中提取业务数据、并转换成SAP R3 系统中对应的业务数据。SAP R3 系统业务数据输出到SAP BW 数据仓库中进行数据建模,最后通过SAP BO 报表形式呈现。
SAP R3本身存在的成本分摊功能由于涉及数据量太大,导致分摊性能非常低。现在客户提出需要使用Java来读取 SAP 和ETL中的数据,并进行成本分摊、并输出到BW数据仓库中,最终由SAP BO 来报表呈现。
成本分摊包括机构之间的分摊和PA分摊。也就是部门之间分摊完毕,再分摊到接收方纬度组合的业务线上,分摊的业务数据高达千万级。
sap系统自带的成本分摊功能需要三天才可以完成分摊,客户要求能够缩短分摊时间,提高分摊性能。
目前需要做的工作:
1.读取SAP系统原有成本相关数据,并导入到现有数据库中。(数据量可达千万级)
2.将导入成功的部门成本数据按照分摊规则,分摊到上百万级的业务线上
3.将分摊的所有业务线的数据输出。

客户坚决要求使用Java来实现,个人认为跟语言没有关系,主要是对高数据量读取导入、以及分摊的过程性能优化。
请banq老师,给一些具体的解决方案。谢谢。

对具体分摊规则不是很了解,但是从“分摊”这个名词上,感觉有批处理的味道,而这个是云计算核心Map/Reduce的强项,可否使用Map/Reduce进行并行分摊计算,该合并的再合并,你了解一下Map/Reduce资料。

这么大数据量总得原则肯定应该是计算和存储分开,希望对你有帮助

必须使用云计算吗?这方面还不是很了解。
1.如果只有一台数据库服务器来存储、这个导入过程怎么优化,大量的数据在尽量短的时间导入到现有数据库中。而且每个月都要分摊一次,都要导入一次新的数据。
2.分摊的规则不是很复杂,就是按照一定的比例,计算每个业务线上的分摊成本,但是分摊的过程业务线数据量太大,也就是在分摊的过程计算->存储,这两个过程如何分离,如何实现能不能详细一点。
3.分摊的过程是把A部门的成本分摊到对应的上百万条生产线上并存储,如果是批量处理,是不是要使用缓存,缓存选择哪种方案比好。
4.banq老师能不能给提供一种java的实现技术方案,使用那一种技术比较好?比如jdon框架能满足我的要求吗,或者ssh,纯Java等等。
谢谢。

我觉得:
第一个问题:如何加快导入速度,这个应该跟你的数据库特性相关,比如他支持如何的导入方式,跟语言没有关系,还是应该通过数据库支持的导入方式,选择一个最快的方式,或者一个好的中间件
第二个问题;把A部门的成本分摊到对应的百万级的生产线上,是不是可以理解为插入的数据量很大,这样可以使用插入方便的比如nosql(mongodb或其他)可以达到并发上万,如果需要使用关系数据库,可以利用数据库特性提高插入性能,你提出的缓存的问题,我不知道是什么意思,可能我对业务不是很了解
第三个问题:无论是什么的技术反正性能对于你很重要,应该使用java中的性能更好的方法,或者特性去解决,而不是拘泥于框架,框架的存在是为了更清晰
以上是我的看法,也不一定对,希望咱们可以共同讨论