分布式数据库的优越性

从图12-1中可以看到,用户可以通过任何一个数据库访问所有3个数据库中的数据,而不必同时去连接3个数据库。

 

分布式数据库和数据复制型数据库有一些关系,就是数据库之间有关联和相互数据访问,但是它们的功能和目的是不同的,区别也确实显而易见。

就像前面说的那样,分布式数据库强调数据的分布存储,在一个纯粹的分布式数据库中,在所有的数据库上,一种数据可能只有一份。

而数据复制型数据库强调的是数据复制,通常是把一些数据库的数据向一个中心数据库中汇集。一般来说,数据复制型数据库的目的是提高本地数据的性能,因为将数据存储在一个数据库中就不会出现网络阻塞或者不稳定导致的性能问题。

在海量数据的数据库设计中,将数据库设计为分布式的架构是非常常见的,它主要有以下几个原因。

1)不再受限于单数据库容量

尽管现在SAN结构已经非常流行,但是在有的时候,如果考虑成本问题,也可以使用分布式数据库来解决磁盘容量的不足。

比如有100TB的数据,我们可以使用10台数据库来进行分布式数据存储,每台数据库上只需要10TB的空间。

2)分布式存储,提高I/O速度

如果海量数据存储在一台数据库中,而这台数据库上又经常运行着很大的SQL查询,I/O问题无疑是一个数据访问瓶颈,通过将数据分布在10台数据库上,这样I/O能力就提高了10倍!这是一个非常重要的性能提升。

3)分布式存储,提高数据处理速度

比如一个大的查询,它需要消耗很多CPU、内存和磁盘I/O,如果业务比较多,主机必然会出现资源不足的时候,通过使用分布式数据库架构,将这种资源分布到各个数据库中处理,可以有效地提升业务数据库的处理能力和速度。

4)分布式存储,可以有效地进行业务分割

这个功能和前面我们谈到的RAC的业务分割比较相似。

但和RAC相比,分布式数据库的业务分割更加彻底。在RAC里面,通过业务分割,可以让不同的业务运行在不通的实例上,但是RAC毕竟是一个整体,实例之间由内存的数据交换,实例之间I/O的争用,都会使处理能力受限。

而在分布式数据库中,每个数据库是一个独立的数据库,除非用户使用分布式操作,否则数据库之间相对独立,没有动态的资源共享问题。

在分布式数据库中,数据库之间的数据访问是通过数据库DB Link)来完成的。

凡是使用DB Link进行的业务操作,我们都称做分布式事务,这种分布式事务是由Oracle来协调处理的,对用户来说是透明的。

 

本文节选自《让Oracle跑得更快2—基于海量数据的数据库设计与优化》一书。

图书详细信息:http://bvbroadview.blog.51cto.com/3227029/628543