路基设计软件中横断面数据处理的探讨

2021-08-16 11:17陈豪
科学技术创新 2021年22期
关键词:关系数据库横断面嵌套

陈豪

(中交第二公路勘察设计研究院有限公司,湖北 武汉 430052)

1 概述

铁路、公路、城市道路及轨道交通都属于条形带状工程,与路基设计有关的输入和输出数据量大,在长大线的情况下,数据量更是会迅速增大[1]。这些繁杂无序的数据如何准确高效地处理,一直是路基设计人员面临的一个挑战。

针对现有技术中没有一套灵活、简单、高效、准确、容易查错的路基横断面数据处理方法的情况[2],本文作者结合路基设计软件开发技术调研,尝试提出一种基于非关系数据库(NoSQL)的路基数据处理方法,并以MongoDB举例说明供同行探讨。

2 路基设计软件面临的数据处理问题

目前,国内外路基设计软件无论是二维设计软件还是三维设计软件,都是基于横断面设计的模式做的开发[3-4]。路基横断面设计,需要处理大量的横断面地面线、地层线以及试验数据等。现有的国内外路基设计软件,对路基横断面有关数据的处理方法主要有以下两种:

一是将数据保存在不同的自定义平面文件或二进制文件中,然后根据不同的设计场景,自己编写各种操控数据增删查改的程序功能。

二是将数据保存在统一的项目关系数据库中,如Access数据库、SQLite数据库等,然后根据不同的设计场景,用标准的结构化查询语言SQL或者借助一些对象关系映射ORM中间件编写各种操控数据增删查改的功能。

3 路基横断面数据处理研究

3.1 行业现状

目前,国内几个大型铁路设计院和公路设计院开发的路基设计软件,在处理路基横断面地面线数据方面,采用的方法基本相同,即分左、右侧对每个横断面实测记录地面点到线路中心点的平距和高差[5-6],不同的软件数据存储格式和形式不同,有些存储在平面文件中,有些存储在关系数据库中。在处理路基横断面地层线数据方面,由于行业习惯的差异,铁路设计院比公路设计院在这方面的研究较多一些,几家铁路设计院的地层线数据处理方法差异较大,但是均定义了内部的横断面地质填图数据互提接口格式。

3.2 基于NoSQL的新方法

下面基于NoSQL数据库MongoDB,介绍一种不同于传统平面文件及关系数据库的横断面地面线、地层线数据处理方法。

MongoDB是用C++开发的一个高效、开源、无模式的文档型数据库,其底层采用高效的BSON作为数据存储和传输格式,支持嵌套对象和数组,易于非结构化海量数据[7]的存储。

如图1所示的路基横断面,横断面实测地面线的数据组织,可以用表1所示的JSON文件来记录地面点到线路中心点的平距和高差。每一个横断面地面线数据,都可以按表1的形式组织为一个JSON文档对象存入MongoDB数据库。

表1 横断面地面线逻辑数据模型

图1 路基横断面图

该JSON文档有“里程”、“左侧”、“中桩”、“右侧”共4个顶层键,“里程”、“左侧”、“右侧”3个键的值都是一个数组。“左侧”和“右侧”键值数组中存储的是记录若干个地面点参数的JSON文档对象,这些JSON文档对象被称为嵌套文档数组,“中桩”键的值是一个嵌套JSON文档对象。

横断面地层线的数据组织,以一个包含有一般水平地层、透镜体地层和尖灭地层的最特殊横断面为例(如图1所示),用表2所示的JSON文件来记录地层线。每一个横断面地层线数据,都可以按表2的形式组织为一个JSON文档对象存入MongoDB数据库。

表2 横断面地层线逻辑数据模型

此处的示例,仅列举了一些最基础的数据,格式化编入了JSON文档,工程师可以根据不同的应用场景添加更多自定义的键值数据灵活扩展,例如可以在“地层”的键值下方添加该地层的黏聚力c、内摩擦角φ等岩土物理力学指标。

上述横断面地面线和地层线JSON文件所记录的数据格式,是一种带有嵌套的半结构化数据,这种数据格式具有“自我描述性”易于人类阅读理解,层级结构可以兼容不规则数据,数据易于扩充等特点。由于嵌套表违反传统关系数据库设计第1范式,因此未经处理不能直接存入传统的关系数据库,虽然某些关系数据库产品提供了对嵌套表这种非第1范式结构的支持[8],但是增加了应用的复杂性且灵活性差,这种绑定与某个特定数据库产品的方式不具备普遍推广的前景。

工程领域的数据普遍具有半结构化数据的特征,如果采用传统的关系数据库进行管理,由于存在半结构化数据与结构化数据之间阻抗不匹配的情况,需要由工程师人工进行关系数据表设计,这个人工设计工作的难度和工作量都较大,且不同的工程师数据库设计领域的经验和能力各不相同,最终的关系数据表设计质量将参差不齐。

目前的开源NoSQL数据库软件已经提供了直接处理半结构化数据的能力,因此工程师可以直接利用MongoDB这类开源的非关系数据库软件用于工程软件的开发,这将大大减少软件开发的工作量,同时由于采用了非关系数据库,各种繁杂多变的工程数据处理将变得简单。基于NoSQL的路基横断面数据处理新方法和常规软件优缺点对比见表3。

表3 基于NoSQL的新方法和常规软件优缺点对照表

4 路基横断面地层线数据操作实例

前述表2所示的横断面地层线JSON数据,是一种带有嵌套的JSON文档,这种嵌套的JSON文档在数据应用时,例如,需要获取里程CK78+040处路基横断面中,编号为“3”的地层类型值,可以采用表4所示的MongoDB聚合命令进行查询并返回一个自定义的普通键值格式JSON文档对象。

表4 用MongoDB聚合命令获取编号为“3”的地层类型值

5 结论

本文通过对国内公路、铁路设计院相关路基设计软件及国外路基设计软件的调研,提出了一种将路基横断面数据编码为嵌套层次JSON半结构化数据的新方法,并采用非关系数据库MongoDB进行管理。基于NoSQL的新方法,不需要开发者有成熟的关系数据库设计经验,设计非关系数据库时不需要考虑满足关系数据库设计范式要求,只要开发者掌握面向对象设计方法即可无阻抗集成非关系数据库,大大降低了土木工程师开发工程软件的难度,实现了相比传统关系数据库技术更为灵活、简单、高效的效果,可对各种繁杂多变的工程数据进行统一处理,适用于各类不同场景的路基设计软件开发。该新方法可以提高国产专业工程软件的成熟度,促进我国专业工程软件自主可控可持续发展。

猜你喜欢
关系数据库横断面嵌套
兼具高自由度低互耦的间距约束稀疏阵列设计
论电影嵌套式结构的内涵与类型
嵌套交易如何实现逆市盈利
青中年血透患者低社会支持度横断面分析
城市道路的横断面设计论述
绿色生态型城市道路横断面设计分析
基于单表结构的Web动态树设计与实现
探讨关系数据库设计中范式理论的教学方法
巧用嵌套交易实现逆市盈利
城市道路设计中的人性化因素分析