数据库是一个具有海量数据系统的一个性能瓶颈,一个简单的查询也有可能给数据库带来沉重的负担,硬件升级和程序优化已经无法解决这个问题,因此对数据库进行网络计算的架构设计,无疑可能解决上述的性能问题。网格计算可把把一个需要巨大的计算能力才能解决的问题分割成许多小部分,然后把这些小部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终结果。
对于如何将一个庞大的数据库分割成许多小的数据库,本文做了以下探讨:
通常,我们可以按日期,或者按类型,或者按区域,或者按ID号进行分割数据库,但对于不同类型的数据,比如一个电子商务系统中的用户数据、商品数据、交易数据等,它们之间的联系不是很紧密,可以存放在不同的数据库中,这样就可实现了垂直分区。
在一个系统中,对这些数据库进行访问不是没有可能,使用多个连接,多重处理,无论在哪种框架中都很容易实现。问题是,在一个系统中分别对这些数据库进行访问,其程序的复杂度和处理效率,有可能会产生出另一个瓶颈,这就不是我们需要的结果了。当然也可以使用负载均衡设计,但是其程序的复杂度还是不可避免。
SOA架构,即面向服务的体系结构。SOA可以通过服务生产者/服务消费者的方式,或订阅/发布的方式等提供松散耦合的分布式服务体系。那么,对于各个不同区域的数据库,就可以按照SOA架构做成不同的服务中心,对外提供数据库访问接口。SOA可以使用CORBA、Web Service等方式予以实现。
这样一来,数据库服务器的压力分散了,程序计算的压力也分散了,不管数据库的数据量有多大,程序计算有多复杂,系统的性能都能得到最大限度的提升。