CN116521142B - 基于Presto扩展的时空大数据SQL引擎的实现方法 - Google Patents
基于Presto扩展的时空大数据SQL引擎的实现方法 Download PDFInfo
- Publication number
- CN116521142B CN116521142B CN202310782319.3A CN202310782319A CN116521142B CN 116521142 B CN116521142 B CN 116521142B CN 202310782319 A CN202310782319 A CN 202310782319A CN 116521142 B CN116521142 B CN 116521142B
- Authority
- CN
- China
- Prior art keywords
- data
- space
- time
- time data
- query
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000012545 processing Methods 0.000 claims abstract description 37
- 230000006870 function Effects 0.000 claims description 26
- 238000001914 filtration Methods 0.000 claims description 18
- 238000007726 management method Methods 0.000 claims description 14
- 238000004364 calculation method Methods 0.000 claims description 12
- 238000004458 analytical method Methods 0.000 claims description 10
- 238000013500 data storage Methods 0.000 claims description 9
- 238000005457 optimization Methods 0.000 claims description 7
- 230000007246 mechanism Effects 0.000 claims description 5
- 238000012986 modification Methods 0.000 claims description 5
- 230000004048 modification Effects 0.000 claims description 5
- 230000011218 segmentation Effects 0.000 claims description 4
- 238000013523 data management Methods 0.000 claims description 3
- 238000012217 deletion Methods 0.000 claims description 3
- 230000037430 deletion Effects 0.000 claims description 3
- 238000013507 mapping Methods 0.000 claims description 3
- 230000001502 supplementing effect Effects 0.000 claims description 3
- 230000002688 persistence Effects 0.000 claims description 2
- 230000002776 aggregation Effects 0.000 claims 1
- 238000004220 aggregation Methods 0.000 claims 1
- 238000012163 sequencing technique Methods 0.000 claims 1
- 230000002123 temporal effect Effects 0.000 claims 1
- 230000002452 interceptive effect Effects 0.000 abstract description 6
- 238000007405 data analysis Methods 0.000 abstract description 4
- 241001634830 Geometridae Species 0.000 abstract description 3
- 230000008569 process Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002045 lasting effect Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于Presto扩展的时空大数据SQL引擎的实现方法,步骤为:S1:创建自定义的时空数据源处理连接器,对海量时空数据的存储和时空索引的创建;S2:采用Geomesa作为时空数据处理中间件,实现分布式计算系统面向海量时空数据查询与分析;S3:在Presto客户端和/或服务端通过数据类型扩展新增时空数据类型,融合多种数据关联查询,并在JDBC协议接口中对时空类型数据进行解析,完成跨多种数据的时空数据的处理。通过扩展Presto分布式交互SQL引擎框架实现了对海量时空数据的写入和查询,且新增的时空数据源部署简单,有效降低用户分析数据的难度,大幅度扩展数据分析的类型。
Description
技术领域
本发明属于数据库处理技术领域,尤其涉及一种基于Presto扩展的时空大数据SQL引擎的实现方法。
背景技术
在数据处理领域,结构化查询语言(SQL,Structured Query Language)是目前最广泛的数据处理技术,在数据处理和分析中普及率非常高,几乎是每一个数据工程师必须掌握的语言,甚至非数据处理岗位的人也在学习使用SQL。得益于空间定位技术、传感器网络的飞速发展,空间定位传感器产生并积累了海量移动目标的时空数据。在OLAP领域(Online Analytical Processing)出现很多分布式SQL交互查询引擎,但无法有效的处理时空类数据。市面上PostGIS是关系型数据库PostgreSQL的一个插件扩展,以实现处理时空类数据的能力,但PostGIS是单机系统不能有效进行水平扩展,无法满足海量时空数据的处理和分析。并且在实际数据分析场景中,往往需要跨多种数据源并结合时空数据内容进行交互式联合查询和分析。
发明内容
本发明要解决的技术问题是,提供一种基于Presto扩展的时空大数据SQL引擎的实现方法,通过扩展Presto框架解决了现有传统分布式交互SQL引擎无法处理时空数据和现有单机版时空数据库无法承载海量时空数据的矛盾,实现了多种数据源跨库查询与海量时空数据处理;同时基于Presto对传统多数据源的支持,融合新扩展的时空数据源,形成包含时空数据类型在内的多源联合查询能力,且提高了数据查询性能和响应时间。
为了解决上述技术问题,本发明采用的技术方案是:该基于Presto扩展的时空大数据SQL引擎的实现方法,具体包括以下步骤:
S1:创建自定义的时空数据源处理连接器,对海量时空数据的存储和时空索引的管理;
S2:采用Geomesa作为时空数据处理中间件,实现分布式计算系统面向海量时空数据查询与分析;
S3:在Presto客户端和/或服务端通过数据类型扩展新增时空数据类型,融合多种数据关联查询,并在JDBC协议接口中对时空类型数据进行解析,完成跨多种数据的时空数据的处理。
优选地,所述步骤S1中通过继承和重定义Presto的服务发现机制SPI接口相关接口和种类,创建一个自定义的时空数据源处理连接器,具体步骤为:
S11实现扩展时空数据源插件接口类:首先向Presto中注册新插件的名称、扩展的时空数据类型和新插件实例的入口主类;
S12实现扩展时空数据源的入口接口类:进行新插件的配置管理、时空数据源连接实例管理、时空数据获取与写入管理以及时空数据源并行分割管理;
S13实现扩展时空数据源的元信息接口类:对时空数据源的对时空数据源的数据库对象集合(schema)管理,包括时空数据表结构信息获取、表结构的创建、表结构的删除、表字段新增和表字段修改和更新;
S14实现扩展数据类型接口类:新增对时空数据类型的支持;扩展自定义函数接口类,新增对时空数据的处理函数;
S15实现扩展时空数据源连接器:通过对海量时空数据存储进行连接管理,并通过时空数据的行指针功能和持久化时空数据功能完成对时空数据的获取和写入;
S16实现执行计划优化器接口类:通过新增结构化查询SQL优化器的规则,优化结构化查询SQL的物理执行计划,实现对时空数据查询性能优化。
优选地,所述步骤S1中还包含插件参数的配置,配置参数为:插件名称、时空数据源存储Hbase连接地址、Hbase安全认证用户名、Hbase安全认证密码和Geomesa索引优化配置;部署Hbase集群作为海量时空数据源的存储,并在Hbase系统目录中对Geomesa时空处理工具包进行配置,启动Hbase集群服务;实现对时空数据的写入、查询和元数据设置,创建能够查询和写入Hbase海量时空信息的数据源。
优选地,在所述步骤S13中实现扩展时空数据源的元信息接口类是基于Presto具有的目录(catalog)、数据库对象集合(schema)和数据库表(table)的三层数据管理结构接口,通过对应的元数据接口实现对时空数据库的表信息、数据量统计和数据存储位置信息的获取;从而在结构化查询SQL语法上能够完整获取时空数据表结构和索引情况;其中目录(catalog)对应新增的时空数据源,数据库对象集合(schema)对应时空数据源中的一个数据库,数据库表(table)对应数据库中的一个表,该表中的每一行是多列数据,每一列的数据类型是基本数据类型或OGC规范的时空数据类型。
优选地,在所述步骤S14实现扩展新的时空数据类型接口类中扩展的时空数据类型以及基于JDBC协议接口扩展的时空数据类型均包括:全局唯一标识符类型、平面空间类型、点类型、多点类型、线类型、多线类型、面类型、多面类型、平面空间数据集合;所述时空数据类型均支持序列化与反序列化。
优选地,在所述步骤S15中基于Presto的数据写入接口实现时空数据写入操作,把时空数据通过JDBC协议接口的方式写入Geomesa数据存储中,实现对海量时空数据的存储。
优选地,所述步骤S16中实现执行计划优化器接口类的结构化查询SQL优化器包括:列裁剪、表达式折叠和谓词下推,所述列裁剪是通过对结构化查询SQL语句经过语法解析后得到一棵语法树,之后对语法树自顶向下进行遍历;而语法树的某个节点需要用到的列则为该节点需要用到的列加上该语法树的父节点所需要用到的列;所述表达式折叠是指在结构化查询SQL语句中,当存在多个数值类型变量进行计算且能直接计算得出结果时,则由常量直接替换变量;再通过结构化查询SQL优化器的接口进行向下传播,使表达式计算更靠近数据源;所述谓词下推即为返回值是true或者false的函数。所述谓词下推是一种最重要的优化规则同时也是最容易理解的规则,目标就是把过滤条件下推到离数据源越近越好,使得在执行查询之前尽可能的过滤掉无用的数据。其中数值关系谓词:等于(EQUAL)、小于(LESS_THAN)、小于等于(LESS_THAN_OR_EQUAL)、大于(GREATER_THAN)、大于等于(GREATER_THAN_OR_EQUAL)、不等于(NOT_EQUAL)、非(NOT);空间关系谓词:实现符合OGC标准的空间要素规范空间关系,包括但不限于:空间包含(ST_Contains)、空间覆盖(ST_Covers)、空间交叉(ST_Crosses)、空间不相交(ST_Disjoint)、空间不相等(ST_Equals)、空间交集(ST_Intersects)、空间重叠(ST_Overlaps)、空间九交模型(ST_Relate)、空间相触(ST_Touches)、空间被包含(ST_Within)。
优选地,所述步骤S16中数值类型包括:基本数值类型;所述基本数值类型包括大整型、整型、短整型、小整型和双精度整型;数值类型变量进行计算的运行方式包括:加、减、乘、除。
优选地,所述步骤S15中支持写入的数据类型包括:布尔类型(BOOLEAN)、大整型(BIGINT)、整型(INTEGER)、短整型(SMALLINT)、小整型(TINYINT)、双精度整型(DOUBLE)、字符型(Varchar)、日期(DATE)、时间(TIME)、时间戳(TIMESTAMP)、带时区时间戳(TIMESTAMP_WITH_TIME_ZONE)、平面空间类型(Geometry)、点类型(POINT)、多点类型(MULTI_POINT)、线类型(LINE_STRING)、多线类型(MULTI_LINE_STRING)、面类型(POLYGON)、多面类型(MULTI_POLYGON)、平面空间数据集合(GEOMETRY_COLLECTION)。
优选地,所述步骤S2中先将步骤S1中创建的自定义的时空数据源连接器的代码编译为二进制jar包,再以Presto插件包的方式部署在插件目录中,且在Presto插件包的配置目录中,新增自定义的时空数据源连接器的目录属性文件;所述目录属性文件中包括:Hbase服务连接地址、自定义时空数据源的目录类型、数据库对象集合名称、用户、密码和性能优化相关的配置;再在系统配置文件中设置时空数据源的连接参数,从而自动完成对分布式SQL引擎Presto的扩展,使之对时空数据源的支持。新增的时空数据源部署简单,有效降低用户分析数据的难度,大幅度扩展数据分析的类型。
优选地,在所述步骤S16中先将结构化查询SQL语法转换为通用查询语法CQL,采用通用查询语法CQL(Common Query Language),将结构化查询SQL语法转换为通用查询语法CQL语法的具体步骤为:
S161:使用结构化查询SQL语法解析器和逻辑优化器把查询谓词进行下推,在查询过滤中提取出附加谓词列表;所述查询谓词包含查询的列和条件值,分别放入指定的数据结构中;
S162:若查询谓词是关系表达式,则利用lambda表达式中的映射和归集方法把关系表达式提取出来;然后生成通用查询语法CQL的数据过滤对象;
S163:若查询谓词是函数表达式,则提取函数名和函数的入参;在处理入参数据类型时,若入参数据类型为时空数据类型,则把时空数据子类型转换为时空数据父类型,然后生成通用查询语法CQL的数据过滤数据格式;
S164:根据查询关系表达式或函数表达式中的占位符,获取对应的数据,并遍历所有占位符集,在条件值列表对象集合中获取常量值进行填充,填充后的表达式再次构建通用查询语法CQL的条件过滤对象;
S165:检查获取的时空数据中是否存在有效通用查询语法CQL的条件过滤;若不存在,则补充全表扫描语句;然后通过geotools工具包将通用查询语法CQL语法的条件过滤进行执行,最终从Geomesa数据源获取时空数据集。
与现有技术相比,本发明具有的有益效果为:该基于Presto扩展的时空大数据SQL引擎的实现方法通过扩展Presto分布式交互SQL引擎框架实现了对海量时空数据的写入和查询,特别是借助声明式的SQL语言,用户编写一个SQL查询语句就可以从时空数据库中指定他们希望从系统获得的数据,并且通过管道流(PipeLine)设计,在进行大量数据处理过程中,终端在计算一部分时就可以看部分结果,因此终端不需要等待所有的数据计算完毕之后才能看到结果。通过扩展Presto框架解决了现有传统分布式交互SQL引擎无法处理时空数据和现有单机版时空数据库无法承载海量时空数据的矛盾。基于Presto对传统多数据源的支持,融合新扩展的时空数据源,形成包含时空数据类型在内的多源联合查询能力。针对时空数据处理的特点,进一步对SQL引擎优化,提高了数据查询性能和响应时间。
附图说明
图1为本发明的基于Presto框架SQL引擎扩展的时空数据源方法以及与其他数据源的逻辑关系图;
图2为本发明的基于Presto框架SQL引擎扩展的时空大数据实现方法的时空数据查询流程图;
图3为本发明的基于Presto框架SQL引擎扩展的时空大数据SQL引擎中实现时空数据源与其它多种数据源联合结果样例图。
具体实施方式
下面结合附图对本发明实施例进行详细描述,以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
实施例中涉及的名词解释:
Connector:扩展时空数据源连接器;
Module:扩展时空数据源的入口接口类;
Plugin:扩展时空数据源插件接口类;
ConnectorSplit:扩展时空数据源并行分割接口类;
ConnectorMetadata:扩展时空数据源的元信息接口类;
Types:扩展新的时空数据类型接口类;
Functions:扩展时空数据处理函数接口类;
PlanOptimizer:执行计划优化器接口类;
RecordCursor:获取时空数据的行指针接口类;
RecordSet:持久化时空数据接口类;
Event Listener:SQL执行流程中的事件监听接口类;
如图1所示,基于Presto框架是开源的MPP(Massive Parallel Processing)SQL引擎,沿用了通用的Master-Slave架构包括一个Coordinator主节点和多个Worker执行从节点;其中Coordinator主节点负责解析SQL查询语句,生成执行计划,分发执行任务给Worker节点执行;Worker节点负责实际执行查询任务;其理念分离计算层和存储层,其不存储数据,通过服务发现机制(SPI)实现对各种数据源的访问;本实施例的基于Presto扩展的时空大数据SQL引擎的实现方法,具体包括以下步骤:
S1:创建一个自定义的时空数据源处理连接器,对海量时空数据的存储和时空索引的创建;
所述步骤S1中还包含插件参数的配置,配置参数为:插件名称、时空数据源存储Hbase连接地址、Hbase安全认证用户名、Hbase安全认证密码和Geomesa索引优化配置;部署分布式Hbase集群作为海量时空数据源的存储,并在Hbase系统目录中对Geomesa时空处理工具包进行配置,启动分布式Hbase集群服务;实现对时空数据的写入、查询和元数据设置,创建能够查询和写入Hbase海量时空信息的数据源。创建一个能够查询和写入Hbase海量时空信息的数据源;HBase是一个分布式的、面向列的开源数据库;Geomesa是开源的基于分布式计算系统的面向海量时空数据查询与分析的工具包,它支持多种可扩展的、基于云端的数据存储架构;
所述步骤S1中通过继承和重定义Presto的服务发现机制SPI接口相关接口和种类,创建一个自定义的时空数据源处理连接器,具体步骤为:
S11实现扩展时空数据源插件接口类:首先向Presto中注册新的插件的名称、扩展的时空数据类型和新插件实例的入口主类;
S12实现扩展时空数据源的入口接口类:进行新的插件的配置管理、时空数据源连接实例管理、时空数据获取与写入管理以及时空数据源并行分割管理;
S13实现扩展时空数据源的元信息接口类(实现ConnectorMetadata接口类):对时空数据源的数据库对象集合(schema),包括时空数据表结构信息获取、表结构的创建、表结构的删除、表字段新增和表字段修改和更新;在所述步骤S13中实现扩展时空数据源的元信息接口类是基于Presto具有的目录(catalog)、数据库对象集合(schema)和数据库表(table)三层数据管理结构接口,通过对应的元数据接口实现对时空数据库的表信息、数据量统计和数据存储位置信息的获取;从而在SQL语法上能够完整获取时空数据表结构和索引情况;其中目录catalog对应新增的时空数据源,数据库对象集合schema对应时空数据源中的一个数据库,数据库表table对应数据库中的一个表,该表中的每一行就是多列数据,每一列的数据类型是基本数据类型或是OGC规范的时空数据类型;
S14实现扩展新的时空数据类型接口类:扩展对时空数据类型的支持和通过Functions接口类扩展对时空数据的处理函数;其中包括传统SQL基本函数功能,还包括符合空间数据库标准规范SFA SQL和SQL/MM的空间数据构造与编辑、空间数据转换与访问、空间关系处理、空间几何操作、空间聚类和边框操作;
在所述步骤S14实现扩展新的时空数据类型接口类中扩展的时空数据类型以及基于JDBC协议接口扩展的时空数据类型均包括:Uuid全局唯一标识符类型、Geometry平面空间类型、Point点类型、MPoint多点类型、LineString线类型、MLineString多线类型、Polygon面类型、MPolygon多面类型、GeometryCollection平面空间数据集合;所述时空数据类型均支持序列化与反序列化;
同时,基于Presto的SQL引擎框架扩展的时空数据源,支持完善的SQL语法,支持的SQL语法包括但不限于以下所列部分:CREATE TABLE(创建表)、DELETE(删除表数据)、DESCRIBE(显示表描述)、EXECUTE(执行语句)、DROP TABLE(删除表)、EXPLAIN(显示执行计划)、INSERT(插入数据)、PREPARE(编译语句)、SELECT(查询语句)、SHOW COLUMNS(显示表的列信息)、SHOW CREATE TABLE(显示表的信息)、SHOW SCHEMAS(显示所有命名空间)、SHOWTABLES(显示所有表)、USE(切换用户)、TRUNCATE(删除表数据)、SHOW FUNCTIONS(显示支持的函数信息);
S15实现扩展时空数据源连接器:通过对海量时空数据存储进行连接管理,并通过时空数据的行指针接口类和持久化时空数据接口完成对时空数据的获取和写入;在所述步骤S15中基于Presto的数据写入接口实现时空数据写入操作,把时空数据通过JDBC协议接口的方式写入Geomesa数据存储中,实现对海量时空数据的存储;所述步骤S15中支持写入的数据类型包括:布尔类型(BOOLEAN)、大整型(BIGINT)、整型(INTEGER)、短整型(SMALLINT)、小整型(TINYINT)、双精度整型(DOUBLE)、字符型(Varchar)、日期(DATE)、时间(TIME)、时间戳(TIMESTAMP)、带时区时间戳(TIMESTAMP_WITH_TIME_ZONE)、平面空间类型(Geometry)、点类型(POINT)、多点类型(MULTI_POINT)、线类型(LINE_STRING)、多线类型(MULTI_LINE_STRING)、面类型(POLYGON)、多面类型(MULTI_POLYGON)、平面空间数据集合(GEOMETRY_COLLECTION);其中写入的数据中包括新增的时空数据类型与所述步骤S14中相同;
S16实现执行计划优化器接口类:通过新增SQL优化器规则,优化查询SQL的物理执行计划,实现对时空数据查询性能优化;
如图2所示,所述步骤S16中实现执行计划优化器接口类的结构化查询SQL优化器包括:列裁剪、表达式折叠和谓词下推,所述列裁剪是通过对结构化查询SQL语句经过语法解析后得到一棵语法树,之后对语法树自顶向下进行遍历;而语法树的某个节点需要用到的列则为该节点需要用到的列加上该语法树的父节点所需要用到的列;所述表达式折叠是指在结构化查询SQL语句中,当存在多个数值类型变量进行计算且能直接计算得出结果时,则由常量直接替换变量;再通过结构化查询SQL优化器的接口进行向下传播,使表达式计算更靠近数据源;所述谓词下推即为返回值是true或者false的函数;这样得到整个SQL查询语句所涉及到的列,从而再读取数据时只读取需要的列即可,列裁剪通过投射(Projection)只读取需要的数据减少IO操作来达到优化的目的;
所述表达式折叠是指在SQL查询语句中,当存在多个数值类型变量进行计算且能直接计算得出结果时,则由常量直接替换变量;再通过SQL优化器的接口进行向下传播,使得表达式计算更靠近数据源;所述步骤S16中的数值类型包括:大整型(BIGINT)、整型(INTEGER)、短整型(SMALLINT)、小整型(TINYINT)、双精度整型(DOUBLE);算术运行包括:加、减、乘、除;所述谓词下推是一种最重要的优化规则同时也是最容易理解的规则,目标就是把过滤条件下推到离数据源越近越好,使得在执行查询之前尽可能的过滤掉无用的数据;
其中数值关系谓词:等于(EQUAL)、小于(LESS_THAN)、小于等于(LESS_THAN_OR_EQUAL)、大于(GREATER_THAN)、大于等于(GREATER_THAN_OR_EQUAL)、不等于(NOT_EQUAL)、非(NOT);
空间关系谓词:实现符合OGC标准的空间要素规范空间关系,包括但不限于:空间包含(ST_Contains)、空间覆盖(ST_Covers)、空间交叉(ST_Crosses)、空间不相交(ST_Disjoint)、空间不相等(ST_Equals)、空间交集(ST_Intersects)、空间重叠(ST_Overlaps)、空间九交模型(ST_Relate)、空间相触(ST_Touches)、空间被包含(ST_Within);
在所述步骤S16中先将结构化查询SQL语法转换为通用查询语法CQL,采用通用查询语法CQL(Common Query Language)查询语法,所述结构化查询SQL语法中涉及的数据类型,除了Presto提供的基础数据类型,还支持所述步骤S14中的时空数据类型;将结构化查询SQL语法转换为通用查询语法CQL具体步骤为:
S161:使用结构化查询SQL语法解析器和逻辑优化器把查询谓词进行下推,在查询过滤中提取出附加谓词列表;所述查询谓词包含查询的列和条件值,分别放入指定的数据结构中;
S162:若查询谓词是关系表达式,则利用lambda表达式中的映射和归集方法把关系表达式提取出来;例如把里面如果是>,< 等进行提取;然后生成通用查询语法CQL的数据过滤Filter数据格式;
S163:若查询谓词是函数表达式,则提取函数名和函数的入参;在处理入参数据类型时,若入参数据类型为时空数据类型,则把时空数据子类型转换为时空数据父类型,例如:点(Point)类型需要转为父类型(Geometry),然后生成通用查询语法CQL的数据过滤Filter数据格式;
S164:根据查询关系表达式或函数表达式中的占位符,比如:col = ?;获取对应的数据,并遍历所有占位符集,在条件值列表对象集合中获取常量值进行填充,填充后的表达式再次构建通用查询语法CQL的条件过滤(Filter)对象;
S165:检查获取的时空数据中是否存在有效通用查询语法CQL的Filter对象;若不存在,则补充全表扫描语句;然后通过geotools工具包通用查询语法CQL的条件过滤(Filter)进行执行,最终从Geomesa数据源获取时空数据集;
S2:采用Geomesa作为时空数据处理中间件,实现分布式计算系统面向海量时空数据查询与分析;
所述步骤S2中先将步骤S1中创建的自定义的时空数据源连接器的代码编译为二进制jar包,再以Presto插件包的方式部署在plugin目录中,且在Presto插件包的配置目录中,新增自定义的时空数据源连接器的catalog属性文件;所述catalog属性文件中包括:Hbase服务连接地址、自定义时空数据源的catalog类型、schema名称、用户、密码和性能优化相关的配置;再在系统配置文件中设置时空数据源的连接参数,从而自动完成对分布式SQL引擎Presto的扩展,使之对时空数据源的支持;
S3:在Presto客户端和/或服务端通过数据类型扩展新增时空数据类型,融合多种数据关联查询,并在JDBC协议接口中对时空类型数据进行解析,完成跨多种数据的时空数据的处理。基于Presto已有对多种数据源联合查询的支持,进一步融合新增对海量时空数据源的联合查询,不仅支持对多种数据源的属性关联查询也支持多种数据源的空间关系联合查询。实现时空数据源与其它多种传统数据源联合结果样例图如图3所示,目前版本支持20多种数据源,几乎能覆盖所有常见情况,Elasticsearch、Hive、JMX、Kafka、Kudu、LocalFile、Memory、MongoDB、MySQL、Redis、Geomesa(基于Hbase存储)等等。
该基于Presto扩展的时空大数据SQL引擎的实现方法的装置是基于Presto框架实现的一种自定义写入和查询Hbase海量时空数据的装置,具体包括创建模块,打包模块和调用模块;其中,创建模块中,通过继承和重定义Presto开放服务发现机制的SPI相关接口,实现时空数据的写入、查询、元数据设置,创建一个能够查询和写入Hbase海量时空信息的数据源;打包模块中,将创建模块生成的一个Hbase海量时空信息的数据源所实现的代码发布为具体的二进制jar包;调用模块中,任何需要多种数据源联合查询并且需要对时空数据处理的进行查询和分析的场景,只需要将打包模块生成的jar包放置在Presto安装环境下的plugin目录中,并配置进行参数配置;就可以支持对海量时空数据进行存储、写入、查询和分析。
对于本领域的普通技术人员而言,具体实施例只是对本发明进行了示例性描述,显然本发明具体实现并不受上述方式的限制,只要采用了本发明的方法构思和技术方案进行的各种非实质性的改进,或未经改进将本发明的构思和技术方案直接应用于其它场合的,均在本发明的保护范围之内。
Claims (6)
1.一种基于Presto扩展的时空大数据SQL引擎的实现方法,其特征在于,具体包括以下步骤:
S1:创建自定义的时空数据源处理连接器,对时空数据的存储和时空索引的管理;
S2:采用Geomesa作为时空数据处理中间件,进行数据的关联、聚合排序、过滤、全量扫描,实现分布式计算系统面向海量时空数据查询与分析;
S3:在Presto客户端和/或服务端通过数据类型扩展新增时空数据类型,融合多种数据关联查询,并在JDBC协议接口中对时空类型数据进行解析,完成跨多种数据的时空数据处理;
所述步骤S1中通过继承和重定义Presto服务发现机制SPI接口的相关接口和种类,创建自定义的时空数据源处理连接器,具体步骤为:
S11实现扩展时空数据源插件接口类:首先向Presto中注册新的插件名称、扩展的时空数据类型和新插件实例的入口主类;
S12实现扩展时空数据源的入口接口类:进行新插件的配置管理、时空数据源连接实例管理、时空数据的获取与写入管理以及时空数据源并行分割管理;
S13实现扩展时空数据源的元信息接口类:对时空数据源的数据库对象集合schema管理,包括时空数据表结构信息获取、表结构的创建、表结构的删除、表字段新增和表字段修改和更新;
S14实现扩展时空数据类型的接口类:新增对时空数据类型的支持;扩展自定义函数接口类,新增对时空数据的处理函数;
S15实现扩展时空数据源连接器:新增对时空数据存储进行连接管理,并实现时空数据的行数据指针功能、数据持久化功能、时空数据的获取和写入功能;S16实现执行计划优化器接口类:通过新增结构化查询SQL优化器的规则,优化结构化查询SQL的物理执行计划,实现对时空数据查询性能优化;
所述步骤S1中还包含插件参数的配置,配置参数为:插件名称、时空数据源存储在Hbase中的连接地址、Hbase安全认证用户名、Hbase安全认证密码和Geomesa索引优化配置;部署Hbase集群作为时空数据源的存储,并在Hbase系统目录中对Geomesa时空处理工具包进行配置,启动Hbase集群服务;实现对时空数据的写入、查询和元数据设置,通过本发明的结构化查询SQL引擎创建查询和写入Hbase海量时空信息的数据源;
所述步骤S2中先将步骤S1中创建的自定义的时空数据源连接器的代码编译为二进制jar包,再以Presto插件包的方式部署在插件目录中,且在Presto插件包的配置目录中,新增自定义的时空数据源连接器的目录属性文件;所述目录属性文件中包括:Hbase服务连接地址、自定义时空数据源的目录类型、数据库对象集合名称、用户、密码和性能优化相关的配置;再在系统配置文件中设置时空数据源的连接参数,从而自动完成对分布式SQL引擎Presto的扩展,使之对时空数据源的支持;
在所述步骤S16中先将结构化查询SQL语法转换为通用查询语法CQL,采用通用查询语法CQL方式将结构化查询SQL语法转换为通用查询语法CQL的具体步骤为:
S161:使用结构化查询SQL语法解析器和逻辑优化器把查询谓词进行下推,在查询过滤中提取出附加谓词列表;所述查询谓词包含查询的列和条件值,分别放入指定的数据结构中;
S162:若查询谓词是关系表达式,则利用lambda表达式中的映射和归集方法把关系表达式提取出来;然后生成通用查询语法CQL的数据过滤对象;
S163:若查询谓词是函数表达式,则提取函数名和函数的入参;在处理入参数据类型时,若入参数据类型为时空数据类型,则把时空数据子类型转换为时空数据父类型,然后生成通用查询语法CQL的数据过滤数据格式;
S164:根据查询关系表达式或函数表达式中的占位符,获取对应的数据,并遍历所有占位符集,在条件值列表对象集合中获取常量值进行填充,填充后的表达式再次构建通用查询语法CQL的条件过滤对象;
S165:检查获取的时空数据中是否存在有效通用查询语法CQL的条件过滤;若不存在,则补充全表扫描语句;然后通过geotools工具包将通用查询语法CQL语法的条件过滤进行执行,最终从Geomesa数据源获取时空数据集。
2.根据权利要求1所述的基于Presto扩展的时空大数据SQL引擎的实现方法,其特征在于,在所述步骤S13中实现扩展时空数据源的元信息接口类是基于Presto具有的目录、数据库对象集合和数据库表的三层数据管理结构接口,通过对应的元数据接口实现对时空数据库的表信息、数据量统计和数据存储位置信息的获取;从而在结构化查询SQL语法上能够完整获取时空数据表结构和索引情况;其中目录对应新增的时空数据源,数据库对象集合对应时空数据源中的一个数据库,数据库表对应数据库中的一个表,该表中的每一行是多列数据,每一列的数据类型是基本数据类型或OGC规范的时空数据类型。
3.根据权利要求2所述的基于Presto扩展的时空大数据SQL引擎的实现方法,其特征在于,在所述步骤S14实现扩展新的时空数据类型接口类中扩展的时空数据类型以及基于JDBC协议接口扩展的时空数据类型均包括:全局唯一标识符类型、平面空间类型、点类型、多点类型、线类型、多线类型、面类型、多面类型和平面空间数据集合;所述时空数据类型均支持序列化与反序列化。
4.根据权利要求3所述的基于Presto扩展的时空大数据SQL引擎的实现方法,其特征在于,在所述步骤S15中基于Presto的数据写入接口实现时空数据写入操作,把时空数据通过JDBC接口的方式写入Geomesa数据存储中,实现对时空数据的存储。
5.根据权利要求4所述的基于Presto扩展的时空大数据SQL引擎的实现方法,其特征在于,所述步骤S16中实现执行计划优化器接口类的结构化查询SQL优化器包括:列裁剪、表达式折叠和谓词下推,所述列裁剪是通过对结构化查询SQL语句经过语法解析后得到一棵语法树,之后对语法树自顶向下进行遍历;而语法树的某个节点需要用到的列则为该节点需要用到的列加上该语法树的父节点所需要用到的列;所述表达式折叠是指在结构化查询SQL语句中,当存在多个数值类型变量进行计算且能直接计算得出结果时,则由常量直接替换变量;再通过结构化查询SQL优化器的接口进行向下传播,使表达式计算更靠近数据源;所述谓词下推即为返回值是true或者false的函数。
6.根据权利要求5所述的基于Presto扩展的时空大数据SQL引擎的实现方法,其特征在于,所述步骤S16中数值类型包括:基本数值类型;所述基本数值类型包括大整型、整型、短整型、小整型和双精度整型;数值类型变量进行计算的运行方式包括:加、减、乘、除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310782319.3A CN116521142B (zh) | 2023-06-29 | 2023-06-29 | 基于Presto扩展的时空大数据SQL引擎的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310782319.3A CN116521142B (zh) | 2023-06-29 | 2023-06-29 | 基于Presto扩展的时空大数据SQL引擎的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116521142A CN116521142A (zh) | 2023-08-01 |
CN116521142B true CN116521142B (zh) | 2023-10-03 |
Family
ID=87399773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310782319.3A Active CN116521142B (zh) | 2023-06-29 | 2023-06-29 | 基于Presto扩展的时空大数据SQL引擎的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116521142B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108052542A (zh) * | 2017-11-22 | 2018-05-18 | 链家网(北京)科技有限公司 | 一种基于presto的数据的多维数据的分析方法 |
US20190325051A1 (en) * | 2018-04-19 | 2019-10-24 | Risk Management Solutions, Inc. | Data Storage System for Providing Low Latency Search Query Responses |
CN111078961A (zh) * | 2019-12-24 | 2020-04-28 | 用友网络科技股份有限公司 | 多数据源查询驱动系统、方法、装置和存储介质 |
CN114218218A (zh) * | 2021-12-16 | 2022-03-22 | 新奥数能科技有限公司 | 基于数据仓库的数据处理方法、装置、设备及存储介质 |
CN114625764A (zh) * | 2022-02-23 | 2022-06-14 | 南方电网数字电网研究院有限公司 | 基于混合引擎的大数据处理系统与方法 |
-
2023
- 2023-06-29 CN CN202310782319.3A patent/CN116521142B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108052542A (zh) * | 2017-11-22 | 2018-05-18 | 链家网(北京)科技有限公司 | 一种基于presto的数据的多维数据的分析方法 |
US20190325051A1 (en) * | 2018-04-19 | 2019-10-24 | Risk Management Solutions, Inc. | Data Storage System for Providing Low Latency Search Query Responses |
CN111078961A (zh) * | 2019-12-24 | 2020-04-28 | 用友网络科技股份有限公司 | 多数据源查询驱动系统、方法、装置和存储介质 |
CN114218218A (zh) * | 2021-12-16 | 2022-03-22 | 新奥数能科技有限公司 | 基于数据仓库的数据处理方法、装置、设备及存储介质 |
CN114625764A (zh) * | 2022-02-23 | 2022-06-14 | 南方电网数字电网研究院有限公司 | 基于混合引擎的大数据处理系统与方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116521142A (zh) | 2023-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11907247B2 (en) | Metadata hub for metadata models of database objects | |
CN105989150B (zh) | 一种基于大数据环境的数据查询方法及装置 | |
Chung et al. | JackHare: a framework for SQL to NoSQL translation using MapReduce | |
US11500868B2 (en) | Efficient identification of vertices and edges for graph indexes in an RDBMS | |
CA2519001A1 (en) | System and method of data agnostic business intelligence query | |
WO2012082562A1 (en) | Extensible rdf databases | |
CN114461603A (zh) | 多源异构数据融合方法及装置 | |
CN103246704A (zh) | 一种基于通用数据结构描述的实体与关系数据的映射方法 | |
EP4155965A1 (en) | System and method for facilitating metadata identification and import | |
US20230418808A1 (en) | Maintaining data separation for data consolidated from multiple data artifact instances | |
US20230418680A1 (en) | Selective landscape element grouping facilitating landscape element consolidation or content installation | |
CN116795859A (zh) | 数据分析方法、装置、计算机设备和存储介质 | |
US20180060404A1 (en) | Schema abstraction in data ecosystems | |
CN116521142B (zh) | 基于Presto扩展的时空大数据SQL引擎的实现方法 | |
CN114490724B (zh) | 处理数据库查询语句的方法和装置 | |
US20230418803A1 (en) | Techniques for integrating data for multple instances of a data artifact | |
Ahamed et al. | Data integration-challenges, techniques and future directions: a comprehensive study | |
KR101820108B1 (ko) | 캐시 테이블 통합 기반 2단계 쿼리 처리 시스템 | |
CN114385145A (zh) | 一种Web系统后端架构设计方法及计算机设备 | |
US11449504B2 (en) | Database partition pruning using dependency graph | |
US20200311067A1 (en) | Database partition pruning using dependency graph | |
CN110569243B (zh) | 一种数据查询方法、数据查询插件和数据查询服务器 | |
US11481392B2 (en) | Transformation reconstruction for optimized database query | |
US20210124799A1 (en) | Generation and application of object notation deltas | |
EP4170516A1 (en) | Metadata elements with persistent identifiers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Li Liangchao Inventor after: Feng Linyao Inventor after: Feng Jianliang Inventor after: Wang Honghua Inventor before: Li Liangchao Inventor before: Feng Linyao Inventor before: Feng Jianliang Inventor before: Wang Honghua |
|
GR01 | Patent grant | ||
GR01 | Patent grant |