-
MongoDB是NoSQL类型的文档数据库,是一个基于分布式文件存储的开源文档型数据库系统,是一个介于关系数据库和非关系数据库之间的产品,专为可扩展性、高性能以及高可用性而设计的数据库,是非关系型数据库中功能最丰富且最像关系型数据库的,它支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型[6-8]。它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引,并提供了聚合、分片和负载均衡等功能,能够通过简单地横向扩展来提高读写性能和大规模数据批处理[9]。
-
MongoDB数据库的层次结构跟关系型数据库类似,其层次关系为:一套数据库管理软件可以包括多个数据库,而每个数据库下又可以包含多个集合,每个集合中又可以包含多个文档[10-11],如图3所示。集合对应关系型数据库的表,一个文档对应关系型数据库的一行数据,如表1所示。
MongoDB数据库具有如下几个主要优点:
1)高性能。存储引擎能够高效使用内存,减少IO次数,提供高性能的数据持久性,索引支持更快的查询[12]。
表 1 数据库术语对比
Table 1. Database term comparison
MongoDB数据库 关系型数据库 Database(数据库) Database(数据库) Collection(集合) Table(表) Document(文档) Row(行) Field(字段) Column(列) 2)高可用性。提供了副本集架构,通过类似主从(备)模式,提供自动故障转移和数据冗余。
3)高扩展性。通过数据分片实现方便实现水平扩展,突破单机的存储能力,提升数据的读写效率。
4)强大的查询功能。不仅支持关系型数据库的单表查询功能,还支持强大的聚合计算[13]。
5)灵活的数据结构。不需要预先定义数据结构和数据类型,支持动态增加文档的字段[14]。
当然MongoDB数据库也有一些局限性,不适合事务一致性很高的场景,如银行核心交易数据,以及其他涉及财务等相关场景,也不适合涉及多表复杂联查的场景[15]。
-
MongoDB数据库不需要像关系型数据库那样必须先定义表结构才能进行数据的存储,并且MongoDB数据库同一个集合里面的每一文档都可以有不同的字段,所以MongoDB非常适合存储拥有不同属性的数据,如,不同的设备或元件只有部分属性相同,大部分属性是不同的,如图4、图5所示。图中以“etattr_”开头是独有属性,它们有不同属性且属性个数相差很大,图4所示元件的是一个窗(一种元件),它拥有的属性只有11个,图5所示元件的是一个钢管(一种元件),它拥有属性却有40个,但它们都属于元件这个集合。图中其他不是以”etattr_”开头属性,是管理这个元件集合的管理属性或固有属性。
虽然MongoDB数据库不需要预先定义集合的数据结构,但是直接使用、或者随意使用将会导致数据混乱,如:同一种类型设备或元件的相同属性用不同的数据类型表示,或者采用不同的属性名,将会导致数据标准不统一、后期无法很好地对设备或元件进行查询分析。
为了解决这个问题,系统设计的时候必须为这些设备或元件关联到一个自定义的数据模板,模板定义了相同类型的设备或元件的属性名、属性的数据类型,以保证数据标准统一,当然不同的设备或元件有不同的模板。这个模板其实就是元数据,定义数据的数据,如图6所示,是管接头(一种元件)的部分自定义属性。
系统设计的时候可以采用树结构模型对数据进行组织管理,树结构是多层次的组织结构,易于理解、容易管理、扩展。实体数据(是客观存在并可相互区别的事物,对现实世界中事物的抽象,可以是元件,可以是设备,也可以是其他东西,取决使用者对它定义)内置了一些固定属性用于维护基本信息,包括:内部唯一标识、外部唯一标识、数据模板标识、编码、父子关系、层级结构,这些属性的作用如表2所示。其中topicName是较为特殊的属性,记录了当前实体数据在树结构从根节点到该节点的位置信息,也就是这个实体在树结构中的层级信息,它由各个节点的_id组成,以“/”分隔,并对该属性建立索引。它的作用是在查询分析时,能够快速地只匹配实体树上的某个节点下的实体数据。如需要统计某个节点下的各种设备或元件的数量,就可以使用如下的SQL语句进行查询:
表 2 固定属性含义
Table 2. Fixed property meaning
字段 字段含义 _id 自增主键,内部唯一标识 code 编码或者名称 entityUuid 外部唯一标识/KKS码,对接外部系统 entityType 树节点的类型,管理节点或实体节点 parentId 父节点的主键 classId 数据模板的id topicName 树上的层次结构 SELECT class_id,count(*) FROM entity WHERE topicName like '178/463/%' GROUP BY class_id
除了上面固定属性外,其他属性都属于数据模板中自定义的属性,这些属性存储在MongoDB中时以固定“etattr_”作为前缀,如图4或图5中以“etattr_”前缀的都属于自定义的属性,这个前缀是系统自动加上的,对于使用者是不可见的。系统可以通过开放接口的方式,给其他的应用通过数据模板来自定义具体的实体数据的不同属性,通过数据模板维护实体数据的属性,保证相同设备或元件具有相同的属性名、相同属性类型,避免数据不统一的问题。
相较于关系型数据库,自定义属性除了支持基本数据类型(字符串、整型、浮点型、布尔型、时间类型)之外,还支持基本数据类型数组(Array)、复合数据类型、复合数据类型数组。这些复杂属性的支持在设备树管理中非常有用的,如可以对设备进行分组管理,特别一个设备可以属于多个组的场景,如图7所示,分组属性etattr_tags是一个字符串数组,这个设备有多个组的标签,对“red”组或者“green”组的设备进行个数统计时,可以使用如下语句:
SELECT count(*) FROM entity WHERE etattr_tags = "red"
SELECT count(*) FROM entity WHERE etattr_tags = "green"
有些读者可能好奇为什么可以通过SQL语句对MongoDB数据库进行查询,因为开发人员或者数据分析人员对SQL语言比较熟悉,系统设计的时候可以提供通过SQL语句查询的功能,它能够将常用的单表查询的SQL语句解析转换为MongoDB数据库的查询语言,便于相关人员对实体数据的统计分析。
Application of MongoDB Database in Power Engineering Industry
-
摘要:
目的 为了贯彻落实国资委《关于加快推进国有企业数字化转型工作的通知》,国有企业面临着数字化转型压力与挑战,很多电力工程企业都在探索数字化转型的方向,利用云大物移智等数字化技术,解决工程项目全生命周期数据的管理是一个重要的前提条件。 方法 针对电力工程项目全生命周期数据的大量性、多样性、复杂性,分析了关系型数据库在大部分场景的不适用性,采用NoSQL数据库MongoDB解决数据量大和数据多样性、复杂性的问题。 结果 作者以MongoDB为核心数据库进行设计构建,完成工程大数据平台建设,实现了电力工程项目过程数据的灵活建模与管理,并作为工程项目全过程的数字化产品的数据底座。 结论 实践应用证明了MongoDB数据库相比于关系型数据库更加适合数据量大、数据多样性、复杂性的场景,存储效率更高,数据查询统计能力更强。 Abstract:Introduction In order to implement the "Notice on Accelerating the Digital Transformation of State-owned Enterprises" issued by the State-owned Assets Supervision and Administration Commission, state-owned enterprises are facing the pressure and challenge of digital transformation. Many power engineering enterprises are exploring the direction of digital transformation, and it is an important prerequisite to solve the management of engineering project life cycle data by using digital technologies such as cloud computing, big data, Internet of Things, mobile Internet, artificial intelligence. Method In view of the large volume, diversity and complexity of the whole life cycle data of power engineering projects, this paper analyzed the inapplicability of relational databases in most scenarios, and used the MongoDB, the NoSQL database, to solve the problems of large volume, diversity and complexity of data. Result The author designs and constructs engineering big data platform using MongoDB as the core database, which realizes the flexible modeling and management of the process data of power engineering projects, and serves as the data base of the digital products in the whole process of the engineering project. Conclusion The research has proved that MongoDB database is more suitable for scenarios with large data volume, data diversity, and complexity than relational database, with higher storage efficiency and stronger data query and statistical capabilities in practical applications. -
Key words:
- electric power /
- engineering big data /
- data diversity /
- relational database /
- MongoDB /
- data modeling /
- flexible
-
表 1 数据库术语对比
Tab. 1. Database term comparison
MongoDB数据库 关系型数据库 Database(数据库) Database(数据库) Collection(集合) Table(表) Document(文档) Row(行) Field(字段) Column(列) 表 2 固定属性含义
Tab. 2. Fixed property meaning
字段 字段含义 _id 自增主键,内部唯一标识 code 编码或者名称 entityUuid 外部唯一标识/KKS码,对接外部系统 entityType 树节点的类型,管理节点或实体节点 parentId 父节点的主键 classId 数据模板的id topicName 树上的层次结构 -
[1] 张计宏. 大数据在工程建设项目全过程投资管控中的应用研究 [J]. 建筑经济, 2022, 43(增刊1): 38-42. DOI: 10.14181/j.cnki.1002-851x.2022S10038. ZHANG J H. Research on the application of big date in the whole process investment control of construction project [J]. Construction economy, 2022, 43(Suppl. 1): 38-42. DOI: 10.14181/j.cnki.1002-851x.2022S10038. [2] 李元琳. 大数据时代工程项目管理新视角 [J]. 科技创新与应用, 2022, 12(23): 153-157. DOI: 10.19981/j.CN23-1581/G3.2022.23.037. LI Y L. New perspective of project management in the era of big data [J]. Technology innovation and application, 2022, 12(23): 153-157. DOI: 10.19981/j.CN23-1581/G3.2022.23.037. [3] 吴雁, 吴孝华. 大数据时代BIM技术在工程造价管理中的应用探析 [J]. 中国市场, 2022(19): 73-75. DOI: 10.13939/j.cnki.zgsc.2022.19.073. WU Y, WU X H. Analysis on the application of BIM technology in engineering cost management in the era of big data [J]. China market, 2022(19): 73-75. DOI: 10.13939/j.cnki.zgsc.2022.19.073. [4] 窦晓薇. 基于大数据环境下工程造价的管理对策 [J]. 中华建设, 2022(9): 27-28. DOU X W. Management countermeasures of engineering cost based on big data environment [J]. China construction, 2022(9): 27-28. [5] 杨超, 陈健, 刘光. 基于云平台的电力大数据业务处理技术 [J]. 电气应用, 2022, 41(8): 76-81. YANG C, CHEN J, LIU G. Research on an extended search technology based on knowledge map [J]. Electrotechnical application, 2022, 41(8): 76-81. [6] 郭远威. MongoDB核心原理与实践 [M]. 北京: 电子工业出版社, 2022. GUO Y W. MongoDB core principles and practice [M]. Beijing: Publishing House of Electronics Industry, 2022. [7] 王辉, 傅康平, 侯毅, 等. 一种面向MongoDB的数据库统一访问接口设计与实现 [J]. 电子技术与软件工程, 2021(1): 171-173. WANG H, FU K P, HOU Y, et al. Design and implementation of a unified database access interface for MongoDB [J]. Electronic technology & software engineering, 2021(1): 171-173. [8] 王萍. 基于MongoDB的外卖订单业务实现 [J]. 信息与电脑, 2021, 33(11): 110-113. DOI: 10.3969/j.issn.1003-9767.2021.11.034. WANG P. Realization of takeaway order business based on MongoDB [J]. China computer & communication, 2021, 33(11): 110-113. DOI: 10.3969/j.issn.1003-9767.2021.11.034. [9] 叶思斯, 林志达, 郭献彬, 等. 基于MongoDB的配置管理平台应用研究 [J]. 系统仿真技术, 2021, 17(4): 253-258. DOI: 10.16812/j.cnki.cn31-1945.2021.04.008. YE S S, LIN Z D, GUO X B, et al. The use of configuration management platform based on MongoDB [J]. System simulation technology, 2021, 17(4): 253-258. DOI: 10.16812/j.cnki.cn31-1945.2021.04.008. [10] 白洁, 武佳丽, 余啟旺, 等. 基于MongoDB的非关系型数据库的设计与应用 [J]. 湖北师范大学学报(自然科学版), 2022, 42(2): 79-82. DOI: 10.3969/j.issn.2096-3149.2022.02.012. BAI J, WU J L, YU Q W, et al. Design and application of non relational database based on MongoDB [J]. Journal of Hubei normal university (natural science), 2022, 42(2): 79-82. DOI: 10.3969/j.issn.2096-3149.2022.02.012. [11] 刘瑜, 刘胜松. NoSQL数据库入门与实践: 基于MongoDB、Redis [M]. 北京: 中国水利水电出版社, 2018. LIU Y, LIU S S. Introduction and practice of NoSQL database: based on MongoDB, Redis [M]. Beijing: China Water & Power Press, 2018. [12] 许娜, 耿恒高, 徐传鹏, 等. 基于MongoDB的地震勘探数据管理系统的设计与实现 [J]. 实验室研究与探索, 2022, 41(2): 251-260. DOI: 10.19927/j.cnki.syyt.2022.02.054. XU N, GENG H G, XU C P, et al. Design and implementation of seismic exploration data management system based on MongoDB [J]. Research and exploration in laboratory, 2022, 41(2): 251-260. DOI: 10.19927/j.cnki.syyt.2022.02.054. [13] 马亮亮, 钟闰禄. 一种基于MongoDB的企业内容管理系统实现 [J]. 电脑编程技巧与维护, 2021(12): 110-112. DOI: 10.16184/j.cnki.comprg.2021.12.040. MA L L, ZHONG R L. Implementation of an enterprise content management system based on MongoDB [J]. Computer programming skills & maintenance, 2021(12): 110-112. DOI: 10.16184/j.cnki.comprg.2021.12.040. [14] 凌敏, 王骥. 基于Netty和MongoDB的车联网Web系统 [J]. 测绘与空间地理信息, 2021, 44(10): 55-58,62. DOI: 10.3969/j.issn.1672-5867.2021.10.015. LING M, WANG J. Internet of vehicles (IOV) Web system based on Netty and MongoDB [J]. Geomatics & spatial information technology, 2021, 44(10): 55-58,62. DOI: 10.3969/j.issn.1672-5867.2021.10.015. [15] 张雯杰, 蔡佳玲. MongoDB从入门到商业实战 [M]. 北京: 电子工业出版社, 2019. ZHANG W J, CAI J L. MongoDB from entry to business practice [M]. Beijing: Publishing House of Electronics Industry, 2019.