对于一个具有海量数据的系统来说,性能的瓶颈最终就只能落在数据库身上了,这时候硬件升级和程序优化已经是无能为力,一个简单的查询也有可能给数据库带来沉重的负担。网格计算可把把一个需要巨大的计算能力才能解决的问题分割成许多小部分,然后把这些小部分分配给许多计算机进行处理,***把这些计算结果综合起来得到最终结果。对数据库进行网络计算的架构设计,无疑可能解决上述的性能问题。
那么怎么把一个巨大的数据库分割成许多小的数据库呢?现阶段比较行之有效的方法是对数据库进行分区处理。对于一个巨大容量的数据表,可不可以按日期,或者按类型,或者按区域,或者按ID号进行分割呢?答案是肯定的,这种分区方法也就是所谓的水平分区方法。另一方面,对于不同类型的数据,比如一个电子商务系统中的用户数据、商品数据、交易数据等,它们之间的联系不是很紧密,可以存放在不同的数据库中,这样就可实现了垂直分区。
经过分区处理,一个大的数据库,可以分成许多小的数据库。但是这样一来,对于这些小数据库的访问,和怎么进行综合处理,就引发出新的问题出来了。
在一个系统中,对这些数据库进行访问不是没有可能,使用多个连接,多重处理,无论在哪种框架中都很容易实现。问题是,在一个系统中分别对这些数据库进行访问,其程序的复杂度和处理效率,有可能会产生出另一个瓶颈,这就不是我们需要的结果了。当然也可以使用负载均衡设计,但是其程序的复杂度还是不可避免。
这里,再引进另一个概念:SOA架构,即面向服务的体系结构。SOA可以通过服务生产者/服务消费者的方式,或订阅/发布的方式等提供松散耦合的分布式服务体系。那么,对于各个不同区域的数据库,就可以按照SOA架构做成不同的服务中心,对外提供数据库访问接口。SOA可以使用CORBA、Web Service等方式予以实现。
这样一来,数据库服务器的压力分散了,程序计算的压力也分散了,不管数据库的数据量有多大,程序计算有多复杂,系统的性能都能得到***限度的提升。
***,大家可能会说,如果有一个网格数据库系统就好了,应用系统的设计就不用那么复杂了。是的,现在的数据库系统也有向这一方向设计的趋势,只是技术还没有成熟。相信在不久的将来,应该可以用到网格数据库。
原文标题:网格数据库架构设计构想
链接:http://www.cnblogs.com/chrischen662/archive/2010/09/03/1817081.html
延伸阅读
网格计算已经成为热点,它所带来的低成本、高性能以及方便的计算资源共享正是众多企业所追求的。未来的数据库将构筑在网格计算环境之上。
RAC(Real Application Cluster,真正应用集群)是Oracle9i数据库中采用的一项新技术,也是Oracle数据库支持网格计算环境的核心技术。它的出现解决了传统数据库应用中面临的一个重要问题:高性能、高可伸缩性与低价格之间的矛盾。
除了RAC技术,Oracle9i数据库还提供其他功能来支持网格计算,包括支持在数据库之间进行数据快速复制的Transportable Tablespaces、支持数据流更新的Oracle Streams、支持应用可移植性的One Portable Codebase等。Mendelsohn认为,对那些需要建立数据中心的企业来说,Oracle9i RAC加上刀片服务器和Linux操作系统,就完全能够替代传统的基于大型机的数据系统。
准确的说应为支持网格的数据库技术,Oracle10g中的g即为gridding网格。
【编辑推荐】