库外计算减轻数据库扩容压力及吞吐瓶颈

库外计算减轻数据库扩容压力及吞吐瓶颈

ID:27498722

大小:124.50 KB

页数:3页

时间:2018-12-04

库外计算减轻数据库扩容压力及吞吐瓶颈_第1页
库外计算减轻数据库扩容压力及吞吐瓶颈_第2页
库外计算减轻数据库扩容压力及吞吐瓶颈_第3页
资源描述:

《库外计算减轻数据库扩容压力及吞吐瓶颈》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、库外计算减轻数据库扩容压力及吞吐瓶颈信息爆发导致了企业数据量的持续增长,针对数据库的应用不断增多,并发访问越来越密集,数据库需要不断扩容来应对这些变化。然而,仅仅对数据库本身扩容难免陷入高成本低成效的窘境,企业应当使用库外计算来减轻数据库的扩容压力和吞吐瓶颈。数据库扩容的主因往往是冗余数据。数据库中有两类数据,核心的业务数据,以及由此派生出的面向具体应用的冗余数据(如为了提高性能和方便查询事先汇总的数据)。数据库建设初期,以核心数据为主。但随着业务的发展,冗余数据不论在量级和增速上都会大大超过核心数据,冗余数据变成了数据库

2、扩容的主因。冗余数据不必存储于数据库。核心数据的安全性要求高,数量少,有必要放进昂贵的数据库存储空间。冗余数据衍生自核心数据,它的安全要求不高,一旦损坏也可以通过核心数据重新生成,没有必要放进数据库中。之所以要把冗余数据放在数据库中,大多数情况不是为了安全性,而是为了让冗余数据获得计算能力,以便被应用程序使用。另一方面,将冗余数据放进数据库,反而会使数据的可管理性变差。数据库的表以扁平结构组织,不能以多级目录的形式来管理数据,只适合管理数量较少的核心表。而冗余数据种类多、数量大、命名随意,在数据库中很容易形成大量意义混淆的

3、表名,长此以往,数据库中会积累大量意义不明但又不敢删除的顽固数据,这就会长期占用大量昂贵的数据库存储空间,用户不得不购买更高档的专用服务器、空间更大的专用存储设备、数量更多的License来满足扩容的需要。冗余数据还会导致性能瓶颈。数据库的访问接口是私有的,私有接口既可以保证厂商的利益,也可以保证数据不会意外损坏,在数据量较小的时候是一种有效的安全措施。但数据量增长后,大量的冗余数据和集中的并发会同时涌向唯一的封闭接口,这就会导致可预估的吞吐瓶颈。可以看到,扩容时将冗余数据放在数据库中有很多弊端:代价高昂,可管理性差、减压

4、效果有限,资源严重浪费。相对的,文件扩容是一种成本低廉、管理方便、资源利用率高,减压效果明显的方式。文件扩容就是将不断增长的冗余数据存储在文件中,利用操作系统提供的开放接口直接访问文件,以此来达到并发访问、数据计算、数据管理的目的。如下图:文件扩容有四个优势:成本低廉、管理方便、资源利用率高、性能提升显著。成本低廉。数据存储在文件中,扩容时就只需简单地增加廉价硬盘,而无需购买昂贵的软硬件,比如专用服务器、专用存储设备、数据库License文件。管理方便。文件天然支持多级目录,复制、转移、拆分都比数据库简单高效得多,这就允许

5、用户按照业务模块、时间顺序等规则分类管理数据,应用程序下线时,也可以按照目录删除该应用对应的数据。数据管理因此变得简单清晰,工作量显著降低。资源利用率高。用文件来存储数据并非要抛弃数据库,相反的,文件应当只存储安全要求不高、但数据量巨大的冗余数据,而数据库仍然存储核心数据。如此一来,文件存储和数据库存储各司其职,资源利用率显著提高。减压效果明显。任何程序都可以使用操作系统的开放接口来访问文件,通道拥挤的情况就会大大缓解,性能的天花板会随之提高。更重要的是,文件可以方便地复制、分散在多台计算机上,这就可以使用多节点并行计算的

6、方式来解决吞吐瓶颈,性能可以进一步大幅度提高。虽然数据库也有并行解决方案,但Teradata、Greenplum等成熟的方案非常昂贵,免费的Hive、Impala目前计算能力和成熟度还不高,难以普及使用。文件扩容的优势很多,但有一个关键的缺点,即文件本身没有计算能力,我们需要特定的工具才能实现这种库外计算。R语言、MapRreduce、高级语言、集算器这类工具都可以实现库外计算,它们各有优缺点。R语言是科学家的计算工具,扩展包非常丰富,计算能力很强大,但它的语法和函数过于专业,并不适合普通程序员理解。R主要用于桌面计算,因

7、此很难集成到报表工具或JAVA、 C#等应用中。另外,R的并行计算能力很弱,需要配合第三方组合才能使用。MapReduce的并行计算能力很强大,廉价扩展是它的最大优势,另外,它和JAVA可以无缝集成,对程序员非常友好。但MapReduce没有提供底层计算函数,所有的基本运算都需要程序员硬编码完成,开发工作量很大。另外,MapReduce为了强容错性而导致的性能低下也是个不争的事实。JAVA、VB、Perl等高级语言也可以实现库外计算,当然,它们的开发难度就更大了,甚至连并行计算框架都需要程序员手工完成。集算器的单机性能接近

8、或超过数据库,同时它也支持廉价扩展和并行计算,因此整体性能表现优异。它支持JDBC输出接口,可以方便地集成到报表工具和JAVA,它也内置了大量针对结构化数据计算的库函数,开发难度也较小。但集算器对大规模集群支持不佳,这一点不如MapReduce。下面以集算器为例,说明库外计算是如何减轻数据库扩容压力及吞

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。