对于一个具有海量数据的系统来说,性能的瓶颈最终就只能落在数据库身上了,这时候硬件升级和程序优化已经是无能为力,一个简单的查询也有可能给数据库带来沉重的负担。网格计算可把把一个需要巨大的计算能力才能解决的问题分割成许多小部分,然后把这些小部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终结果。对数据库进行网络计算的架构设计,无疑可以解决上述的性能问题。

那么怎么把一个巨大的数据库分割成许多小的数据库呢?现阶段比较行之有效的方法是对数据库进行分区处理。对于一个巨大容量的数据表,可不可以按日期,或者按类型,或者按区域,或者按ID号进行分割呢?答案是肯定的,这种分区方法也就是所谓的水平分区方法。另一方面,对于不同类型的数据,比如一个电子商务系统中的用户数据、商品数据、交易数据等,它们之间的联系不是很紧密,可以存放在不同的数据库中,这样就可实现了垂直分区。

 

经过分区处理,一个大的数据库,可以分成许多小的数据库。但是这样一来,对于这些小数据库的访问,和怎么进行综合处理,就引发出新的问题出来了。

在一个系统中,对这些数据库进行访问不是没有可能,使用多个连接,多重处理,无论在哪种框架中都很容易实现。问题是,在一个系统中分别对这些数据库进行访问,其程序的复杂度和处理效率,有可能会产生出另一个瓶颈,这就不是我们需要的结果了。当然也可以使用负载均衡设计,但是其程序的复杂度还是不可避免。

这里,再引进另一个概念:SOA架构,即面向服务的体系结构。SOA可以通过服务生产者/服务消费者的方式,或订阅/发布的方式等提供松散耦合的分布式服务体系。那么,对于各个不同区域的数据库,就可以按照SOA架构做成不同的服务中心,对外提供数据库访问接口。SOA可以使用CORBA、Web Service等方式予以实现。

这样一来,数据库服务器的压力分散了,程序计算的压力也分散了,不管数据库的数据量有多大,程序计算有多复杂,系统的性能都能得到最大限度的提升。

最后,大家可能会说,如果有一个网格数据库系统就好了,应用系统的设计就不用那么复杂了。是的,现在的数据库系统也有向这一方向设计的趋势,只是技术还没有成熟。相信在不久的将来,应该可以用到网格数据库。

 

参考:

网格计算:http://baike.baidu.com/view/20049.htm

SOA:http://baike.baidu.com/view/21305.htm?fr=ala0_1_1

posted on 2010-09-03 15:24  老 陈  阅读(3795)  评论(3编辑  收藏  举报