ADB是南京亚信科技公司自主研发的分布式数据库产品。ADB以开源的Postgres-XC为核心数据引擎,结合电信业务特点自主开发相关功能模块,形成自主知识产权的高可用,高性能,易用的分布式数据库产品。ADB集群对PostgreSQL数据库的语法和数据库函数进行了改写,以兼容oracle数据库的语法和函数。Postgres-XC (eXtensible Cluster)是一个基于shared-nothing架构的可扩展PostgreSQL数据库集群,由Postgres-XC全球开发小组开发并维护。
Postgres-XC同时也代表一个开源项目,提供了一个写可扩展、多主节点均衡同步、透明的PostgreSQL数据库集群解决方案[4]。该集群由多个互相联系的数据库组件构成,能够安装在多个物理机或者虚拟机中。写可扩展性意味着Postgres-XC能够在多个数据库服务器中进行配置,能够处理单服务器无法完成的多个写操作[5]。均衡意味着集群可以拥有不止一个提供数据库视图的数据库服务器[6]。同步意味着对任何一个数据库服务器的任何数据更新操作可以立即被其他节点上的事务看到[7]。透明意味着客户不需要担心数据在数据库服务器内部是如何存储的。Posrgres-XC可配置在多台计算机上运行[8]。每个表的数据根据用户的选择,以不同的方式进行分布式存储。当用户进行查询时,集群会根据目标数据的存储位置对相应的服务器进行查询[9]。在典型的WEB系统中,客户可以拥有很多的WEB服务器或者应用服务器来处理事务。然而在只有一个数据库服务器时,由于所有改变的数据必须对所有事务可见,上述任务就无法完成。与其他数据库集群不同,Postgres-XC集群支持该功能。客户可以安装在多台数据库服务器上,每台数据库服务器都可以为应用提供一致的数据视图。对于连接在其他服务器上的应用在任何服务器上的任何数据库更新操作都是可见的[10]。这个特点称为多主节点同步功能,是Postgres-XC集群最重要的特性。论文网
Postgres-XC由三个主要组件构成,全局事务管理器GTM(Global Transaction Manager),协调节点Coordinator和协调节点datanode。GTM是Postgres-XC的关键组件,提供了事务的一致性管理和元组的可见性控制。PostgreSQL集群的事务管理基于多版本并发控制MVCC(Multi-Version Concurrency Control)技术。Postgres-XC集群将该技术应用于GTM中,以保证集群组件的事务管理基于一个简单的全局状态。协调节点(Coordinator)是应用程序的接口,作用类似于PostgreSQL数据库的后端进程。协调节点不存储任何实际数据。实际数据存储在协调节点当中。协调节点接收SQL语句,获取全局事务ID(GXID)和快照,并查找相应的协调节点,要求协调节点执行相应的SQL语句。发送给协调节点的SQL语句与GXID和全局快照相联系,从而不会使得协调节点在接收到另一个协调节点的其他事务的SQL语句时产生误解。协调节点存储实际的数据。一个协调节点中可能存放着一张表的部分数据,也可能存放一张表的全部数据。协调节点并不能看到整个数据库的全局视图,它只关心自己存储的数据。需要执行的SQL语句由协调节点进行分析和重构,由相关的协调节点执行。SQL语句和对应的GXID和全局快照将传输到每一个协调节点。一个协调节点可能收到很多个协调节点的请求。由于每个事务都有一个独一无二的全局事务ID和相关的全局一致性快照,协调节点并不需要担心协调节点的每个事务或SQL语言从何而来。
在分布式数据库ADB的实际部署中,由于需要管理复杂的数据类型、存储和分析海量的数据,数据库系统的功能越来越多、复杂性也越来越高。由数据库管理员手工配置系统参数和部署分布式数据库已经难度越来越大,在实际应用中已经不再可行。本课题的目的就是要设计并实现一个自动化的数据库部署工具ADBManager,通过这个工具实现对ADB数据库系统中的组件的配置、初始化、启动、停止、监控和故障转移。