基于文件系统实现可追加的数据集市

可阅读原文:http://c.raqsoft.com.cn/article/1538189724921?r=alice

一 问题背景

绝大多数的应用系统中,一开始数据的存储和计算基本都是由数据库来完成的,同时服务于业务交易和报表查询;不过在经过几年信息化建设和数据积累后,常常都会遇到数据库压力变大,从而导致性能瓶颈的问题。

究其原因,往往发现针对历史数据查询的报表在其中占了很大比重。进一步分析会发现,这类报表通常都有如下特征:

1、数据变化小:供查询的历史数据几乎不再发生变化;

2、数据量大:数据量随时间不断增加;

由于大多数数据库的JDBC性能都很低下(JDBC取数过程要做数据对象转换,比从文件中读取数据会慢一个数量级),如果数据始终存放在数据库中,当涉及数据量较大或并发较多的时候,报表的性能会急剧下降,进一步还会严重影响相关的业务操作,如市场营销、数据整理再汇报等。

针对这一问题,常见的解决方案是在生产库和应用之间再增加一个前置数据库,利用ETL工具定时从生产库中提取数据,清洗后再导入到前置数据库中,所有的历史报表查询都基于前置数据库,从而和生产库分离,缓解生产库压力。

不过这种方案增加了很多不必要的成本、多余的组件和工作量,同时也加大了后期的管理和维护难度;更为重要的是,当数据量比较大时,报表查询还是很慢,因为上面已经提到过的根本问题并没有得到解决,大多数数据库的IO性能远低于文件系统,而报表性能又严重依赖于数据库取数环节,也就是说,没能从根子上解决问题。

二 解决思路

要从根子上解决问题,我们可以假设如果文件拥有计算能力的话,将这些变化不大的历史数据搬出数据库,采用文件系统存储,而不是前置数据库,那么将可能获得比数据库高得多的IO性能,这样不仅能够解决大数据量报表查询慢的难题,我们还将获得如下这些好处:

1、管理方便;文件天然支持多级目录,而且复制、转移、拆分都比数据库简单、高效得多,这样,用户就可以按照业务模块、时间顺序等规则分类管理数据,在应用程序下线时,也可以按照目录删除该应用对应的数据。数据管理因此变得简单清晰,工作量显著降低。

2、成本低廉;既然是文件,那就可以简单地存储在廉价硬盘中,无需购买昂贵的数据库专用软硬件。

3、降低数据库扩容压力;数据库吞吐负担降低,就可以显著推迟扩容临界点的到来,数据库可以继续服役,也可以节省大量的扩容成本。

4、资源利用率高;用文件来存储数据并非要抛弃数据库,相反的,文件应当只存储安全要求不高、但数据量巨大的外围数据以及库外文件,而数据库仍然存储核心数据。如此一来,文件存储和数据库存储各司其职,资源利用率显著提高。

那么,如何才能有效地为文件赋予计算能力呢?下面将要介绍的润乾集算器,就是这样一款利器,通过集算器,可以实现复杂计算与报表展现的分离,其内置的集算引擎可以使文件拥有计算能力,轻松应对各种疑难杂症。下图显示了常规情况和引入集算器后的报表系统结构对比,应该说,引入集算器后,整个体系架构变得更加清新与合理了:

undefined

 

场景说明,具体实现方式可阅读原文(内容详细) :http://c.raqsoft.com.cn/article/1538189724921?r=alice

 


作者:Andy
来源:乾学院
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值