分布式数据库是指利用高速计算机网络将物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库。分布式数据库的基本思想是将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以获取更大的存储容量和更高的并发访问量。近年来,随着数据量的高速增长,分布式数据库技术也得到了快速的发展,传统的关系型数据库开始从集中式模型向分布式架构发展,基于关系型的分布式数据库在保留了传统数据库的数据模型和基本特征下,从集中式存储走向分布式存储,从集中式计算走向分布式计算。
另一方面,随着数据量越来越大,关系型数据库开始暴露出一些难以克服的缺点,以NoSQL 为代表的非关系型数据库,其高可扩展性、高并发性等优势出现了快速发展,一时间市场上出现了大量的key-value 存储系统、文档型数据库等NoSQL 数据库产品。NoSQL 类型数据库正日渐成为大数据时代下分布式数据库领域的主力。
这种组织数据库的方法克服了物理中心数据库组织的弱点。 首先,降低了数据传送代价,因为大多数的对数据库的访问操作都是针对局部数据库的,而不是对其他位置的数据库访问; 其次,系统的可靠性提高了很多,因为当网络出现故障时,仍然允许对局部数据库的操作,而且一个位置的故障不影响其他位置的处理工作,只有当访问出现故障位置的数据时,在某种程度上才受影响; 第三,便于系统的扩充,增加一个新的局部数据库,或在某个位置扩充一台适当的小型计算机,都很容易实现。然而有些功能要付出更高的代价。例如,为了调配在几个位置上的活动,事务管理的性能比在中心数据库时花费更高,而且甚至抵消许多其他的优点。 分布式软件系统(Distributed Software Systems)是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。
分布式操作系统负责管理分布式处理系统资源和控制分布式程序运行。它和集中式操作系统的区别在于资源管理、进程通信和系统结构等方面。 分布式程序设计语言用于编写运行于分布式计算机系统上的分布式程序。一个分布式程序由若干个可以独立执行的程序模块组成,它们分布于一个分布式处理系统的多台计算机上被同时执行。它与集中式的程序设计语言相比有三个特点:分布性、通信性和稳健性。 分布式文件系统具有执行远程文件存取的能力,并以透明方式对分布在网络上的文件进行管理和存取。 分布式数据库系统由分布于多个计算机结点上的若干个数据库系统组成,它提供有效的存取手段来操纵这些结点上的子数据库。分布式数据库在使用上可视为一个完整的数据库,而实际上它是分布在地理分散的各个结点上。当然,分布在各个结点上的子数据库在逻辑上是相关的。
Hadoop的分布式文件系统HDFS,作为开源的分布式平台,为目前流行的很多分布式数据库提供了支持,譬如HBase等。Yonghong的分布式文件系统ZFS,为分布式数据集市Z-DataMart提供了底层平台。