数据库可以分为集中式数据库和分布式数据。集中式系统管理单一数据库,而分布式系统管理多个系统上的多个数据库。分布式系统组件可以根据组件系统的自治性分为两类:联邦的和非联邦的。
集中式数据库将所有数据存放在一个地方的一套系统中,所有用户连接到这套系统进行数据访问。对某些访问受限的数据来说,集中化可能是理想的,但对于需要大范围、广泛使用的数据来说,集中式数据库可能存在风险。例如,如果集中式数据库不可用,就没有其他途径能访问到数据。
分布式数据库通过扫描大量节点来快速获取数据,主流的分布式数据库技术史基于普通的商业硬件服务器来实现的。它被设计成可横向扩展,即从一台到成千上万台服务器,而每台服务器提供本地的计算和存储能力,高效能力不是单一硬件,而是依靠数据库管理软件在服务器间复制数据来实现,因而可以让整个计算机集群提供高效的服务。在数据库管理软件的设计之初,就要考虑如何监测和处理故障。任何一台给定的计算机都可能会发生故障,但整个系统不太可能丧失服务能力。
一个分布式数据库通过采用MapReduce模型进一步提升性能。在MapReduce模型中,数据请求会被分成需要小的工作模块,每个工作模块都可以在集群内任一节点上执行一次或重复执行。另外,数据位于各个计算节点上,通过集群提供高贷款的聚合数据访问能力,文件系统和应用程序在设计上都能自动处理节点时效的情况。
数据联邦提供的数据不需要对数据源进行额外复制或持久化,联邦数据库系统地将多个自治的数据库系统映射成一个单一的联邦数据库。组成联邦的数据库有时是分散在不同地理位置,通过计算机网络关联在一起,他们保留本地的自治操作,同时参与到一个联邦中