图数据库在工程数据中心的应用
2021-10-08陈肖勇蔡永健顾丹鹏何栓康主令恒
陈肖勇 蔡永健 顾丹鹏 何栓康 主令恒
摘 要: 为了提升工程建设及运维过程的工作效率和质量,建设覆盖工程全过程的全生命周期工程数据中心具有重大意义。工程数据中心数据建设的特点在于数据之间关联的多样化和复杂化,为适应这样的数据存储需求,采用区别于关系型数据库的图数据库构建工程主数据的存储方案,以维护其复杂多变的关联关系,并为基于图结构数据进行数据分析应用提供了可能。
关键词: 图数据库; 数据存储; 数据中心; 图结构数据
中图分类号:TP392 文献标识码:A 文章编号:1006-8228(2021)09-42-04
Abstract: In order to improve the work efficiency and quality of project construction and maintenance process, it is of great significance to establish a full life cycle engineering data center covering the whole process of the project. The characteristics of data construction of engineering data center are the diversification and complexity of data association. In order to adapt to such data storage needs, the graph database, which is different from the relational database, is used to construct the storage of main engineering data in order to maintain the complex and changeable association relationship, and provide the possibility for graph structured data based data analysis and application.
Key words: graph database; data storage; data center; graph structured data
0 引言
工程數据中心的数据建设特点在于数据之间关联多样化和复杂化,系统设计之初需要考虑到为建立主数据管理体系和数据标准体系提供灵活可配置的数据模型,对于其采用的主数据库选型,传统的关系型数据库受到了一定的限制和约束。
近年来,有别于传统关系型数据库,出现了一系列新型的No-SQL数据库类型(Not Only SQL,非关系型数据库),其中图数据库(Graph Database)是一种以图结构进行语义查询,并使用顶点、边与属性来表示和存储数据的数据库[1]。图数据库的关键概念是边,通过边将顶点连接在一起,从而进行快速的图检索操作。图数据库的关注点是“关联关系”形成的图,其目标是对现实世界中的实体与实体之间的关联关系进行存储与分析:将实体抽象为顶点、将实体之间的关联关系抽象为边。通过顶点和边形成的图谱结构,直观自然的表达万物关联的世界,同时解决了复杂关联关系深层检索的性能问题。
考虑到工程数据中心的主数据特点,本文探讨在工程数据中心的设计中应用图数据库存储和管理工程主数据,以维护其复杂多变的关联关系,实践中本文案例选取了具备多种NoSQL特点的原生多模型图数据库ArangoDB,构建了工程数据中心的主数据服务。
1 图数据库简介
现实世界中的一切事物都处在联系之中,如人际关系、电脑网络、地理数据、分子结构模型等,无一不处在纷繁复杂的联系之中。这种联系,形成了一种互相关联的数据,联系才是数据的本质所在。传统的关系型数据库并不能很好地表现数据的联系,而一些NoSQL数据库又不能表现数据之间的联系。同样是NoSQL的图数据库,是以图的结构形式来存储数据的,它所存储的就是联系的数据,是关联数据本身[2]。
关联数据中的联系本来就很复杂,若要在关系型数据库中使用结构化形式来表现这种联系,则一般不能直接表示,处理起来既烦琐又费事,并且随着数据的不断增长,其访问性能将日趋下降。无数的开发人员和数据库管理人员都或多或少地使用过关系型数据库,在其应用的规模化进展过程中,对于数据库的性能优化往往捉襟见肘、陷入窘境。图数据库没有模式结构的定义,也不需要这些定义,它使用非结构化的方式来存储关联数据,所以能够直接表现数据的关联特性。
2 图数据库优势
2.1 数据处理速度
图数据库可以很高效地插入大量数据。图数据库面向的应用领域数据量可能都比较大,比如知识图谱、社交关系、风控关系等,总数据量级别一般在亿或十亿以上,有的甚至达到百亿级。关系型数据库如mysql不做分库分表的情况下插入百万数据基本就很慢,图数据则能够胜任亿级以上的数据,比如Neo4j、ArangoDB等图数据库,在持续插入亿级的数据基本还能保持在一个较高的速度[3]。
图数据库可以很高效地查询关联数据。传统关系型数据库不擅长做关联查询,特别是多层关联。因为关系型数据库一般需要做表连接,表连接是一个很昂贵的操作,涉及到大量的IO操作和内存消耗。图数据库对关联查询一般都进行针对性的优化,比如存储模型上、数据结构、查询算法等,防止局部数据的查询引发全部数据的读取[4]。
2.2 扩展性
图数据库使用图的方式来表达现实世界的关系很直接、自然,易于建模。比如工程中某位工程师绘制了一张图纸,就可以建立一条边连接这个工程师和这张图纸,这条边就叫做“绘制”边,同时这位工程师还是可以有很多其他的边,比如所属部门、检查设备边等,同样这张图纸也有其他边,这样很自然地就构建了关系网。
此外,图数据库提供了针对图检索的查询语言和专业的分析算法工具。图数据库语言比如GRE面临、Cypher等,算法比如ShortestPath、PageRank,PersonalRank、Louvain等,这些语言、算法工具为图数据库的扩展提供了很大的便利。
3 数据处理技术方案
3.1 数据库选择与设计
ArangoDB是一个原生多模型数据库,兼有key/value键/值对、graph图和document文档数据模型,提供了涵概三种数据模型的统一的数据库查询语言,并允许在单个查询中混合使用三种模型。基于其本地集成多模型特性,支持搭建高性能程序,并且这三种数据模型均支持水平扩展。
本文的实践中,选择了ArangoDB数据库作为工程数据中心主数据服务的存储解决方案,主要理由是其多模型特征在利用其图存储特性之外,还能利用键/值对模型与工程数据中心包括元数据服务在内的其他服务模块进行跨数据库数据映射匹配。
3.1.1 容器设计
不同于关系型数据库,图数据库没有表结构,取而代之的是容器的概念。容器与表相似,可以定义属性字段和标签。容器分普通容器和边容器,普通容器用于存储图的节点,边容器则存储图的边。
工程数据中心的应用场景将工程数据对象用普通容器存储为节点,并定义为主数据容器。
主数据容器包含固定字段和动态字段,固定字段用于标识数据对象的类型和基本信息,动态字段是一个JSON形式保存键值对的字段,用于保存基于实际应用场景定义的数据对象属性。
3.1.2 动态字段设计
为适应可动态配置的属性字段结构,把属性字段定义在单独的表进行维护,并约束属性字段的名称、类型、规则和取值范围,通过唯一的属性字段ID进行匹配。具体匹配方式为,在用于存储动态字段的JSON子串中,用属性字段ID作为键值对的键,对应的属性值作为键值对的值。当数据对象被读取时,对JSON字串中每个键值对,利用属性字段ID匹配查询出每个属性字段的名称、类型等信息,配上键值对的值,即为完整的每个属性。
该设计还可以将数据对象的关联关系抽象为一种属性字段,并通过属性字段ID和图数据存储结构的边进行标签关联,数据对象与另一个数据对象的关联描述作为一个引用属性在数据对象的内容中体现。
3.2 事务处理
在数据处理的过程中,不可避免的需要面对事务机制,在存在多种关联关系的图结构数据中,数据联动修改时的事务机制实现也是图数据库应用实践中需要面对的问题。
Spring Data ArangoDB对数据库事务机制的支持并不完善,实践中开发团队对此进行了额外的处理,利用ArangoDB Java Driver驱动模块提供的事务相关接口完成了事务封装的实现。事务实现流程见图1:通过构建自定义的事务处理模版,将数据处理相关的核心流程进行封装,并将事务实现的相关流程(获取事务ID、构建选项参数、调用)操作嵌入模版,利用驱动提供的ArangoAspect完成事务机制的实现。
4 图数据库应用实践
4.1 工程数据中心说明
工程数据中心项目目标是为建立各工程行业BIM模型及工程数据标准,梳理设计、建管、运维三大平台的主数据及关系,实现工程全过程数据贯通,并在此基础上不断围绕工程进行数据的集成、复用、沉淀,从而创造数据价值和业务价值[5]。
工程主数据指具有高业务价值的、可以在工程内跨越各个阶段、各个业务部门被重复使用的数据,是具有单一、准确、权威性质的数据。工程主数据包含工程元数据、工程引用数据、工程结构数据、业务结构数据。工程元数据,指工程数据中心最基础的数据,是关于工程数据的数据,或者是用于描述其他工程数据的结构数据。工程引用数据,定义了工程元数据的可能取值范围,也可称为属性值域。工程结构数据,描述了工程数据之间的关系,反映了现实世界的实体间的关系或流程。业务结构数据,数据描述了各工程业务的直接参与者,业务结构数据描述的数据实体通常由一个唯一的数据编码以及大量的属性信息构成。根据工程数据中心业务应用需求,数据层负责数据存储,包括工程元数据、工程引用数据、工程结构数据、业务结构数据、模型文件、模型属性、空间位置及文档文件等,这些数据包含结构化与非结构化数据,为了存储这些数据,需要采用多种存储技术,构建异构数据系统,具体包括:分布式缓存(Redis)这类内存数据库,用于提升服务响应性能;对象存储(Minio,ObjectStorage Service)用于存储非结构化数据,如模型、文档;关系型数据库(MySQL)用于存储主数据及系统相关数据;图数据库(ArangoDB)用于存储工程对象数据,组成工程对象关系网络;空间数据库(PostgreSQL+PostGIS)用于存储BIM的空间几何数据。
4.2 图数据库的应用
图数据库在工程数据中心用于存储工程对象数据,包括数据对象和对象关联关系。具体数据对象的创建思路分两步。
第一步,建立数据标准,数据标准描述了工程对象数据的关系结构和属性字段定义。将数据标准结构化存储,其结果称为工程元数据,这些工程元数据并不以图结构存储而是更适合以SQL数据库存储,仅用于驱动工程对象数据的存取操作过程。
第二步,完成工程元数据创建后,可以在图数据库具体创建工程数据对象,按上文3.1.2节所述的动态字段设计逻辑,工程数据对象基于第一步的工程元数据创建数据对象实体,包括其动态属性字段,即为图结构的节点,和创建数据对象之间的关联关系,即为图结构的边。
在实践过程中,第一步过程扩展为工程数据中心的工程元数据管理模块,用于维护数据标准的创建、迭代和应用管理;第二步过程则被项目数据管理模块涵盖,在底层实现时,通过将工程元数据的内容抽象为“数据模版”,并指导在图数据库上创建和更新工程数据对象,包括控制工程数据对象的数据域,操作其属性字段的类型、值域和校验规则,也包括以将数据对象关联关系抽象为主对象的一个引用属性的方式,操作数据对象关联所对应的边。
在数据对象以图结构完成存储之后,工程数据中心可以基于图数据库提供的一系列图算法函数,对工程数据对象的关系网进行一系列的分析、遍历和统计。
5 结束语
本文介绍了图数据库作为No-SQL数据库的一种,其与关系型数据库对比的优点。为满足工程数据中心的主数据存储应用场景的需求,本文重点阐述了采用图数据库ArangoDB构建工程数据中心主数据服务存储方案的设计思路和应用实践过程。基于以上论述可见,采用图数据库作为工程数据中心的主数据服务存储方案规避了采用关系型数据库会遭遇的一系列难题,有效降低了开发和系统后续升级维护的复杂度,并且基于图结构数据为未来基于图的数据分析应用提供了可能。
参考文献(References):
[1] 王慧孜,范炜.图数据库在标签系统中的应用研究[J].数字图书馆论坛,2015.4.
[2] 杨振万,为清.图数据库的研究和应用电脑编程技巧与维护,2020.12.
[3] 刘玉程,李港.NoSQL數据库与关系型数据库对比[J].中国新通信,2018.7.
[4] 杜丽娟.关系型数据库与NoSQL数据库的性能对比[J].智能计算机与应用,2017.3.
[5] 王金锋,张业星,陈健等.水电全生命周期工程数据中心及其关键技术[J].水力发电,2014.40(8):21-24