开篇:润墨网以专业的文秘视角,为您筛选了一篇内存数据库在撮合交易系统中的研究与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘 要:本文针对中介型电子商务交易平台所特有的海量数据处理、并发请求、实时响应等需求特点,提出一种新的基于内存数据库的撮合交易系统模型。在与当前成型的电子商务交易系统进行定性比较的基础上,通过模拟实验进一步定量说明了该系统模型的优势所在。
关键词:内存数据库;撮合交易;中介型电子商务
中图分类号:TP302 文献标识码:A 文章编号:1009―3044(2007)01―10020-03
1 引言
随着“市场对市场”电子商务的兴起,如何构建高效而安全的中介型电子商务交易平台逐步成为电子商务研究领域的重要议题。其核心问题之一是如何提高撮合交易系统的实时交易处理能力。现行的基于磁盘数据库的撮合交易模式在并发控制、响应时间等方面都存在瓶颈。
为克服传统磁盘数据库在I/O方面的瓶颈.国内外针对内存数据库的研究已有很大进展。在证券、期货交易市场上。内存撮合技术已被应用于实践。与此同时,存储量大且价格低廉的内存也已在DBMS中成功使用,而64位处理器的产生,更使物理内存的理论容量可以达到264位。
根据以上几点,结合中国农副产品交易平台的升级开发,笔者提出了一种新的基于内存数据库的撮合交易系统模型。
2 系统结构
2.1 撮合交易系统设计
中介型电子商务交易平台本身是为电子市场服务的.所以从设计的角度必须保证商品的流动性。而撮合交易处理速度是影响流动性的主要因素之一。
以双向拍卖为核心的撮合交易系统,其本质是所有的买方和卖方都可以提交商品的买入订单和卖出订单。基于连续的电子商务平台的撮合交易系统,其显著特点是买卖双方可以连续地报出买价或卖价,并且在条件满足情况下可以随时成交,即交易可以连续发生。
交易用户通过撮合交易大厅向撮合处理系统发出委托订单。订单主要包括商品种类、商品数量、成交价格、生产日期等标准属性。在撮合交易系统中,要根据事先约定的优先级规则来安排撮合序列。
其中成交价格的确定是采用“对手价”的原则。即新进入一个订单时,若该订单的买价高于已有的最低卖出价格,或者卖价低于已有的最高买入价格,则该订单可以成交。成交价分别为已有的最低卖出价和已有的最高买入价格。若不能成交。则该订单进入自动撮合系统。如该订单只能部分成交,则未成交的剩余部分进入自动撮合系统等待下一次撮合。
为了能顺利实现商品交割和明确交易双方的权利和义务,交易订单一经撮合成功,当即生成相应的标准合同。交易双方按合同约定履行义务和享受权力。在合同生成之前,交易用户也可以通过撮合交易大厅撤销订单。
撮合交易流程如图1所示。
2.2 内存数据库结构设计
根据内存数据库的本质特征是其主拷贝常驻内存.给出下列内存数据库的定义:
定义1设有数据库系统DBS,DB为DBS中的数据库,DBM(t)为在时刻t,DB在内存的数据集,DBM(t) DB。TS为DBS中所有可能的事务的集合,AT(1)为在时刻t处于活动状态的事务集.AT(t) TS。Dt(T)为事务T在时刻t所操作的数据集,Dt(rr) DB。若在任意时刻t,均有:
成立
则称DBS为一个内存数据库系统,简写为MMDBS;DB为一个内存数据库。简记为MMDB。
内存数据库系统虽然工作方式和算法设计与传统数据库有很大的不同,但其结构仍然与传统数据库相似,主要有:数据结构,内存与缓冲区管理,查询处理与优化,事务管理,并发控制,数据一致性,备份与恢复等。
由于内存自身的物理特性和内存数据库的特点,故将内存数据库通过备份管理器备份到硬盘数据库,同时利用日志队列将系统日志周期性存入日志文件,并保存到硬盘数据库。为保证内存数据库自身的数据一致性,特别引入锁管理器来保持数据同步。结构设计如图2所示。
3 系统详细设计
3.1 撮合交易子系统
3.1.1 撮合交易子系统结构
客户端交易程序用Web页面方式接收客户订单,通过请求发送器和请求消息队列,发送给客户服务程序。客户服务程序将接收到的订单提交给撮合处理子系统,在与内存数据库子系统交互之后,将结果返回到结果处理程序。在得到撮合处理子系统的返回信息后,由结果处理程序通过应答消息队列和应答发送器将撮合结果和合同返回给客户端交易程序,并最终通过Web页面方式提交给客户。结构设计如图3所示。
3.1.2 撮合交易子系统设计
在撮合处理子系统中,客户订单将被转换为系统订单,并加入订单库。然后从订单库中周期性的提取订单,依次按照种类、价格、数量的优先次序进行撮合匹配,再将撮合结果返回结果处理程序,结果处理程序一方面按撮合结果生成合同,并加入合同库.另一方面将剩余商品的信息提供给系统订单部分,后者产生新的系统订单,并加入订单库。结构设计如图4所示。
3.2 内存数据库子系统
3.2.1 内存数据库实现方法
由于撮合交易系统是中国农副产品交易平台的一个子系统,故在对性能提出较高要求的同时,还必须满足跨平台和面向对象开发的要求。在综合比较各种内存数据库装入方法的基础上.决定采用FlashDB技术进行实现。
FlashDB采用面向对象的技术,实现了内存数据库系统的基本功能,并且,将上述功能封装在多个类中。这些类主要包括:DataBase,SB-Tree,HashTable,Table,Field,Record.FlashFile.SvsWatcher,Cursor,Query等。其中,DataBase类主要负责数据的存取、备份、恢复以及共享内存的管理;FlashFile类主要完成数据库文件在磁盘与共享内存间的交换;而Cursor类和Query类主要提供条件查询和返回结果,这也是实现交互式SQL查询的基础。
3.2.2 内存数据库的加载
为了保证系统的跨平台性,采用FlashFile类的内存映射函数进行内存数据库的加载。在数据库打开时.Database类的Ooen函数通过FlashFile将磁盘中的数据库文件映射到共享内存中.完成内存数据库的初始化工作。
FlashDB模块是一个动态连接库,用户以调用组件fCOMl的形式加载FlashDB的模块至自己的进程地址空间。与内存映射文件的工作原理一样,FlashDB模块也是存储在一块物理内存而被映射至不同进程的地址空间。
3.2.3 共享内存的管理
FlashDB提供的内存管理函数被封装在DataBase类中.提供了内存管理的基本功能,也是实现其他数据库操作的基础。表/字段的分配/释放,记录的插/入/删除,表结构的修改,索引结构的建立/删除都是通过上述函数实现的。在这些内存管理函数和对象句