标题：DBTwin
1.当前数据库用户面临的问题
随着信息时代的发展，公司和企业的运作越来越依赖于计算机系统。大量有关企业生产、销售的数据维系着企业的生存，是企业珍贵的无形资产。这些数据一旦因为存储系统遭受到失窃、断电或不可避免的自然灾害，造成大量丢失，将会给企业带来重大的经济损失。
根据Gartner的调查数据，在经历大型灾难事件而导致系统停运的公司中，有五分之二左右的公司再也没有恢复运营，剩下的公司中也有接近三分之一在两年内破产了。而由于数据库的故障导致的重大事故确是时有发生的，让我们来看几个实例：
实例1：2005年12月5日，国内某著名网络游戏公司的数据库服务器出现严重宕机事故，造成众多玩家数据丢失并蒙受经济损失
实例2：2005年6月9日某证券公司股票交易系统的数据库出现故障，股票无法正常买卖，迫使股民望“红”兴叹。
实例3：2002年7月23日国内某机场数据库系统宕机，导致6000名旅客长时间滞留机场。
实例4：2000年国内某银行的支付系统突然死机，给广大用户造成极大的损失和不便。
以上发生的这些事件都是与企业数据库系统相关的故障。
另外，几乎每个数据库客户都或多或少地存在数据库性能问题，当然数据库性能问题涉及很多方面，其中，能否采用“集群”的方法来提高性能，我们公司研究的重点。
概括来讲，当前数据库系统已经成为了企业信息系统的瓶颈，究其原因，各厂家的解决方案无外乎在下列三大方面无法取得同步的进展：
1）数据库数据可靠性
2）数据库系统性能
3）  系统服务的可用性
当前几乎所有的数据库系统解决方案，都无法的象真正的集群系统那样，在上述三方面同时具有良好的可伸缩性，具体来讲，当前数据库系统存在下列各种各样的问题：
1．  企业只有一份实时生产数据集，一旦主数据库系统发生故障，将导致业务中断，数据恢复很麻烦，甚至丢失部分数据。
2．  目前的实时数据备份采用主备机串行复制数据的方式，该方式延长了业务处理的时间，降低了系统的工作效率，增大了系统出错几率。
3．  在实际的工作中，数据库系统宕机事件时有发生，无法完全实现7X24小时不停机服务
4．  在实行异步数据备份的数据库系统中，备份数据库的资源被极大地浪费了
5．  现有数据库的升级方式多为向上扩展方式，即：服务器—〉小型机—〉大型机的升级方式，既不经济，又缺乏伸缩性。
数据库系统属于磁盘密集型操作，现有的数据库系统解决方案在应对大规模、频繁访问时（如电子交易网站等），存在I/O瓶颈，
2.当前市场上存在的针对数据库的解决方案
由于“集群”概念的广为人知，因此，不少公司推出了针对数据库的“集群”解决方案。但是，我们进行仔细的甄别之后，发现当前市场上存在的，除我们的DBTwin数据库集群解决方案之外，主要是下面三类产品之一或者是它们的适当组合。
基于串行复制技术串行复制技术，本来是用于数据复制和数据备份的，离人们熟悉的“数据库集群”的概念有一定的距离。但是由于计算机软硬件技术和网络通讯技术的快速发展，使得利用这种概念和技术构成的“数据库集群”有了一定的可行性。此类集群，又可以分两类：
串行异步复制。数据库客户
主数据库
备数据库
日志复制

图1.  日志复制示意图
此种方式是异步串行复制或日志拷贝(Log Shipping)。 主数据库完成事务处理后，生成事务处理日志，日志记录通过FIFO队列，进入备份数据库处理，从而得到备份数据。此种方式的缺陷在于：
日志性能问题：在实际的应用场景中，经常发现数据库用户为了数据库性能而关闭了事务日志功能，从而导致此方法的不可用。也就是说，想要采用此方法构建一个“数据库集群”的话，那么单单主数据库为了具有日志功能，就需要花费很大的性能代价。复制队列溢出问题：主数据库是并行处理而日志拷贝是串行的，因此备份数据库处理日志记录也是串行的。因此，FIFO队列的溢出随时可能发生。一旦发生，队列必须重建，从而需要重新建立备份数据库。此种方法对于一般客户来讲是不可行的。或者为了避免队列溢出，必须保证主数据库处理事务的速度小于备份数据库，这样将严重束缚主数据库的性能发挥。由于日志拷贝是异步的，主备数据库不是实时一致。因此无法用备份数据库作负荷均衡。由于主备数据库永远不一致, 主数据库一旦发生事故，就一定会丢失数据。在这种情况下，要么需要手工恢复数据库，这会消耗大量的人工成本，或者数据根本就不能恢复。串行同步复制。此类集群往往是由昂贵的专用软硬件构成的，原理图如下：
高速专用同步复制网络1

数据库客户
数据库1
数据库2

图2.  硬件级同步复制示意图
此类系统采用专用的高速网络和软件技术，将每个数据库的请求，通过同步复制的方式，同步在主备两台数据库服务器上执行正确后，才将结果返回给数据库客户。
此系统的特点是：
主数据库被强迫与备份数据库同步串行处理，因此性能受到限制。主备数据库中任意一个出现问题，都会迫使事务处理交易回滚，因此整个系统的可靠性比单机系统降低了一半。由于以上问题，这种备份方式只适用于近距离光纤网络（5英里）。专用系统造价昂贵，又加上述明显缺陷，因此市场上很少被采用。基于双机容错技术从技术适应性的角度讲，双机容错比较适合于无状态应用，或者状态信息较少的应用切换，以此达到应用级的高可用性目的，其实并不适合于数据库级的应用切换。
DB引擎1
DB引擎2
心跳线
共享阵列
数据库客户
虚拟IP

图3.  数据库双机示意图
此种结构往往是两个服务器共享一个磁盘阵列，这里两个服务器共享一个虚拟的IP供数据库客户使用，形成一个单一的逻辑数据库映象。此种所谓的数据库集群的目的是，一旦主机系统出现问题，备份系统通过心跳机制的检测，完成从主机系统到备份系统的切换，它有下列特点：
此种高可用性解决方案只是无状态系统(典型的如Web服务器)的普通容错切换思想在数据库领域的应用。此系统本身只有一个单一的数据映象，数据储存在共享的磁盘阵例上，因此共享的磁盘阵例成为了整个系统的单点错误源。由于是单一数据映象，因此必须采用通常的复制或备份方法获取第二份数据，以保证数据的安全性。因此所有复制或备份方法的缺点，此类系统全部存在。主机系统和备份系统之间是没有任何负载均衡关系的，在正常情况下，备份系统是闲置在那里，因此对用户来说是一种投资浪费。在错误切换的时候，往往存在切换时间长，而且更严重的是存在丢失用户交易数据丢失的现象，结果导致系统被迫停止服务，或者需要人工修复数据，或者数据永远找不回来。在错误切换的时候，有时候会发生备份系统的数据库启动不了的情况，这时候，整个数据库系统也就无法访问了。以RAC为代表的系统RAC的英文全称是：Real Application Cluster(真正的应用级集群)。我们需要关注的是“应用级”。为了缓解数据库系统日益增长的性能压力，ORACLE公司推出了RAC系统。它基本结构如下：
DB引擎1
DB引擎2
RAC虚拟网络
共享阵列
数据库客户
虚拟IP

图4.  ORACLE RAC示意图
此类系统，专门是针对数据库性能问题而提出的。采用共享磁盘阵列的方式，因此在结构上和上述双机容错相似，不同的地方在于此系统中的数据库节点之间采用的不是简单的心跳检测，而是ORACLE公司自己定义的一套复杂的信息交换协议，以此来动态分配来自数据库客户端的请求。它的特点是：
是个应用级的集群，也就是针对ORACLE的数据库管理系统(因为数据库管理系统对于操作系统来讲，就是一个“应用程序”，因此被称为“应用级集群”)，专门为提高数据库性能而设计。此系统本身只有一个单一的数据映象，数据储存在共享的磁盘阵例上，因此享的磁盘阵例成为了整个系统的单点错误源。管理配置复杂。由于是单一数据映象，因此必须采用通常的复制或备份方法获取第二份数据，以保证数据的安全性。因此所有复制或备份方法的缺点，此类系统全部存在。由于数据库系统本身具有高I/O的特性，因此，RAC系统里，磁盘I/O是提高性能的关键地方。综合上所述，针对数据库系统普遍存在的三大方面的问题，上述各个技术和方案，各有不同的侧重，实现的代价和复杂度也各不相同，但是它们有共同的特点是：只解决数据库系统的某一方面的问题，甚至在解决这方面问题的时候，同时加重了另外一个或两个方面的问题。
3.DBTwin数据库集群
DBTwin是北京浙潮科技基于动态并发事务的理念设计出的新型数据库集群软件，对当前数据库集群领域是一次革命性的突破。由DBTwin构成的新型数据库集群在数据安全性、高性能和服务可用性方面均具有非常好的伸缩能力，因此，我们称其为“数据库扩展器”（Database Scaler）。
数据库扩展器DBTwin允许同时连接n个数据库，由DBTwin网关对它们进行统一管理。而对于客户端来讲，DBTwin屏蔽了后面的n台数据库，它看到的只是由DBTwin网关表现出来的一个虚拟数据库服务，只连接客户端只需要连接此虚拟的IP和端口，就能象访问普通数据库那样进行操作。DBTwin数据库集群的原理结构如下图所示：
数据库1
数据库2
数据库n
DBTwin网关
DBTwin网关
数据库客户
双机热备

图5.  DBTwin工作示意图
DBTwin最大的特色是能够对访问数据库的事务（Transaction）进行并发地处理：当DBTwin网关接收到插入、修改、更新等事务操作时，它同时将这个事务（Transaction）发送到后面连接的n台数据库上，这样n台数据库中的数据同时得到了更新；由于在任何时刻，DBTwin网关后面连接的n台数据库的数据是完全一致的，因此当DBTwin网关接收到查询操作时，整个数据库系统可以实现负载均衡（Load Balance），由此达到客户访问负荷的动态分担，提高整个系统的响应能力。
4.DBTwin的实现原理
DBTwin是一个中间件服务软件，它工作在微软的数据库专用协议TDS层之上，如下图所示：
TCP
物理网络
TDS(DBTwin工作层)
ADO .Net, ODBC,OLE DB,DB-Library 等
图6.  DBTwin工作层
TDS(Tabular Data Stream表格数据流)是微软数据库客户端与SQL Server服务器进行通讯的未公开协议，DBTwin就工作在这一层，因此，DBTwin能支持所有的SQL Server客户端数据组件。正象1433是微软SQL Server的缺省服务端口那样，8106是DBTwin数据库集群的缺省服务端口，另外8105、8107、8108和8109是DBTwin或者它的代理端软件的固定工作端口，因此，客户在选择端口的时候，一定要避免选择这些端口，以免发生端口冲突。
事务是数据库系统里一个基本，但十分重要的概念，DBTwin时刻检测来自客户端的事务。一旦接收到客户事务请求，DBTwin将此事务同时发给集群中的每个数据库，并且确保所有的集群数据库要么全部提交，要么全部回滚此事务，以此保证每个集群数据库的数据映象始终是处于一致状态，同时保持对数据库客户端的透明、无缝连接。
批处理也是数据库系统中的一个重要概念，DBTwin是以批处理为单位来进行负载均衡的。也就是说，每当DBTwin接收到来自客户端的一次请求，这个请求其实就是一个批处理，这时候DBTwin会对此批处理进行语法检查，并判断出是否能负载均衡，若可以进行负载均衡，那么DBTwin将根据某一算法，挑选出其中某台集群数据库来执行此批处理；如果此批处理不能负载均衡，那么DBTwin就同时给所有的集群数据库发送此批处理请求。
在DBTwin集群启动之前，用户可以通过PRT高级同步工具作数据同步，或者也可以利用SQL Server提供的BACKUP/RESTORE命令来作到这一点。在DBTwin运行过程中，如果有数据库掉线了，这时，DBTwin会有两种方式来修复集群，一是定时自动方式，此方式是预先设置好在某个时间进行数据库同步和DBTwin网关的重启动，它适合于一些晚上进行批处理作业的系统。另一种方式是手工同步方式，此方式针对的是由随机错误，例如网络错误，服务器重启等导致的。无论哪种方式，在同步过程中，客户端是始终客户访问DBTwin集群系统的，这样整个数据库系统的可用性就大大提高了。
5.DBTwin的特性
DBTwin有以下特性：
数据可靠性和安全性大大增强– 由于任何时刻系统同时拥有多份数据集，因此大大提高了整个系统的数据可靠性和安全性。假设单台数据库服务器出现错误的概率为0.01%，n台数据库构成的集群系统出错的概率就是。。
服务的可用性大大增强– 如果某一时刻，一台数据库服务器出现问题，其它的数据库服务器仍然能够正常工作；同时，在利用DBTwin提供的PRT(高级同步工具)进行修复的同时，系统服务可以正常进行，真正使客户的数据库系统永远在线，
显著提升数据库系统的性能–DBTwin能够在多个独立的数据库系统之间实现动态负载均衡，进而显著提升数据库系统的整体性能。
充分利用已有投资，降低系统TCO（总体拥有成本）– 在现有所有别的方案中，备份数据库服务器平时是闲置在那里的，无形中是一种浪费，DBTwin将这备份数据库服务器也充分利用起来，提高了资源的使用效率，降低了整个数据库系统的TCO。
保证数据库系统具有良好的伸缩性– 通过增加新的数据库服务器即可提升系统的性能、可靠性等。
6.DBTwin技术指标
非入侵部署
与所有的系统服务一样,DBTwin也是通过唯一的入口-一对(IP,port)来向外提供数据服务。 因此,应用程序及其数据库接口不需作任何修改。支持所有的数据库接口：ADO .Net、ADO、RDO、DAO、OLE DB、ODBC、DB-LIBRARY等。
支持数据库Microsoft SQL Server /6.5/7.0/2000/2005/2008的标准版和企业版。
事务处理同步复制       通过常用的宽带网络, 快速的事务处理同步复制
高系统可用性自动的错误恢复，真正把意料之内和意料之外的停机时间缩至最短。网关在错误恢复期间的停止服务间隙达到小于10秒。
零单点错误源从DBTwin网关这一部件开始，整个数据库系统是完全、彻底地物理冗余。
数据“零”丢失DBTwin使得系统同时拥有多个实时一致的数据集，这样从理论上讲，就真正消除了数据丢失的任何可能性。数据库可靠性达到目5个9，即99.999%。
动态负载均衡DBTwin对只读数据库查询操作可以进行自动的判别和动态负载均衡，这是当前唯一实现的针对数据库的动态负载均衡技术，此技术可以大大改善整个数据库系统的性能。性能提升在30%~300%之间，具体提升比例取决于应用系统及网络结构和软硬的配置。
可伸缩性可伸缩的数据库性能(负载均衡+非入侵式的数据库阵列扩展)，使得数据库具有可伸缩性。需要更多的数据库性能的时候，只要增加数据库服务器就可以了。
容灾能力具备即时的灾难恢复能力。
DBTwin自身的双机容错DBTwin支持自身的双机主备容错切换，也可以采用第三方的HA方案解决DBTwin自身的容错问题。
7.DBTwin与备份/复制软件及数据库镜像比较


DBTwin
备份(复制)软件
镜像
1
专为数据库设计
是
否
否
2
支持数据库集群
是
部分支持
部分支持
3
支持并发数据库操作
是
否
否
4
支持动态负载均衡
是
部分支持
部分支持
5
工作方式
并行
串行
串行
6
支持多份数据集
是
是
是
7
支持多份一致数据集
是
否
否
7
单点错误源
无
有
有
8
支持业务连续性程度
高
低
中
9
数据丢失可能性
零
高
高
10
错误恢复自动化程度
高
低
中

8. DBTwin支持的系统环境
操作系统：Windows 2000 Server, Windows 2003 Server，Windows 2008 Server
数据库系统：SQL Server 6.5/7.0/2000/2005/2008标准版/企业版。