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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。