首页> 中国专利> 时空数据引擎的使用方法、装置及Cassandra数据库系统

时空数据引擎的使用方法、装置及Cassandra数据库系统

摘要

本说明书实施例提供时空数据引擎的使用方法、装置及Cassandra数据库系统,其中所述时空数据引擎的使用方法包括:在Cassandra CQL的语法要素文件中添加针对时空数据的语法要素的定义;在Cassandra节点接收到包含所述语法要素的操作命令时,利用所述Cassandra CQL的语法要素文件中所述语法要素的定义,解析并对时空数据执行所述操作命令。

著录项

  • 公开/公告号CN113297199A

    专利类型发明专利

  • 公开/公告日2021-08-24

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN202010591129.X

  • 发明设计人 肖斐;谢炯;

    申请日2020-06-24

  • 分类号G06F16/22(20190101);G06F16/242(20190101);G06F16/2455(20190101);

  • 代理机构11637 北京智信禾专利代理有限公司;

  • 代理人赵杰

  • 地址 英属开曼群岛大开曼资本大厦一座四层847号邮箱

  • 入库时间 2023-06-19 12:19:35

说明书

技术领域

本说明书实施例涉及数据库技术领域,特别涉及一种时空数据引擎的使用方法。本说明书一个或者多个实施例同时涉及一种时空数据引擎的使用装置及Cassandra数据库系统,一种计算设备,以及一种计算机可读存储介质。

背景技术

Cassandra,是目前使用较为广泛的NoSQL数据库系统。Cassandra对外统一使用CQL(Cassandra Query Language)方式进行数据操作。

Cassandra管理时空数据,一般采用类似SDE的设计方案,即在Cassandra数据库与客户端应用程序之间部署一层时空数据引擎中间件,由时空数据引擎中间件实现时空数据类型与Cassandra数据类型之间的转换,以便进行时空数据操作。

但是,这种中间件方式在大数据量情况下会对性能产生一定影响。

发明内容

有鉴于此,本说明书施例提供了一种时空数据引擎的使用方法。本说明书一个或者多个实施例同时涉及一种时空数据引擎的使用装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。

根据本说明书实施例的第一方面,提供了一种时空数据引擎的使用方法,包括:在Cassandra CQL的语法要素文件中添加针对时空数据的语法要素的定义;在Cassandra节点接收到包含所述语法要素的操作命令时,利用所述Cassandra CQL的语法要素文件中所述语法要素的定义,解析并对时空数据执行所述操作命令。

可选地,所述在Cassandra CQL的语法要素文件中添加针对时空数据的语法要素的定义包括:在所述Cassandra CQL的语法要素文件中添加针对时空数据的字段类型的定义,以及,添加用于创建时空索引的语句表达式的语法描述。所述在Cassandra节点接收到包含所述语法要素的操作命令时,利用所述Cassandra CQL的语法要素文件中所述语法要素的定义,解析并对时空数据执行所述操作命令包括:在Cassandra节点接收到对时空数据类型的目标字段创建时空索引的语句表达式时,利用所述Cassandra CQL的语法要素文件中所述语句表达式的语法描述,解析并执行所述语句表达式,以创建出基于所述目标字段的二级索引。

可选地,所述语句表达式,用于在被执行时基于空间填充曲线技术创建出基于所述目标字段的二级索引。

可选地,所述在Cassandra CQL的语法要素文件中添加针对时空数据的语法要素的定义包括:在所述Cassandra CQL的语法要素文件中添加针对时空数据的字段类型的定义,以及,添加对时空算子的语法描述。其中,所述时空算子,是通过所述Cassandra的用户自定义函数接口提供的,且用于按预设方法操作时空数据。所述在Cassandra节点接收到包含所述语法要素的操作命令时,利用所述Cassandra CQL的语法要素文件中所述语法要素的定义,解析并对时空数据执行所述操作命令包括:在Cassandra节点接收到对时空数据使用时空算子的操作命令时,利用所述Cassandra CQL的语法要素文件中时空数据的字段类型的定义以及所述时空算子的语法描述,解析并执行所述操作命令中指定的时空算子,使所述时空算子对所述时空数据按所述预设方法进行操作。

可选地,所述操作命令为包含时空查询条件的操作命令;所述时空算子,用于获取所述时空数据的二级索引,根据所述操作命令包含的时空查询条件以及所述时空数据的二级索引进行过滤。

可选地,还包括:在接收到包含时空查询条件的操作命令时,通过Cassandra的索引管理模块匹配出用于所述操作命令的二级索引;按照所述操作命令指定的PartitionKey,将所述操作命令指定的时空查询条件分配到对应的Cassandra节点,以触发所述对应的Cassandra节点使用本地的、用于所述操作命令的二级索引,解析并执行所述时空查询条件对应的查询;接收所述对应的Cassandra节点返回的查询结果。

可选地,所述在Cassandra CQL的语法要素文件中添加针对时空数据的语法要素的定义包括:在所述Cassandra CQL的语法要素文件中添加针对时空数据的字段类型的定义。所述在Cassandra节点接收到包含所述语法要素的操作命令时,利用所述CassandraCQL的语法要素文件中所述语法要素的定义,解析并对时空数据执行所述操作命令包括:在Cassandra节点接收到针对时空数据的创建表格命令时,利用所述Cassandra CQL的语法要素文件中针对时空数据的字段类型的定义,解析并执行所述创建表格命令,以创建出带有时空数据的字段类型的表格;或者,在Cassandra节点接收到针对时空数据的写入数据命令时,利用所述Cassandra CQL的语法要素文件中针对时空数据的字段类型的定义,解析并执行所述写入数据命令,以在所述写入数据命令指定的字段类型的字段中插入所述写入数据命令指定的时空数据。

根据本说明书实施例的第二方面,提供了一种时空数据引擎的使用装置,包括:语法定义添加模块,被配置为在Cassandra CQL的语法要素文件中添加针对时空数据的语法要素的定义。时空命令执行模块,被配置为在Cassandra节点接收到包含所述语法要素的操作命令时,利用所述Cassandra CQL的语法要素文件中所述语法要素的定义,解析并对时空数据执行所述操作命令。

可选地,所述语法定义添加模块,被配置为在所述Cassandra CQL的语法要素文件中添加针对时空数据的字段类型的定义,以及,添加用于创建时空索引的语句表达式的语法描述。所述时空命令执行模块,被配置为在Cassandra节点接收到对时空数据类型的目标字段创建时空索引的语句表达式时,利用所述Cassandra CQL的语法要素文件中所述语句表达式的语法描述,解析并执行所述语句表达式,以创建出基于所述目标字段的二级索引。

可选地,所述语法定义添加模块,被配置为在所述Cassandra CQL的语法要素文件中添加针对时空数据的字段类型的定义,以及,添加对时空算子的语法描述。其中,所述时空算子,是通过所述Cassandra的用户自定义函数接口提供的,且用于按预设方法操作时空数据。所述时空命令执行模块,被配置为在Cassandra节点接收到对时空数据使用时空算子的操作命令时,利用所述Cassandra CQL的语法要素文件中时空数据的字段类型的定义以及所述时空算子的语法描述,解析并执行所述操作命令中指定的时空算子,使所述时空算子对所述时空数据按所述预设方法进行操作。

可选地,所述操作命令为包含时空查询条件的操作命令;所述时空算子,用于获取所述时空数据的二级索引,根据所述操作命令包含的时空查询条件以及所述时空数据的二级索引进行过滤。

可选地,还包括:索引匹配模块,被配置为在接收到包含时空查询条件的操作命令时,通过Cassandra的索引管理模块匹配出用于所述操作命令的二级索引。节点分配模块,被配置为按照所述操作命令指定的PartitionKey,将所述操作命令指定的时空查询条件分配到对应的Cassandra节点,以触发所述对应的Cassandra节点使用本地的、用于所述操作命令的二级索引,解析并执行所述时空查询条件对应的查询。接收模块,被配置为接收所述对应的Cassandra节点返回的查询结果。

可选地,所述语法定义添加模块,被配置为在所述Cassandra CQL的语法要素文件中添加针对时空数据的字段类型的定义。所述时空命令执行模块,被配置为在Cassandra节点接收到针对时空数据的创建表格命令时,利用所述Cassandra CQL的语法要素文件中针对时空数据的字段类型的定义,解析并执行所述创建表格命令,以创建出带有时空数据的字段类型的表格。或者,在Cassandra节点接收到针对时空数据的写入数据命令时,利用所述Cassandra CQL的语法要素文件中针对时空数据的字段类型的定义,解析并执行所述写入数据命令,以在所述写入数据命令指定的字段类型的字段中插入所述写入数据命令指定的时空数据。

根据本说明书实施例的第三方面,提供了一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:在Cassandra CQL的语法要素文件中添加针对时空数据的语法要素的定义;在Cassandra节点接收到包含所述语法要素的操作命令时,利用所述Cassandra CQL的语法要素文件中所述语法要素的定义,解析并对时空数据执行所述操作命令。

根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现本说明书任意实施例所述时空数据引擎的使用方法的步骤。

根据本说明书实施例的第五方面,提供了一种Cassandra数据库系统,包括:多个Cassandra节点;其中所述Cassandra节点应用了如本说明书任意一实施例所述时空数据引擎的使用方法。

本说明书一个实施例提供了一种时空数据引擎的使用方法,由于该方法在Cassandra CQL的语法要素文件中添加了针对时空数据的语法要素的定义,从而在Cassandra节点接收到包含所述语法要素的操作命令时,可以根据所述Cassandra CQL的语法要素文件中针对时空数据的语法要素,解析并对时空数据执行所述操作命令。由于根据该方法所实现的Cassandra插件可以与Cassandra一起发布,以工具包的形式部署在Cassandra系统目录下,从内核层面增加对时空数据的支持,对于用户来说,直接根据Cassandra提供的CQL就可以完成对时空数据的管理,还可以充分利用Cassandra内核层面原生的优化能力、稳定性与监控能力,充分提高了对时空数据的管理性能。

附图说明

图1是本说明书一个实施例提供的一种时空数据引擎的使用方法的流程图;

图2是本说明书一个实施例提供的Cassandra系统架构示意图;

图3是本说明书一个实施例提供的Cassandra系统查询过程示意图;

图4是本说明书一个实施例提供的一种时空数据引擎的使用装置的结构示意图;

图5是本说明书另一个实施例提供的一种时空数据引擎的使用装置的结构示意图;

图6是本说明书一个实施例提供的一种计算设备的结构框图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。

在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

在本说明书中,提供了一种时空数据引擎的使用方法,本说明书同时涉及一种时空数据引擎的使用装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。

图1示出了根据本说明书一个实施例提供的一种时空数据引擎的使用方法的流程图,包括步骤102至步骤104。

步骤102:在Cassandra CQL的语法要素文件中添加针对时空数据的语法要素的定义。

例如,可以在Cassandra CQL的语法要素文件中增加时空数据类型如点、线、面等来表示时空数据。Cassandra CQL基于Antlr开发,CQL的语法要素可以在Antlr文件(*.g,即以g为后缀的文件)中定义。例如,可以在Cassandra的Parser.g文件中的native_type集合中增加针对时空数据的字段类型如“Geometry”字段类型,在CQL3Type中增加自定义的针对时空数据的字段类型如“GeometryUDT”类型,提供serialize/deserialize接口实现,这样就可以在CQL中通过字段类型的关键字如“Geometry”来定义时空数据的类型了。UDT:UserDefined Type,用户自定义数据类型。需要说明的是,上述示例仅用于对时空数据的语法要素进行示意性说明,在本说明书实施例中,可以依据应用场景需要来确定添加针对时空数据的哪些语法要素的定义,本说明书实施例提供的方法对此并不进行限制。

步骤104:在Cassandra节点接收到包含所述语法要素的操作命令时,利用所述Cassandra CQL的语法要素文件中所述语法要素的定义,解析并对时空数据执行所述操作命令。

可以理解的是,语法要素文件Antrl(ANother Tool for Language Recognition,语言识别的一个工具)是一种语言工具,它提供了一个框架,可以根据语法要素文件中的定义生成该语法要素所对应的语言识别器、编译器和解释器。因此,根据所述Cassandra CQL的语法要素文件中针对时空数据的语法要素的定义,能够解析并执行包含针对时空数据的语法要素的操作命令。

可见,由于该方法在Cassandra CQL的语法要素文件中添加了针对时空数据的语法要素的定义,从而在Cassandra节点接收到包含所述语法要素的操作命令时,可以根据所述Cassandra CQL的语法要素文件中针对时空数据的语法要素,解析并对时空数据执行所述操作命令。由于根据该方法所实现的Cassandra插件可以与Cassandra一起发布,以工具包的形式部署在Cassandra系统目录下,实现可插拔式部署,不需要客户下载客户端工具,从内核层面增加对时空数据类型的支持,实现了Cassandra的时空引擎内核。对于用户来说,直接根据Cassandra提供的CQL就可以完成对时空数据的管理,还可以充分利用Cassandra内核层面原生的优化能力、稳定性与监控能力,充分提高了对时空数据的管理性能。

下面,结合一些针对时空数据的语法要素的定义,对本说明书实施例提供的方法进行详细说明。

本说明书一个或多个实施例中,可以在所述Cassandra CQL的语法要素文件中添加针对时空数据的字段类型的定义,以及,添加用于创建时空索引的语句表达式的语法描述。从而可以在Cassandra节点接收到对时空数据类型的目标字段创建时空索引的语句表达式时,利用所述Cassandra CQL的语法要素文件中所述语句表达式的语法描述,解析并执行所述语句表达式,以创建出基于所述目标字段的二级索引也即时空索引。

二级索引也叫做辅助索引,是指在主索引(PrimaryKey,主键,用于唯一标识数据库中一条记录,也叫行键rowkey)之外,对其他字段创建的索引,可以用于提供辅助查询能力。Cassandra通过行键(rowkey或PrimaryKey)来唯一标识一条记录。Rowkey由PartitionKey与Clustering Key两部分构成。在Cassandra中,可以通过二级索引(Secondary Index)机制来辅助rowkey实现数据查询。

具体地,如图2所示的Cassandra系统架构示意图,根据该实施例提供的方法实现的Cassandra时空引擎内核的最终产品形态可以作为Cassandra的时空索引插件,与Cassandra一起发布,整个工程以插件的形式部署在Cassandra系统目录下,用户不需要下载任何中间件,而是直接在客户端App向Cassandra集群节点发送带有PrimaryKey、Secondary Index的CQL语句,直接通过Cassandra端的CQL就可以完成对时空数据的管理。由于基于时空索引的查询过程直接在Cassandra的Server端执行,不必依赖中间件系统,所以I/O的消耗低,此外还可以充分利用Cassandra内核层面原生的查询优化能力,从而提高效率。而且,时空索引与Cassandra深度融合,可充分利用Cassandra数据库的稳定性与系统监控功能,提高了系统的安全与稳定性。

在该实施例中,例如可以在语法要素文件中添加“Geometry”字段类型的定义,添加“CREATE CUSTOM INDEX”语句表达式的定义。从而利用该语句“CREATE CUSTOM INDEX”基于针对时空数据的字段类型“Geometry”创建时空索引。在该语句表达式中,可以基于JSON格式语句定义创建索引所需要的各项参数,包括目标字段、索引名称、索引类型等。如,对“Geometry”类型的字段“the_geom”创建时空索引的CQL语句表达式“CREATE CUSTOMINDEX”如下:

通过上述语句表达式示例可见,该实施例基于Cassandra的Index类扩展了二级索引如“ganos_geom_index”。“ganos_geom_index”可以被Cassandra自动发现并注册。创建过程中索引的相关参数通过JSON来描述。该JSON描述提交到Cassandra后会被解析为Schema对象,用于创建具体的索引实例。由于该实施例提供了创建针对时空数据的字段类型的二级索引的语句表达式,使得Cassandra时空内核允许用户按照需求自由设计表模式,即针对目标字段创建时空索引,也可根据需要随时删除时空索引,更加灵活高效。需要说明的是,上述用于创建时空索引的语句表达式“CREATE CUSTOM INDEX”的示例仅用于对本说明书实施例提供的方法进行示意性说明,并不构成对所述方法的限制。

其中,所述语句表达式,可以用于在被执行时基于空间填充曲线技术创建出基于所述目标字段的二级索引。空间填充曲线技术是指通过一维曲线去包含整个二维甚至多维空间的一种函数曲线,它可以通过一维曲线的连续性来表示多维空间的上的相邻特性,从而将复杂的空间关系判定转换为一维空间中简单的数值比较,提高检索效率。本说明书实施例所述二级索引也即时空索引就是利用了空间填充曲线的这一特性,将数据表中的时空数据转换为对应的空间填充曲线上的数值,并通过该数值创建索引文件。任何针对时空数据的查询都可以转换为空间填充曲线上的数值大小比较的问题。空间填充曲线例如包括Z曲线、Hilbert等,以及如Uber H3等更高级的空间填充曲线。在创建了二级索引后,用户提交查询请求时,数据库可以根据用户指定的二级索引名称获取对应的二级索引并进行时空过滤。

本说明书一个或多个实施例中,可以在所述Cassandra CQL的语法要素文件中添加针对时空数据的字段类型的定义,以及,添加对时空算子的语法描述。其中,所述时空算子,是通过所述Cassandra的用户自定义函数接口提供的,且用于按预设方法操作时空数据。从而,在Cassandra节点接收到对时空数据使用时空算子的操作命令时,利用所述Cassandra CQL的语法要素文件中时空数据的字段类型的定义以及所述时空算子的语法描述,解析并执行所述操作命令中指定的时空算子,使所述时空算子对所述时空数据按所述预设方法进行操作。

例如,由于Cassandra提供了UDFunction接口来允许用户设计自定义的函数。UDF:User Defined Function,用户自定义函数,属于数据库算子。因此,本说明书实施例可以基于UDFunction提供一个或多个按不同预设方法操作时空数据的时空算子,并将时空算子注册在Cassandra中。在Cassandra的Parser.g文件中添加对时空算子的语法描述,例如包括函数名称、允许参数类型、返回参数类型等。算子,是指在数据库端运行的函数,可以对不同字段类型进行运算。

由于在该实施例中,在Cassandra CQL中增加了用于按预设方法操作时空数据的时空算子,相当于在Cassandra CQL基础之上,提供了一套针对时空数据操作的UDT/UDF系统,从而用户不必依赖第三方开源项目即可直接对时空数据进行操作,即在CQL中通过指定时空算子名称来直接对时空数据的字段进行操作,极大提高了对时空数据操作上的支持,提高查询效率,提高对时空数据的管理性能。

结合上述通过Cassandra提供的Index类实现了时空数据的二级索引的实施方式,本说明书一个或多个实施例中,所述操作命令为包含时空查询条件的操作命令;所述时空算子,用于获取所述时空数据的二级索引,根据所述操作命令包含的时空查询条件以及所述时空数据的二级索引进行过滤。

可以理解的是,在Cassandra中,实现了Index接口的索引类型可以被Cassnadra自动发现并注册到IndexManager索引管理模块。当用户在CQL中指定二级索引名称后,CustomQueryHandler可以提取二级索引的ID(如名称)并通过IndexManager加载对应的时空算子或需要的索引程序来进行查询。查询解析器(CustomQueryHandler)主要负责解析用户提交的CQL查询语句,提取查询条件并采用对应的二级索引进行数据的过滤。

例如,根据上述实施例通过CQL进行时空查询,操作命令中的时空查询条件的各项参数可以以JSON方式定义。如下“SELECT”查询操作命令中,通过时空算子“ST_CONTAINS”查找位于目标范围(如下表示为“Polygon”对象)内的所有数据,并按照date字段进行排序如下:

通过上述查询操作命令可见,本说明书实施例在Cassandra本身提供的解析器基础之上,增加了时空算子对时空数据的字段进行二级索引的检索支持,使Cassandra内置的查询解析器得以扩展,当用户指定时间或空间数据类型查询时,Cassandra可以自动调用时空算子进行数据过滤,有效提高了对时空数据的管理性能。需要说明的是,上述用于查询操作命令的示例仅用于对本说明书实施例提供的方法进行示意性说明,并不构成对所述方法的限制。

本说明书一个或多个实施例中,结合Cassandra系统架构与查询过程,还可以在接收到包含时空查询条件的操作命令时,通过Cassandra的索引管理模块匹配出用于所述操作命令的二级索引;按照所述操作命令指定的PartitionKey,将所述操作命令指定的时空查询条件分配到对应的Cassandra节点,以触发所述对应的Cassandra节点使用本地的、用于所述操作命令的二级索引,解析并执行所述时空查询条件对应的查询;接收所述对应的Cassandra节点返回的查询结果。

例如,对应的Cassandra节点可以利用Cassandra CQL的语法要素文件中针对时空数据的字段类型的定义以及所述时空算子的语法描述,解析并执行所述操作命令中指定的时空算子,使所述时空算子使用上述匹配到的二级索引以及时空查询条件按预设方法进行查询。其中,按照PartitionKey对应到Cassandra节点是Cassandra的一种索引模式,具体通过一致性Hash实现,在此不再详细赘述。

在本说明书实施例中,还提供了一种Cassandra数据库系统,包括:多个Cassandra节点。其中所述Cassandra节点应用了如本说明书任意一个或多个实施例所述时空数据引擎的使用方法。例如,根据所述Cassandra数据库系统可以实现如图3所示的查询过程。

下面,再结合图3所示Cassandra系统查询过程示意图,对上述实施例提供的方法实现的Cassandra时空引擎内核查询的流程进行详细说明。如图3所示,查询的流程可以包括:

步骤302:用户提交包含时空查询条件的CQL语句到任意的Cassandra节点,此时该Cassandra节点将作为主节点负责整个查询的生命周期。

步骤304:该Cassandra节点根据用户提交的时空查询条件,通过IndexManager匹配到负责时空查询的Index对象。

步骤306:该Cassandra节点按照用户在CQL语句中指定的PartitionKey将时空查询条件分配到相应的Cassandra节点。

步骤308:相应的Cassandra节点根据时空查询条件,使用在步骤304匹配出的Index对象,使用本地Index对象进行行过滤,并将查询结果汇总到主节点并返回给客户端。

可见,在该实施例中,按照Cassandra的系统架构与查询过程进行时空查询,与Cassandra的索引管理模块深度融合,利用Cassandra内核层面原生的优化能力,充分提高了对时空数据的管理性能。

本说明书一个或多个实施例中,在所述Cassandra CQL的语法要素文件中添加针对时空数据的字段类型的定义。从而,可以在Cassandra节点接收到针对时空数据的创建表格命令时,利用所述Cassandra CQL的语法要素文件中针对时空数据的字段类型的定义,解析并执行所述创建表格命令,以创建出带有时空数据的字段类型的表格。或者,在Cassandra节点接收到针对时空数据的写入数据命令时,利用所述Cassandra CQL的语法要素文件中针对时空数据的字段类型的定义,解析并执行所述写入数据命令,以在所述写入数据命令指定的字段类型的字段中插入所述写入数据命令指定的时空数据。

例如,可以在语法要素文件中添加“Geometry”字段类型的定义。从而利用CQL的创建表格语句“CREATE TABLE”创建带有“Geometry”字段类型的字段“the_geom”的表格如下:

再例如,可以利用CQL的插入数据语句“INSERT”,在“Geometry”字段类型的字段“the_geom”中插入数据如下:

INSERT INTO users(name,gender,age,number,the_geom)VALUES('Joe','male',27,1001,'POINT(179.09,89.3)');

通过上述语句表达式示例可见,该实施例为Cassandra扩展了针对时空数据的字段类型,如“Geometry”,用户可以基于CQL对“Geometry”类型的字段进行建表以及插入数据等操作。对于用户来说,直接根据Cassandra提供的CQL就可以完成对时空数据的管理,还可以充分利用Cassandra内核层面原生的优化能力、稳定性与监控能力,充分提高了对时空数据的管理性能。需要说明的是,上述语句示例仅用于对本说明书实施例提供的方法进行示意性说明,并不构成对所述方法的限制。

与上述方法实施例相对应,本说明书还提供了时空数据引擎的使用装置实施例,图4示出了本说明书一个实施例提供的一种时空数据引擎的使用装置的结构示意图。如图4所示,该装置包括:语法定义添加模块402以及时空命令执行模块404。

该语法定义添加模块402,可以被配置为在Cassandra CQL的语法要素文件中添加针对时空数据的语法要素的定义。

该时空命令执行模块404,可以被配置为在Cassandra节点接收到包含所述语法要素的操作命令时,利用所述Cassandra CQL的语法要素文件中所述语法要素的定义,解析并对时空数据执行所述操作命令。

可见,由于该装置在Cassandra CQL的语法要素文件中添加了针对时空数据的语法要素的定义,从而在Cassandra节点接收到包含所述语法要素的操作命令时,可以根据所述Cassandra CQL的语法要素文件中针对时空数据的语法要素,解析并对时空数据执行所述操作命令。由于根据该装置所实现的Cassandra插件可以与Cassandra一起发布,以工具包的形式部署在Cassandra系统目录下,实现可插拔式部署,不需要客户下载客户端工具,从内核层面增加对时空数据类型的支持,实现了Cassandra的时空引擎内核。对于用户来说,直接根据Cassandra提供的CQL就可以完成对时空数据的管理,还可以充分利用Cassandra内核层面原生的优化能力、稳定性与监控能力,充分提高了对时空数据的管理性能。

本说明书一个或多个实施例中,所述语法定义添加模块402,可以被配置为在所述Cassandra CQL的语法要素文件中添加针对时空数据的字段类型的定义,以及,添加用于创建时空索引的语句表达式的语法描述。所述时空命令执行模块404,可以被配置为在Cassandra节点接收到对时空数据类型的目标字段创建时空索引的语句表达式时,利用所述Cassandra CQL的语法要素文件中所述语句表达式的语法描述,解析并执行所述语句表达式,以创建出基于所述目标字段的二级索引。

本说明书一个或多个实施例中,所述语法定义添加模块402,可以被配置为在所述Cassandra CQL的语法要素文件中添加针对时空数据的字段类型的定义,以及,添加对时空算子的语法描述。其中,所述时空算子,是通过所述Cassandra的用户自定义函数接口提供的,且用于按预设方法操作时空数据。所述时空命令执行模块404,可以被配置为在Cassandra节点接收到对时空数据使用时空算子的操作命令时,利用所述Cassandra CQL的语法要素文件中时空数据的字段类型的定义以及所述时空算子的语法描述,解析并执行所述操作命令中指定的时空算子,使所述时空算子对所述时空数据按所述预设方法进行操作。

本说明书一个或多个实施例中,所述操作命令为包含时空查询条件的操作命令;所述时空算子,用于获取所述时空数据的二级索引,根据所述操作命令包含的时空查询条件以及所述时空数据的二级索引进行过滤。

图5示出了本说明书另一个实施例提供的一种时空数据引擎的使用装置的结构示意图。如图5所示,该装置还可以包括:索引匹配模块406,可以被配置为在接收到包含时空查询条件的操作命令时,通过Cassandra的索引管理模块匹配出用于所述操作命令的二级索引。节点分配模块408,可以被配置为按照所述操作命令指定的PartitionKey,将所述操作命令指定的时空查询条件分配到对应的Cassandra节点,以触发所述对应的Cassandra节点使用本地的、用于所述操作命令的二级索引,解析并执行所述时空查询条件对应的查询。接收模块410,可以被配置为接收所述对应的Cassandra节点返回的查询结果。

本说明书一个或多个实施例中,所述语法定义添加模块402,可以被配置为在所述Cassandra CQL的语法要素文件中添加针对时空数据的字段类型的定义。所述时空命令执行模块404,可以被配置为在Cassandra节点接收到针对时空数据的创建表格命令时,利用所述Cassandra CQL的语法要素文件中针对时空数据的字段类型的定义,解析并执行所述创建表格命令,以创建出带有时空数据的字段类型的表格,或者,在Cassandra节点接收到针对时空数据的写入数据命令时,利用所述Cassandra CQL的语法要素文件中针对时空数据的字段类型的定义,解析并执行所述写入数据命令,以在所述写入数据命令指定的字段类型的字段中插入所述写入数据命令指定的时空数据。

上述为本实施例的一种时空数据引擎的使用装置的示意性方案。需要说明的是,该时空数据引擎的使用装置的技术方案与上述的时空数据引擎的使用方法的技术方案属于同一构思,时空数据引擎的使用装置的技术方案未详细描述的细节内容,均可以参见上述时空数据引擎的使用方法的技术方案的描述。

图6示出了根据本说明书一个实施例提供的一种计算设备600的结构框图。该计算设备600的部件包括但不限于存储器610和处理器620。处理器620与存储器610通过总线630相连接,数据库650用于保存数据。

计算设备600还包括接入设备640,接入设备640使得计算设备600能够经由一个或多个网络660通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备640可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。

在本说明书的一个实施例中,计算设备600的上述部件以及图6中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图6所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。

计算设备600可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备600还可以是移动式或静止式的服务器。

其中,处理器620用于执行如下计算机可执行指令:

在Cassandra CQL的语法要素文件中添加针对时空数据的语法要素的定义;

在Cassandra节点接收到包含所述语法要素的操作命令时,利用所述CassandraCQL的语法要素文件中所述语法要素的定义,解析并对时空数据执行所述操作命令。

上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的时空数据引擎的使用方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述时空数据引擎的使用方法的技术方案的描述。

本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:

在Cassandra CQL的语法要素文件中添加针对时空数据的语法要素的定义;

在Cassandra节点接收到包含所述语法要素的操作命令时,利用所述CassandraCQL的语法要素文件中所述语法要素的定义,解析并对时空数据执行所述操作命令。

上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的时空数据引擎的使用方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述时空数据引擎的使用方法的技术方案的描述。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号