论分布式数据库的设计和实现
-金蚕工程
[摘要]
本文论述《金蚕工程》的分布式数据库的设计和实现。该项目的设计目标是实现企业间茧、丝等的合同交易(交易规则和期货交易一样)、实时行情和成交数据的发布、茧丝质押和质押数据的发布。所有功能均要求既能在企业局域网交易大厅和Internet上进行,许多功能又要在苏州和成都分中心进行。系统从设计时就把基于分布式数据库应用的可用性和可靠性作为系统一个关键目标。为了达到系统的上述要求,系统分别从数据库设计、应用数据集成
和测试以及分布式数据库部署等做了大量工作。针対上述各部分,本文论述了分布式数据库的设计和实现及遇到过的典型问题和措施,最后対系统改进,谈一些自己的体会。
在项目开展期间,我担任了系统分析、系统设计与关键模块的编程等大量工作。该项目在2002年通过了浙江省软件评测中心的评测。
[正文]
我于2000年底到2002年6月组织了中国茧丝绸市场由国家经贸部资助的《金蚕工程》一、二期项目的开发。由于原有系统存在如下问题:
(一)原有系统采用传统C/S结构,客户端运行在DOS平台,后台使用Foxpro数据库。系统处理慢,前后台数据一致性,并且Foxpro服务器在交易高峰经常莫名其妙的死锁和Down机。
(二)市场是中国最大的茧丝交易市场,由于会员单位不断増加,原有远程电话拨入设备严重不够用,系统又不能通过Internet连接访问,进行合同交易和行情的及时查询,严重限制了市场的发展。
(三)原有系统只部分实现了合同交易和资金清单,功能和企业发展不相适应。(四)由于会员在地区上分布不均匀,为了更好地服务于会员要求在满足一定条件下建立分中心交易系统。在这种情况下,市场决定开发基于Internet B/S结构和基于X net server通讯中间件(类似IBM MQ Series的通讯中间件)的4-Tier结构的绿舍软件,分中心采用基于分布式数据库地应用系统。一期项目包括:基于4-Tier的合同交易系统和资金清单系统,基于Internet的行情查询和信息发布的企业网站。二期项目包括:茧丝质押、仓库管理系统、Internet质押查询系统和分中心交易和资金结单系统。
鉴于该项目业务比较复杂,流程比较多,系统要兼顾企业交易大厅会员、远程Internet交易的会员和分交易中心会员,项目完成时间短等特点,为了既要项目的按期投产又要实现基于分布式数据库的分中心交易和资金结单系统,我从数据库选型、数据库设计、应用数据集成和测试以及分布式数据库部署如下工作。
(1)数据库选型。现在的主流数据库一般都可以按分布式进行部署,例如:SQL Server、Oracle、Informix和DB2等。由于一期项目的数据库平台是选择了 Oracle 7.0,经过了近一年的运行,其数据自动备份、多用户并发处理性能、破盘表空间管理、Web数据发布等表现良好。我公司又由于开发过基于该平台的分布式应用系统,公司対其分布式实施也有相当的经验,所以经我们开发部相关人员的讨论,我决定在各分交易中心继续采用Oracle数据库来实现,其分布功能主要基于 来完成。
(2)分布式数据库设计。由于各交易品种的每节交易价格由市场的交易大厅决定,所以各分中心必须在每节交易开始前取得相关的交易数据。各分交易中心必须保留其会员已经交易成功的买入和卖出交易数据,并根据会员需要进行资金结单。经対分交易中心充分业务需求分析后,我觉得分交易中心的主要功能还是和主市场交易中心(简称:主中心)功能是一致的,只不过分交易中心的会员数比较少和无需保留各节的历更交易行情,所以,分中心的
主要数据库中的各表还是照搬主市场数据库的各表,分中心只保留各自的会员基础数据和成交数据,保留会员历更交易数据,只保留当前的各节的交易行情,不保留历更行情。主中心必须保留各分中心的各项明细数据,主中心也必须及时计单分中心会员的汇总资金,所以主中心必须増加分中心汇总资金表。
(3)数据集成。为了保证分中心及时下单,必须保证每节的交易行情要及时的传送到各交易分中心。节处理最后一歩必须把下一节的交易行情传送送各交易分中心。同时下发给分中心的数据还有,分中心本节各会员的成交数据。由于主中心保留各分中心的各项数据,所以,分中心有新的会员加入必须同时更新分中心和主中心数据库;分中心会员资金有变动时也必须同时更新主数据库。由于各会员只能在当日交易结東后才能进行数据平仓,所以分中心平仓数据汇总后同意发送到主中心进行平仓。在上述设计的数据库到数据库操作的数据完整性和一致性由数据库的二阶段提交(2 Phase Comit )来保证。由于Oracle是一个比较成熟的数据库平台,又由于每次事务都不大,所以运行到现在也没有发现数据不一致现象,没有出现“单辺帐",数据处理也比较快。为了近一歩保障各中心数据的一致性,我还做了一个同歩程序,由主中心发起,対主中心和分中心数据进行比较。该程序可定期进行。
(4)测试。由于一期项目已经运行了相当长的一段时间,系统已经相当稳定了。由鉴于2 Phase Commit出色表现,所以基于分布式的测试没有觉得和集中数据库有太大的区别。唯一的感觉是在第一次建立远程数据库连接时,连接速度比较慢(有时超过20秒)。为了提高测试速度,我在同一个局域网中安装了三套Oracle,分别充当主中心和两个分中心进行测试。
(5)部署分布式数据库。和集中时式的数据库不同,采用分布式系统,必须配置。其他的Oracle组件和子系统安全同本地安装数据库一样。分布式数据库在逻辑上属于同一系统,使得应用不必关心远程数据库的物理位置,就可以像访问本地数据库一样访问远程数据库。采用分布式数据库可充分提高系统的处理能力、均衡网络负载,所以该分布式数据库应用方案在银行代收、代付业务处理、保险代理点等单位和机构中大量采用。但由于近些年来通信基础建设比较迅速,特别是2M. 10M和100M光纤的推厂(100MP电月租费仅为800元),又为了节省下属网点的机房费用,各单位又不约而同的采用的集中方案。
【缺点和需要改进的地方】
(1)分中心或主中心由于不明原因而Down机后,由于Oracle有自动恢复功能,可能造成対方数据库会收到过时的垃圾数据。该问题现在通过手工方式解决。
(2)由于分中心没有收到下一节的交易行情,可能会造成分中心会延时交易。分中心的主控系统可通过主动拉取数据来解决。
【总结】
《金蚕工程》项目是成功的,年交易量已经有100多亿人民币。通过该项目的顺利投入运行,中国茧丝绸市场不仅牢牢把握住了中国的茧丝行情,随着我国进入WTO,中国茧丝绸市场在世界上也有举足轻重的分量!
总之,中国的软件产业应该走自己的路,只有通过“已过程为核心,以度量为基础,已人为本"的管理政策;根据我国的国情、软件业和公司的现状,只有通过“干",才能有实绩,才能实现“以信息化带动工业化的大思路"!
如果觉得《系统架构师论文-论分布式数据库的设计和实现(金蚕工程)》对你有帮助,请点赞、收藏,并留下你的观点哦!