时间:2024-05-04
钱俊松 冷文浩
摘要 为了满足新的试验数据管理系统开发需求,综合考虑系统可扩展性与需求变动,以及试验数据缺乏结构化等因素,提出一种使用图数据库进行领域建模的思路。对TDM系统作简要介绍,在此基础上,通过分析关系数据库的建模方式,指出TDM系统开发和运维中存在的问题。针对这些弊端,详细探讨了基于图数据库的系统总体设计思路,为今后类似系统的设计提供参考借鉴。
关键词 试验数据管理;软件开发;图数据库;TDM;Neo4j
DOIDOI:10.11907/rjdk.181123
中圖分类号:TP392
文献标识码:A文章编号文章编号:16727800(2018)009019604
英文标题Design and Implementation of Test Data Management System Based on Graph Database
--副标题
英文作者QIAN Junsong1,LENG Wenhao2
英文作者单位(1.School of IoT Engineering,Jiangnan University,Wuxi 214122,China;2.China Ship Scientific Research Center,Wuxi 214082,China)
英文摘要Abstract:The development oftest data management system is difficult.Test data lacks of structuring.In addition,customers' requirements change fast.To solve the problem,a test data management system based on graph database is designed and developed.TDM is briefly introduced and the design of database structure based on relational database and graph databse are both discussed in detail.Neo4j,an easy to use and high efficientgraph database,is explored to provide data storage in the system.The flaw of relation databse is also explored to demonstrate the advantage of graph database.The implementation of the system can provide reference for similar system design in the future.
英文关键词Key Words:test data management;software development;graph database;TDM;Neo4j
0引言
在企业试验部门,长期的设计与仿真试验会产生并积累大量试验数据,这些数据多以文档方式保存和管理,而对于缺乏结构化的、格式不统一的文件资料,管理人员往往无法使用,更谈不上对信息进行二次处理[1]。因此,企业需要建立一个平台,对企业所有试验数据和与试验相关的信息及业务流程进行统一管理,但是试验部门采用的传统试验手段与数据管理方式,已无法满足当前的业务要求[2]。在此背景下,TDM(Test Data Management)系统应运而生[3]。
TDM系统的核心关键技术有元数据驱动的软件架构[4]、ETL技术[5]和数据库模型等。对于TDM系统的研究,目前主要集中在系统架构[6]与数据展现[7]等方面,而对于数据库端关注很少。传统的TDM系统使用关系型数据库作为数据库端,目前市场上成熟的TDM供应商如Hikey TDM、Newtera TDM等公司均使用关系型数据库(如Oracle、MySql等)作为数据库服务器[8]。然而,关系型数据库在开发TDM系统时存在一系列不足。宋铭利等[9]曾提出使用面向对象的数据库代替关系型数据库,但未进行深入研究。本文针对TDM的数据库建模与查询,提出新的基于图数据库的设计思路,以克服传统关系型数据库存在的弊端。
1关系型数据库建模
1.1关系型数据库建模示例
本节以某研究所TDM系统实际开发中的一个模块为例,说明软件开发人员在TDM开发中面临的困难。该模块功能为与手持终端进行通信,向终端传输试验检查表格并记录终端上传的试验数据。出于简化目的,本文将关注重点放在试验数据建模上,略去了流程管理、角色人员管理、试验项目管理、试验资源管理等业务。
本模块要求如图1所示,每次试验的具体工作项下包含许多张试验表格,试验人员需要完成所有表格。由于要满足不同时间、不同版本的测试需求,需要建立表格模板和对应表格实例。
在实际开发中面临的最大难题在于表格格式不固定,故建立数据模型非常困难。在开发中将表格模板分解为行模板表、列模板表、表格模板表与单元格模板表。
试验表格的主要数据库结构如表1所示,模板表与实例表相对应,均被分解为对应的行表、列表、单元格表。该模块使用步骤如下:首先在工作项下建立表格模板,并将具体表格在工作项下与模板表关联,然后生成对应的表格实例进行试验,最后将数据存入具体测验表中。关联表示例如表2所示。
由表2可知,标识符为420的具体测验表与主键为10的模板表相对应,其1~3条记录为试验任务1的数据。为简化问题,本文略去与试验流程相关的试验任务、工作项等业务说明。
1.2关系型数据库的不足
如表1所示,仅对检查表格的数据建模已十分复杂,且存在一个难以解决的关键问题。相比于单元格表,行表和列表都成为了稀疏表。行表和列表中只需存储行属性与列属性,表格内容都以单元格形式存储在单元格表中,其结果导致单元格表中的数据量十分庞大,查询性能与数据维护都成为了难题。
从表1中可以看出,这种关系模型造成大量的表连接、稀疏行和非空逻辑检查。外键约束和多对多关系表都需要额外的开发与维护成本,但其存在的目的仅是为了让数据库工作。另外,关系模型难以处理的一个问题就是高昂的关联查询成本。按照表1的数据建模方式,若要对表格的某一单元格数据进行增删改查,需要连接多张表进行查询,而这种查询代价巨大。若考虑到TDM系统在实际使用中测试表格会和项目、任务、流程等业务紧密关联,这种关联查询甚至可能延伸到第4层、第5层和第6层。由于SQL递归的连表查询使此时的时间空间复杂度非常高,查询效率严重恶化。实际的用户反馈表明,在进行终端试验时,程序与后台交互时间过长,已经影响到用户体验。
使用关系型数据库处理TDM的业务建模不仅在使用时存在问题,对开发人员也不友好。大量支持一对多联系的外键约束和支持多对多联系的连接表仅是为了在查询时能够找到表之间的具体关系。然而这些为数据库服务的数据与业务数据混杂在一起,增加了复杂度,却对用户毫无用处。为了让关系型数据库在处理应用请求时表现良好,开发人员通常使用反规范化(denormalization)技术使数据模型适应数据引擎。例如在表中添加冗余数据,以减少表连接查询带来的性能下降问题。此外,关系模型难以应付真实世界中需求变化的速度。由于试验类型多样,TDM的性质决定了业务人员不可能在需求调研阶段即向软件开发人员提供一个完整且稳定的试验管理需求[10]。因而软件开发人员设计的软件与实际业务需求通常有很大差距,项目上线后系统仍需要作大量变更。代码重构在短时间内即能完成,但数据库重构不但耗时,且风险与成本较高。采用关系型数据库的TDM系统在灵活性、可维护性和可扩展性上并不能令人满意。
2图数据库建模设计及优势
2.1Neo4j简介
本文使用图数据库Neo4j对TDM系统的一个模块进行建模,在此简要介绍图数据库Neo4j。Neo4j 是最重要的图形数据库之一[11],其使用数据结构中图(graph)的概念进行建模。Neo4j 中两个最基本的概念是节点和边,节点表示实体,边则表示实体之间的关系,节点和边都可以有自己的属性。不同实体通过各种不同关系关联起来,形成复杂的对象图。Neo4j 同时提供了在对象图上进行查找和遍历的功能。使用“图”这种最通用的数据结构对数据进行建模,使Neo4j 的数据模型具有很强的表达能力。另外,与传统NoSQL数据库不同[12],Neo4j的一个重要特点是事务支持,其具有与ACID兼容的数据格式,使用户能得到ACID的全部支持,完全能够满足企业级程序的需求。
2.2Neo4j数据库建模示例
针对同样的功能模块,使用Neo4j建立数据库。在Neo4j中,节点代表记录,可以给节点打上不同标签(label)以说明节点类型,节点不同的属性即相当于关系型数据库中表的字段。不同节点间建立的连接说明了节点间的关系。采用粗粒度建模将行和列的属性直接赋予单元格节点,单元格节点通过Cell_of关联与表格模板连接。
在图2中采用细粒度的建模方式建立表格模板表。模板表通过Has_Row与行节点连接,行节点通过Has_Cell与单元格节点连接。由此可见,使用类似Neo4j的图数据库进行建模是非常灵活且直观的。实体间的联系能如同在真实世界中一样自然保存下来,而不需要像关系型数据库一样进行逻辑转换。在图数据库中,数据库结构如何建立取决于业务需求和性能测试,并没有标准模式,因此其数据建模方式非常灵活。
2.3图数据库优势
本节通过Neo4j与关系型数据库的数据建模对比,说明图数据库的优势及其对关系型数据库的改进。首先,与关系型数据库及NoSQL相比,图数据库的性能有了很大提升。当处理强关联关系数据集时,关系型数据库的性能难以满足用户需求。关系型数据库使用join操作计算笛卡尔积并丢弃不相关数据,以返回关联查询结果,但随着数据集增大或查询深度增加,计算代价将以指數级增长。与之相对比,图的局部性使其遍历速度非常快[13]。由于每次查询只与图的一部分相关,且查询执行时间只与满足查询条件的遍历图大小(而非整个图)成正比,因此即使数据集很大,图数据库的性能依然趋向于稳定。
根据对比,使用关系型数据库建模很容易产生大量关联表,从而增加了复杂度,而使用图数据库建模是非常自然的,领域实体间的联系同样保存在数据库中。图数据库强大的表现力能有效提升开发效率,从而使开发人员有更多时间精力专注投入到领域问题中,而不需要操心如何将实体关系转化为适应数据引擎的格式。
图数据库强大的灵活性能够跟上不断变化的业务需求。开发人员并不希望在项目初始就在模型中考虑到所有细节,随着开发的深入以及与领域专家的交流,数据结构和模式会自动浮现出来。图天生就是可扩展的,这意味着可以对已存在的结构添加不同种类的新联系、新节点、新标签和新子图,而不用担心破坏已有的查询或应用程序功能[14]。图数据库的这些特点能提高开发者生产力,减少数据迁移,从而降低维护开销与使用风险。图数据库的开发方式与当今增量与迭代的软件交付实践相吻合[15],从而使以图数据库为后端的应用程序可以跟上不断变化的业务环境。
综上,图数据库有效改进了关系型数据库的不足,在图数据库中能自然、方便地表示TDM数据的复杂关联,确保良好的用户体验。而且图数据库天然的可扩展性能很好地满足TDM系统各种形式的试验数据建模需求,并能跟上不断变化的业务需求,从而大大提升了开发效率。
3关系型数据库与图数据库性能比较
为了比较关系型数据库和图数据库的性能,对其进行实验验证。实验使用的计算机配置如下:Inteli7CPU,16G内存,Windows10操作系统。由于企业实验数据的商业保密性,实验验证采用具有约50 000条记录的数据集。关系型数据库使用MySQL,图数据库使用Neo4j,二者均未采用优化手段优化查询性能。实验结果如表3所示。
表中第一列关联连接深度是指关联查询时需要连接表的数量。针对TDM系统的数据集,只要在查询时加入用户、试验项目、试验任务、试验流程等与试验表格存在关联关系的数据表即可满足查询的关联深度要求。
从表3中可以看到,当关联深度为2、3时,MySQL查询表现良好,然而当查询深度进一步增加时,MySQL的查询性能显著下降。当关联深度为5时,MySQL处理时间甚至达到了约90s。在实际生产环境中,试验人员通过手持移动终端与后台服务器进行数据交互,因此处理时间过长是无法接受的。与之形成对比,Neo4j的查询性能表现非常出色。随着查询关联深度的增加,Neo4j依然保持了良好的查询性能,相比于关系型数据库,其表现出数量级的超越。
关系型数据库的join操作通过生成所有行组合的笛卡尔积,再剔除与查询条件不匹配的结果,返回最终查询结果。依据该原理,可以预见随着关联深度增加,关系型数据库的查询性能将显著下降。图数据库性能出色的原因在于每次查询只需遍历与起始节点相连的节点,而不用考虑整个图中存在多少节点和连接。因此,在面对大数据集时,图数据库的性能依然保持稳定。Partner和Vukotic[16]在有5千万条记录数据集上的试验证明了该预期。在大数据集上进行查询时,关系型数据库甚至不能在合理时间内完成查询,而图数据库性能依然保持稳定,显著优于关系型数据库。
4结语
根据目前TDM平台中主流的数据库存储技术在查询性能、用户体验和开发过程等方面的不足以及对下一代TDM系统的开发需求,为适应试验数据非格式化和强关联等特性,本文提出一种使用图数据库构建具有出色性能和良好用户体验的TDM系统解决方案。该解决方案使用简单高效的Neo4j图数据库进行数据存储,与目前主流的TDM系统数据库端技术相比,该解决方案提升了查询性能和用户体验,并降低了开发难度,能更好地适应因业务发展与客户需求变化带来的挑战。本文对TDM系统设计与开发过程中的数据建模技术进行介绍,并将关系型数据库和图数据库两种解决方案进行了对比,可为今后类似系统的设计开发提供参考借鉴。
参考文献参考文献:
[1]王素丽,牛建强,宋铭利,等.TDM:工程数据管理平台[J].计算机工程与设计,2008,29(22):58815883.
[2]丁力,安海军.试验数据管理系统的需求与实现[J].航空计算技术,2010(3):9698.
[3]MUKKAMALA R,PEDAGANI R,KESKAR H.TDMS:test data management system for aviation software[C].Digital Avionics Systems Conference,2004.
[4]刘峰,顾君忠.元数据管理应用系统的设计与实现[J].计算机工程,2009,35(11):2931.
[5]张忠平,赵瑞珍.基于元数据驱动的 ETL架构设计[J].计算机应用与软件,2009,26(6):6163.
[6]沈国华,黄志球,杨雪涛.基于数据仓库技术的工程数据管理系统的研究与实现[J].小型微型计算机系统,2004,25(1):127130.
[7]王方星,冷文浩,孟斌.TDM 平台的海量试验数据展现优化[J].计算机工程与设计,2012,33(1):412416.
[8]TDM解决方案[EB/OL].http://www.newtera.com/.
[9]宋铭利,王素丽.试验数据管理系统的设计与实现[J].计算机工程与设计,2011 (5):16801683.
[10]李洪奇.试验数据管理系统的应用[J].软件工程师,2010,26(4):4344.
[11]Neo4j汉化团队.Neo4j简体中文手册[ EB/OL].http://docs.neo4j.org.cn /index.html.
[12]SADALAGE P J,FOWLER M.NOSQL精粹[M].北京:机械工业出版社,2013.
[13]ANGLES R, GUTIERREZ C.Survey of graph database models [J].ACM Computing Surveys(CSUR),2008,40(1):16.
[14]ROBINSON I,WEBBER J,EIFREM E.Graph databases[M].O'Reilly Media Inc,2015.
[15]王余藍.图形数据库NEO4J与关系数据库的比较研究[J].现代电子技术,2012,35(20):7779.
[16]VUKOTIC A,WATT N,ABEDRABBO T,et al.Neo4j in Action [M].New York: Manning Publications Co,2015.
责任编辑(责任编辑:黄健)
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!