软考高级系统架构设计师系列论文四:论分布式数据库的设计和实现

  • 一、摘要
  • 二、正文
  • 三、总结

一、摘要

  • 本文论述《金蚕工程》的分布式数据库的设计和实现。该项目的设计目标是实现企业间茧、丝等的合同交易(交易规则和期货交易一样)、实时行情和成交数据的发布、茧丝质押和质押数据的发布。所有功能均要求既能在企业局域网交易大厅和 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***.net)。
  • 二期项目包括:茧丝质押、仓库管理系统、 Internet 质押查询系统和分中心交易和资金结算系统。 鉴于该项目业务比较复杂,流程比较多,系统要兼顾企业交易大厅会员、远程 Internet 交易的会员和分交易中心会员,项目完成时间短等特点,为了既要项目的按期投产又要实现基于分布式数据库的分中心交易和资金结算系统,我从数据库选型、数据库设计、应用数据集成和测试以及分布式数据库部署如下工作。
  • (1)数据库选型。现在的主流数据库一般都可以按分布式进行部署,例如:SQL Server、Oracle、Informix和 DB2 等。由于一期项目的数据库平台是选择了 Oracle 7.0,经过了近一年的运行,其数据自动备份、多用户并发处理性能、磁盘表空间管理、Web数据发布等表现良好。我公司又由于开发过基于该平台的分布式应用系统,公司对其分布式实施也有相当的经验,所以经我们开发部相关人员的讨论,我决定在各分交易中心继续采用Oracle数据库来实现,其分布功能主要基于SQL.Net来完成。
  • 分布式数据库设计。由于各交易品种的每节交易价格由市场的交易大厅决定,所以各分中心必须在每节交易开始前取得相关的交易数据。各分交易中心必须保留其会员已经交易成功的买入和卖出交易数据,并根据会员需要进行资金结算。经对分交易中心充分业务需求分析后,我觉得分交易中心的主要功能还是和主市场交易中心(简称:主中心)功能是一致的,只不过分交易中心的会员数比较少和无需保留各节的历史交易行情,所以,分中心的主要数据库中的各表还是照搬主市场数据库的各表,分中心只保留各自的会员基础数据和成交数据,保留会员历史交易数据,只保留当前的各节的交易行情,不保留历史行情。主中心必须保留各分中心的各项明细数据,主中心也必须及时计算分中心会员的汇总资金,所以主中心必须增加分中心汇总资金表。
  • 数据集成。为了保证分中心及时下单,必须保证每节的交易行情要及时的传送到各交易分中心。节处理最后一步必须把下一节的交易行情传送送各交易分中心。同时下发给分中心的数据还有,分中心本节各会员的成交数据。由于主中心保留各分中心的各项数据,所以,分中心有新的会员加入必须同时更新分中心和主中心数据库;分中心会员资金有变动时也必须同时更新主数据库。由于各会员只能在当日交易结束后才能进行数据平仓,所以分中心平仓数据汇总后同意发送到主中心进行平仓。在上述设计的数据库到数据库操作的数据完整性和一致性由数据库的二阶段提交( 2 Phase Comit )来保证。由于Oracle 是一个比较成熟的数据库平台,又由于每次事务都不大,所以运行到现在也没有发现数据不一致现象,没有出现“单边帐”,数据处理也比较快。为了近一步保障各中心数据的一致性,我还做了一个同步程序,由主中心发起,对主中心和分中心数据进行比较。该程序可定期进行。
  • 测试。由于一期项目已经运行了相当长的一段时间,系统已经相当稳定了。由鉴于2 Phase Commit 出色表现,所以基于分布式的测试没有觉得和集中数据库有太大的区别。唯一的感觉是在第一次建立远程数据库连接时,连接速度比较慢(有时超过20秒)。为了提高测试速度,我在同一个局域网中安装了三套Oracle,分别充当主中心和两个分中心进行测试。
  • 部署分布式数据库。和集中时式的数据库不同,采用分布式系统,必须配置SQL.NET。其他的Oracle组件和子系统安全同本地安装数据库一样。 分布式数据库在逻辑上属于同一系统,使得应用不必关心远程数据库的物理位置,就可以像访问本地数据库一样访问远程数据库。采用分布式数据库可充分提高系统的处理能力、均衡网络负载,所以该分布式数据库应用方案在银行代收、代付业务处理、保险代理点等单位和机构中大量采用。但由于近些年来通信基础建设比较迅速,特别是2M、10M和100M光纤的推广,又为了节省下属网点的机房费用,各单位又不约而同的采用的集中方案。

三、总结

  • 缺点和需要改进的地方: (1)分中心或主中心由于不明原因而Down机后,由于Oracle有自动恢复功能,可能造成对方数据库会收到过时的垃圾数据。该问题现在通过手工方式解决。 (2)由于分中心没有收到下一节的交易行情,可能会造成分中心会延时交易。分中心的主控系统可通过主动拉取数据来解决。 《金蚕工程》项目是成功的,年交易量已经有 100 多亿人民币。通过该项目的顺利投入运行,中国茧丝绸市场不仅牢牢把握住了中国的茧丝行情,随着我国进入 WTO,中国茧丝绸市场在世界上也有举足轻重的分量! 总之,中国的软件产业应该走自己的路,只有通过“已过程为核心,以度量为基础,已人为本”的管理政策;根据我国的国情、软件业和公司的现状,只有通过“干”,才能有实绩,才能实现“以信息化带动工业化的大思路”!

软考高级系统架构设计师系列论文四:论分布式数据库的设计和实现相关推荐

  1. 软考高级系统架构设计师系列论文之:百篇软考高级架构设计师论文范文

    软考高级系统架构设计师系列论文之:百篇软考高级架构设计师论文范文 软考高级架构设计师论文写作技巧: 软考高级系统架构设计师系列论文:详细介绍一篇论文的万能模版,快速了解如何写好一篇架构设计师论文 软考 ...

  2. 软考高级系统架构设计师系列论文七:论基于构件的软件开发

    软考高级系统架构设计师系列论文七:论基于构件的软件开发 一.摘要 二.正文 三.总结 一.摘要 本文以我主持开发的某公司生产经营管理系统为例,探讨了基于构件的软件开发问题.该系统是一个集原料采购.生产 ...

  3. 软考高级系统架构设计师系列论文三十五:论企业应用集成

    软考高级系统架构设计师系列论文三十五:论企业应用集成 一.摘要 二.正文 三.总结 一.摘要 2021年4月,我参加了南京车站综合信息平台项目的开发,承担项目的方案设计任务.该项目力图通过对车站现有系 ...

  4. 软考高级系统架构设计师系列论文十三:论软件测试方法和工具的选用

    软考高级系统架构设计师系列论文十三:论软件测试方法和工具的选用 一.摘要 二.正文 三.总结 一.摘要 软件测试作为保证软件质量和可靠性的关键技术手段正日益受到广泛的重视.本文以某区贸工局的电子政务系 ...

  5. 软考高级系统架构设计师系列论文二:论软件的性能优化设计

    软考高级系统架构设计师系列论文二:论软件的性能优化设计 一.摘要 二.正文 三.总结 一.摘要 本文结合我2008年在某人民银行实施的E户通电子转账系统的经历,就软件的性能优化设计进行了详细讨论.在系 ...

  6. 软考高级系统架构设计师系列论文一:论软件架构的选择与应用

    软考高级系统架构设计师系列论文一:论软件架构的选择与应用 一.摘要 二.正文 1.项目概述 2.架构设计 三.总结 一.摘要 公司承担了某省社会保险管理信息系统的开发工作,我在该项目中担任系统架构设计 ...

  7. 软考高级系统架构设计师系列论文六十四:论软件测试方法和工具的选用

    软考高级系统架构设计师系列论文六十四:论软件测试方法和工具的选用 一.软件测试相关知识点 二.摘要 三.正文 四.总结 一.软件测试相关知识点 写论文前先全面了解软件测试相关知识点: 软考高级系统架构 ...

  8. 软考高级系统架构设计师系列论文三十六:论基于构件的软件开发

    软考高级系统架构设计师系列论文三十六:论基于构件的软件开发 一.摘要 二.正文 三.总结 一.摘要 本文以我主持的某商业银行交易监控分析系统项目为实例,探讨了作为开发方公司基于构件技术开发项目碰到的问 ...

  9. 软考高级系统架构设计师系列论文五十七:论软件项目管理技术及其应用

    软考高级系统架构设计师系列论文五十七:论软件项目管理技术及其应用 一.软件项目管理技术相关知识点 二.摘要 三.正文 四.总结 一.软件项目管理技术相关知识点 写论文前充分了解软件项目管理技术相关的知 ...

最新文章

  1. #1066 : 无间道之并查集
  2. Python之深入解析如何制作国际空间站实时跟踪器
  3. mysql linux centos7_MySQL在Linux centos7环境下安装教程详解(图)
  4. 关于竖表转横表的问题
  5. 最近发包给朋友,搞定软件小活儿、解决小功能模块的感受
  6. 分块编码(Transfer-Encoding: chunked)VS Content-length
  7. 面试必备TCP三次握手
  8. Cisco服务器怎么安装系统,CISCO服务器Linux系统安装步骤
  9. STM32 DAC详解
  10. 微信抢红包算法 java_java 实现仿照微信抢红包算法,实测结果基本和微信吻合,附demo...
  11. 从大到小依次输出三个整数
  12. 开发一个Java项目的完整流程(附2600套Java项目源码+视频)
  13. struts1和struts2的区别
  14. element中el-autocomplete实现中英文搜索功能
  15. Kali linux安装拼音、双拼、五笔拼音输入法:fcitx-table-wbpy中文输入法步骤详解
  16. 【网络实验】10G网络下的真实带宽——CPU负载与网卡TSO、GSO
  17. uniapp锚点定位
  18. 登陆港股市场,阳光保险的 “价值锚点”
  19. Red Hat 镜像下载
  20. 短信网关 php,php使用ICQ网关发送手机短信_PHP教程

热门文章

  1. 服务器系统日志中打印机所需的驱动程序未知错误解决方法
  2. 网易游戏笔试题(3) 20171209
  3. java jmap_Java性能测试之jmap
  4. 实验楼OS实验一 熟悉实验环境
  5. Python:教你如何实现多线程下载器
  6. 看到一个经典的魔兽版评论,玩过的可以进来看看,超级搞笑!!
  7. 挨踢人生路--记我的10年18家工作经历 续 .转
  8. Kubernetes 网络排错骨灰级指南!
  9. 冷月虐哭数一之高等数学(1)-递归数列极限的求法和证明
  10. 手把手VC截图小工具,附源码