CN113076334A - 数据查询方法、索引生成方法、装置及电子设备 - Google Patents
数据查询方法、索引生成方法、装置及电子设备 Download PDFInfo
- Publication number
- CN113076334A CN113076334A CN202010011631.9A CN202010011631A CN113076334A CN 113076334 A CN113076334 A CN 113076334A CN 202010011631 A CN202010011631 A CN 202010011631A CN 113076334 A CN113076334 A CN 113076334A
- Authority
- CN
- China
- Prior art keywords
- data
- dimensional
- index
- bitmap
- multidimensional data
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 89
- 238000005192 partition Methods 0.000 claims description 39
- 238000003860 storage Methods 0.000 claims description 25
- 238000012545 processing Methods 0.000 claims description 18
- 238000004891 communication Methods 0.000 claims description 15
- 238000007906 compression Methods 0.000 claims description 12
- 230000006835 compression Effects 0.000 claims description 12
- 238000013500 data storage Methods 0.000 claims description 9
- 238000000638 solvent extraction Methods 0.000 claims description 4
- 108091026890 Coding region Proteins 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims description 2
- 238000003672 processing method Methods 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 10
- 230000009467 reduction Effects 0.000 description 10
- 230000009466 transformation Effects 0.000 description 10
- 230000007547 defect Effects 0.000 description 5
- 238000003780 insertion Methods 0.000 description 5
- 230000037431 insertion Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000001983 electron spin resonance imaging Methods 0.000 description 2
- 238000011946 reduction process Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
Images
Classifications
-
- 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
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种数据查询方法、索引生成方法、装置及电子设备。其中,数据查询方法包括:获取用于查询多维数据的待查询信息,其中,所述待查询信息中包含有待查询的第一多维数据的信息;获取所述第一多维数据对应的第一一维编码,和预设的、存储有多维数据索引的位图索引,其中,所述多维数据索引根据第二多维数据对应的第二一维编码生成;根据所述位图索引,获取所述第一一维编码对应的位图块文件;根据获取的所述位图块文件,获取所述待查询信息所查询的第一多维数据。通过本发明实施例,使得检索效率更好。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种数据查询方法、索引生成方法、装置、电子设备及计算机存储介质。
背景技术
多维数据也被称为多维数据,通常指二维及以上的数据,例如,空间数据和/或时空数据。现有技术中,对多维数据的检索一般都是通过基于多维数据建立的空间索引进行的。
例如,现有技术中的一种传统数据库(如ESRI等),其是在存储层构建空间索引(如RTree或QuardTree等),而在构建时,时间维度数据和空间维度数据的索引是分开构建的。即对时间字段创建BTree等一维索引,对空间字段创建RTree等空间索引。时空查询过程即为通用关系数据库中的两索引字段查询,通过查询优化器优化后求交集达到时空过滤的目的。这种检索方式检索效率低,且由于RTree本身的缺陷,导致在数据达到一定量级时,RTree空间索引需处理叶子结点分裂和再平衡问题,导致数据写入上存在较大瓶颈。
又例如,现有技术中的另一种采用TimescaleDB、PostGIS和PostgreSQL结合的数据库,索引构建时,通过TimescaleDB对时间字段进行分区,分区可以按照小时、天或自定义等方式进行设置,相当于把大表数据拆分为小表数据。之后,对于每个分区内部的数据,使用PostGIS通过PostgreSQL的GiST接口实现构建RTree空间索引,来支持空间检索。其中,PostgreSQL的GiST接口是一个通用索引接口,不仅适合不同数据类型索引,而且适合空间数据类型索引。
这种方案由于分区存在,性能上在一定场景下要优于采用ESRI的传统数据库方案。但这种方案存在着索引数据膨胀,时空查询需要建立多个索引,而且索引随着数据增长将占用较大存储空间的问题。而且由于RTree空间索引本身存在的缺陷,导致在数据达到一定量级时,RTree空间索引需处理叶子结点分裂和再平衡问题,导致数据写入上存在较大瓶颈。
综上所述,传统空间索引在海量数据场景下,存储成本和写入性能有较多不足,无法满足使用需求,导致高维空间数据和/或时空数据的存储和查询受到很大限制,无法满足计算和检索的性能需求。
发明内容
有鉴于此,本发明实施例提供一种数据查询方案,以解决上述部分或全部问题。
根据本发明实施例的第一方面,提供了一种数据查询方法,其包括:获取用于查询多维数据的待查询信息,其中,所述待查询信息中包含有待查询的第一多维数据的信息;获取所述第一多维数据对应的第一一维编码,和预设的、存储有多维数据索引的位图索引,其中,所述多维数据索引根据第二多维数据对应的第二一维编码生成;根据所述位图索引,获取所述第一一维编码对应的位图块文件;根据获取的所述位图块文件,获取所述待查询信息所查询的第一多维数据。
根据本发明实施例的第二方面,提供了一种索引生成方法,其包括:获取第二多维数据的多个分区对应的多个第二一维编码;根据所述多个第二一维编码生成多维数据索引树,其中,所述多维数据索引树的叶子节点用于按照所述多个第二一维编码的顺序存储所述多个第二一维编码;根据所述多维数据索引树生成位图索引文件。
根据本发明实施例的第三方面,提供了一种数据查询装置包括:第一获取模块,用于获取用于查询多维数据的待查询信息,其中,所述待查询信息中包含有待查询的第一多维数据的信息;第二获取模块,用于获取所述第一多维数据对应的第一一维编码,和预设的、存储有多维数据索引的位图索引,其中,所述多维数据索引根据第二多维数据对应的第二一维编码生成;第三获取模块,用于根据所述位图索引,获取所述第一一维编码对应的位图块文件;第四获取模块,用于根据获取的所述位图块文件,获取所述待查询信息所查询的第一多维数据。
根据本发明实施例的第四方面,提供了一种索引生成装置,包括:编码获取模块,用于获取第二多维数据的多个分区对应的多个第二一维编码;索引树生成模块,用于根据所述多个第二一维编码生成多维数据索引树,其中,所述多维数据索引树的叶子节点用于按照所述多个第二一维编码的顺序存储所述多个第二一维编码;位图索引生成模块,用于根据所述多维数据索引树生成位图索引文件。
根据本发明实施例的第五方面,提供了一种数据库系统,其包括数据处理服务器和至少一个数据存储层;所述数据处理服务器用于前述第一方面的数据查询方法,以根据获取的所述位图块文件,访问数据存储层,获取所述待查询信息所查询的多维数据;或者,所述数据处理服务器用于执行前述第二方面的索引生成方法,以从所述数据存储层获取多维数据,并生成基于所述多维数据的位图索引文件。
根据本发明实施例的第六方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如第一方面所述的数据查询方法对应的操作或执行如第二方面所述的索引生成方法对应的操作。
根据本发明实施例的第七方面,提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的数据查询方法或实现如第二方面所述的索引生成方法。
根据本发明实施例提供的数据查询方案,通过对获取的用于查询多维数据的待查询信息进行处理,获取其包含的第一多维数据的第一一维编码和存储有多维数据索引的位图索引,根据位图索引获得与第一一维编码对应的位图块文件,并根据位图块文件获得所查询的第一多维数据。由于使用位图索引存储基于第二多维数据生成的多维数据索引并非空间索引,因此减小了索引的存储空间占用,避免存储成本过高。而且,多维数据索引根据第二多维数据对应的第二一维编码生成,因此,其数据写入性能更好,在需要数据写入时多维数据索引只需要在一维上进行数据插入,因此写入性能更好。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为根据本发明实施例一的一种数据查询方法的步骤流程图;
图2为根据本发明实施例一的一种空间填充曲线的示意图;
图3为根据本发明实施例二的一种数据查询方法的步骤流程图;
图4为根据本发明实施例三的一种索引生成方法的步骤流程图;
图5为根据本发明实施例四的一种索引生成方法的步骤流程图;
图6为一种生成基于多维数据的位图索引并使用位图索引进行查询的原理框图;
图7示出了一种生成基于多维数据的位图索引流程示意图;
图8示出了一种基于位图索引的查询过程示意图;
图9为根据本发明实施例五的一种数据查询装置的结构框图;
图10为根据本发明实施例六的一种索引生成装置的结构框图;
图11为根据本发明的实施例七的一种数据库系统的结构示意图;
图12为根据本发明实施例八的一种电子设备的结构示意图。
具体实施方式
为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。
下面结合本发明实施例附图进一步说明本发明实施例具体实现。
实施例一
参照图1,示出了根据本发明实施例一的一种数据查询方法的步骤流程图。
本实施例的数据查询方法包括以下步骤:
步骤S102:获取用于查询多维数据的待查询信息。
在本实施例中,以多维数据包括空间数据和/或时空数据为例,对数据查询方法进行说明。当然,多维数据还可以包括文档词频数据、用户评分数据等。
例如,该数据查询方法可以应用于TSDB(时空数据库)中。多维数据可以用于存储空间对象的空间坐标数据,还可以用于存储空间对象的其他属性数据。空间对象可以是空间中的点、线或面等。如,道路等对象可以通过空间中的线进行指示。车辆、人等对象可以通过空间中的点进行指示,通过多维数据记录车辆等不同时刻的空间坐标数据可以确定其运行轨迹,也可以确定空间对象之间的相对位置关系。
在进行多维数据查询时,通常所述待查询信息中包含有待查询的第一多维数据的信息。例如,待查询信息采用Bbox方式,Bbox通常采用“[左上角维度,左上角经度;右下角维度,右下角经度]”的方式表示第一多维数据。
如,在查找附近的车辆的场景中,多维数据用于存储各个车辆的空间坐标数据,而待查询信息以Bbox方式指示查询某一地理区域范围内的第一多维数据,以确定该地理区域范围内的车辆。
步骤S104:获取所述第一多维数据对应的第一一维编码,和预设的、存储有多维数据索引的位图索引。
其中,位图索引是根据其存储的多维数据索引预先生成的,而所述多维数据索引根据第二多维数据对应的第二一维编码生成。
例如,通过对第二多维数据进行降维处理,获得其对应的第二一维编码,实现了将第二多维数据转换为一维数据(即第二一维编码),根据该第二一维编码可以生成基于第二多维数据的一维索引,例如,根据第二一维编码生成多维数据索引树,如B树(BTree)、B+树(B+Tree)等,再基于多维数据索引树的节点信息生成多维数据索引。需要说明的是,多维数据索引树的类型可以根据需要选择适当的类型,本实施例对此不作限制。
通过这种方式,使得在数据写入上(如新增第二多维数据),仅在一维上进行索引树的插入,写入性能比高维的RTree的写入性能高效许多。
多维数据索引树的节点信息可以包括叶子节点信息和非叶子节点信息。其中,叶子节点可以用于存储第二一维编码,叶子节点信息可以根据叶子节点存储的第二一维编码生成。非叶子节点信息根据其对应的叶子节点信息生成。位图索引可以通过位图块文件存储多维数据索引树中的叶子节点信息,也即用于存储基于第二多维数据的第二一维编码。
由于将多维数据索引存储于位图索引中,因此相较于传统的RTree等空间索引存在的数据膨胀和大数据量写入性能下降的缺点,采用位图方式,以bit位来存储第二多维数据(即表示空间对象,如空间的点),本身数据占用少,有助于降低存储压力。
第一多维数据对应的第一一维编码可以通过任意适当的方式获得,本实施例对此不作限制。例如,可以采用与获得第二多维数据对应的第二一维编码相同的方式获得第一多维数据对应的第一一维编码,又或者,采用不同的方式。
在本实施例的一种可行方式中,使用Z3/S3变换,对第一多维数据进行降维处理,将第一多维数据与空间填充曲线中的一个或多个网格对应,根据对应的网格的编码确定第一多维数据的第一一维编码。
例如,所述获取所述第一多维数据对应的第一一维编码可以实现为:对所述第一多维数据进行二进制编码,生成对应的第一一维编码。
如图2所示,图中A处的矩形指示第一多维数据进行降维变换后对应的空间区域,通过空间填充曲线将该空间区域划分为大小相同的多个网格,并根据空间填充曲线指示的顺序,对这些网格进行编码,使每个网格具有唯一的一维编码。例如,序号9的网格的一维编码为“01001”。设某个空间对象的空间坐标数据为(3,2),则其位于序号9的网格中对应的一维编码为“01001”。
相应地,若第一多维数据(以图中B处矩形指示)以Bbox方式表示为[3,2;5,4],则通过Z3/S3变换,其对应的网格的序号为9、10、53和54,那么,对这些网格的序号进行二进制编码,生成的第一多维数据的第一一维编码对应为[1001,1010]和[110101,110111]。
当然,根据需要可以将所有网格的一维编码统一为相同的长度,本实施例对此不作限制。此外,根据需要的不同,可以采用其他方式对网格进行编码,并不限定于根据网格的序号以二进制进行编码。
步骤S106:根据所述位图索引,获取所述第一一维编码对应的位图块文件。
例如,通过查询位图索引中存储的多维数据索引,确定第一多维数据的第一一维编码对应的至少一个叶子节点,进而确定存储这些叶子节点的第一一维编码的位图块文件的位置,并从该位置中获取位图块文件。
步骤S108:根据获取的所述位图块文件,获取所述待查询信息所查询的第一多维数据。
例如,步骤S108可以实现为:对所述位图块文件中的第二一维编码进行与所述二进制编码对应的反向解码,根据反向解码结果获取所述待查询信息所查询的第一多维数据。
如:根据第二一维编码进行与二进制编码对应的反向解码,可以确定第二一维编码对应的空间填充曲线的网格,基于此网格进行反向变换操作,可以获取第一多维数据。
需要说明的是,反向解码的具体方式可以根据需要确定,例如,采用与根据多维数据生成位图块文件中存储的第二一维编码使用的编码方式相对应的解码方式进行反向解码,本实施例对反向解码方式不作限制。
通过本实施例,通过对获取的用于查询多维数据的待查询信息进行处理,获取其包含的第一多维数据的第一一维编码和存储有多维数据索引的位图索引,根据位图索引获得与第一一维编码对应的位图块文件,并根据位图块文件获得所查询的第一多维数据。由于使用位图索引存储基于第二多维数据生成的多维数据索引并非空间索引,因此减小了索引的存储空间占用,避免存储成本过高。而且,多维数据索引根据第二多维数据对应的第二一维编码生成,因此,其数据写入性能更好,在需要数据写入时多维数据索引只需要在一维上进行数据插入,因此写入性能更好。
本实施例的数据查询方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如平板电脑、手机等)和PC机等。
实施例二
参照图3,示出了根据本发明实施例二的一种数据查询方法的步骤流程图。
本实施例的数据查询方法包括前述的步骤S102~步骤S108。
在本实施例中,所述多维数据索引根据多维数据索引树的节点信息生成,多维数据索引树的节点信息根据第二多维数据对应的第二一维编码生成;其中,所述节点信息包括叶子节点信息和非叶子节点信息,所述叶子节点信息根据所述多维数据索引树中的叶子节点存储的所述第二一维编码生成,所述多维数据索引树中的叶子节点从广度层面按照所述第二一维编码的相邻顺序依次存储所述第二一维编码;所述非叶子节点信息为根据叶子节点存储的第二一维编码按照设定规则逐级生成的父节点的信息。
例如,如图2所示,基于第二多维数据,通过空间填充曲线操作,可以将第二多维数据指示的空间对象对应到空间填充曲线的一个或多个网格中,从而将其转换为第二一维编码。
之后,按照第二一维编码的相邻顺序依次将第二一维编码沿叶子节点的广度层面,存储到多维数据索引树的叶子节点中,根据叶子节点中存储的第二一维编码生成叶子节点信息。
再根据叶子节点存储的第二一维编码,按照设定规则逐级生成父节点的信息,该父节点的信息即作为非叶子节点信息。根据叶子节点信息和非叶子节点信息生成多维数据索引,将叶子节点信息存储到位图索引的位图块文件中,并将非叶子节点信息存储到位图索引的元数据中,从而实现通过位图索引存储多维数据索引。
基于此种位图索引,所述步骤S106可以实现为:根据所述位图索引,确定所述第一一维编码对应的非叶子节点信息;从确定的所述非叶子节点信息对应的所有叶子节点信息中,匹配与所述第一一维编码对应的叶子节点信息;根据匹配的所述叶子节点信息,确定所述第一一维编码对应的位图块文件。
其中,根据所述位图索引,确定所述第一一维编码对应的非叶子节点信息可以实现为:根据所述位图索引的元数据,确定所述第一一维编码对应的非叶子节点信息。
由于位图索引的元数据中包括非叶子节点信息,而不包括叶子节点信息,而非叶子节点的数据量很少,且经过了位图索引的压缩,因此可以直接将元数据加载在内存中,从而实现对非叶子节点信息的高速查找,且在内存中查找的过程并不涉及磁盘的I/O操作(input/output),因此元数据的查找速度不会受磁盘I/O速率的影响,充分保证了非叶子节点信息查找的速率,进而保证了查询性能。
在根据位图索引的元数据进行查找时,可以根据元数据中存储的非叶子节点所述的多维数据索引的结构不同,采用不同的方式进行查找,以保证查找效率较优,本实施例对此不作限制。例如,若多维数据索引是基于B树类型的多维数据索引树,则可以采用与之对应的方式进行查找。
根据对应的非叶子节点信息可以确定对应的叶子节点信息,进而确定存储有对应的叶子节点的位图块文件的位置,进而可以获取到与第一一维编码对应的位图块文件。
通过本实施例,多维数据索引树中的叶子节点用于存储多维数据,非叶子节点根据叶子节点生成,且非叶子节点信息存储在位图索引的元数据中,由于使用位图方式,可以将非叶子节点信息进行压缩,从而减少占用的存储空间,且非叶子节点信息本身数据量较少,因而可以加载在内存中,从而可以实现在内存中查找与多维数据的一维编码对应的非叶子节点信息,保证查找效率,且可以减少磁盘I/O。
此外,通过对获取的用于查询多维数据的待查询信息进行处理,获取其包含的第一多维数据的第一一维编码和存储有多维数据索引的位图索引,根据位图索引获得与第一一维编码对应的位图块文件,并根据位图块文件获得所查询的第一多维数据。由于使用位图索引存储基于第二多维数据生成的多维数据索引并非空间索引,因此减小了索引的存储空间占用,避免存储成本过高。而且,多维数据索引根据第二多维数据对应的第二一维编码生成,因此,其数据写入性能更好,在需要数据写入时多维数据索引只需要在一维上进行数据插入,因此写入性能更好。
本实施例的数据查询方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如平板电脑、手机等)和PC机等。
实施例三
参照图4,示出了根据本发明实施例三的一种索引生成方法的步骤流程图。
本实施例的索引生成方法包括以下步骤:
步骤S302:获取第二多维数据的多个分区对应的多个第二一维编码。
第二多维数据可以是时空数据和/或空间数据。第二多维数据可以用于存储空间对象的空间坐标数据。空间对象可以是空间中的点、线或面等。如,道路等对象可以通过空间中的线进行指示。车辆、人等对象可以通过空间中的点进行指示,通过多维数据记录车辆等不同时刻的空间坐标数据可以确定其运行轨迹,也可以确定空间对象之间的相对位置关系。
第二多维数据的多个分区可以采用适当的方式对每个分区进行编码,以获得各分区对应的第二一维编码。
例如,使用空间降维变换对第二多维数据进行降维变换(如使用Z3/S3降维变换,其中,Z3/S3是空间填充曲线中的三维Z曲线变换和基于Google S2实现的三维变换),并对降维变换结果进行分块或者不分块。若进行分块,则基于分块结果,对第二多维数据进行后续处理,并获取第二多维数据的多个分区对应的多个一维编码。其中,分块可以采用KD-Tree等方式进行分块。若不分块,则直接对第二多维数据进行后续处理,并获取第二多维数据的多个分区对应的多个第二一维编码。
其中,获取第二多维数据的多个分区对应的多个第二一维编码可以实现为:对所述第二多维数据进行分区,获取多个多维数据分区;通过空间填充曲线操作,分别对所述多个多维数据分区进行二进制编码,获得对应的多个第二一维编码。
通过空间填充曲线操作,可以对多个多维数据分区进行二进制编码,且可以使空间上相邻的多维数据分区,在编码上也相邻,这就使得相邻多维数据分区对应的第二一维编码的前缀相同,从而实现前缀聚集,有助于后续进行数据压缩。
以如图2所示的空间区域为例,空间填充曲线可以是希尔伯特曲线、或Z曲线等。以希尔伯特曲线为例,第二多维数据指示的空间对象为(3,2)的点,对应多维数据分区中序号为9的分区(即网格),其对应的第二一维编码为“01001”。
又或者,获取第二多维数据的多个分区对应的多个第二一维编码可以实现为:使用geohash算法,对第二多维数据对应的数据空间进行分区,以划分成大小相同的网格,根据需要的精度不同,划分的网格大小及数量可以不同。通过对每个分区进行编码,可以获得第二多维数据对应的多个第二一维编码。
步骤S304:根据所述多个第二一维编码生成多维数据索引树。
其中,所述多维数据索引树的叶子节点用于按照所述多个第二一维编码的顺序存储所述多个第二一维编码。
多维数据索引树的类型可以根据第二多维数据的数据量、检索效率等需求确定。其可以为任何适当的有序树,采用有序树可以使检索效率更高。多维数据索引树可以是B树等等。
针对不同的多维数据索引树,可以采用与之对应的,适当的方式生成。以B树为例,可以将每个第二一维编码作为多维数据索引树的一个叶子节点,写入多维数据索引树中,至于多维数据索引树中的非叶子节点可以根据需要采用适当的规则生成,以生成多维数据索引树。
步骤S306:根据所述多维数据索引树生成位图索引文件。
位图索引文件包括元数据和至少一个位图块文件。在本实施例中,位图块文件用于存储第二多维数据,即多维数据索引树中的叶子节点中的第二一维编码。元数据可以用于存储多维数据索引树中非叶子节点信息,或者根据需要,还可以用于存储其他统计信息。统计信息例如位图索引文件对应的地理区域的地理坐标数据等。
在元数据中存储统计信息可以更好地提升查询时的效率。例如,在查询时,将第一多维数据(其通常是一个多维数据范围)指示的地理坐标数据与元数据中的统计信息进行匹配,若第一多维数据指示的地理坐标数据不在统计信息指示的位图索引文件对应的地理区域内,则可以不在该位图索引文件中进行查找。
在一种可行方式中,步骤S306可以实现为:按照位图块大小,广度遍历所述多维数据索引树,并将遍历获得的第二一维编码顺序写入至少一个位图块文件;对所述至少一个位图块文件进行压缩后,生成用于存储多维数据索引的位图索引文件。
位图块大小可以根据时间存储需求确定,本实施例对此不作限制。
在将遍历获得的第二一维编码顺序写入至少一个位图块文件时,可以对遍历获得的第二一维编码进行前缀压缩后,顺序写入至少一个位图块文件。这样可以通过位图块文件中的几个bit就可以表示一个第二多维数据,从而减少存储占用。
或者,在将遍历获得的第二一维编码顺序写入至少一个位图块文件时,将遍历获得的第二一维编码直接顺序写入至少一个位图块文件中。
为了进一步减少空间占用,可以在一个位图块文件的大小满足要求后,对位图块文件进行压缩,并生成用于存储多维数据索引的位图索引文件。
通过本实施例,可以将多维数据降维到一维空间中,并获取其对应的第二一维编码,之后根据一维编码生成多维数据索引树,进而根据多维数据索引树可以生成位图索引文件。由此实现了生成基于多维数据的位图索引,充分减少存储空间的占用,且位图索引中存储的多维数据索引是基于第二一维编码生成的,具有良好的数据写入性能,能够克服现有的RTree空间索引存在的需要进行处理叶子结点分裂和再平衡问题,导致数据写入上存在较大瓶颈的问题,而且,这种基于第二一维编码生成的多维数据索引树可以实现在一维上进行查询,从而提升了查询性能。
本实施例的索引生成方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如平板电脑、手机等)和PC机等。
实施例四
参照图5,示出了根据本发明实施例四的一种索引生成方法的步骤流程图。
本实施例的索引生成方法包括前述的步骤S302~步骤S306。
其中,若在步骤S302中通过对所述第二多维数据进行分区,获取多个多维数据分区;通过空间填充曲线操作,分别对所述多个多维数据分区进行二进制编码,获得对应的多个第二一维编码的方式获取多维数据的多个分区对应的多个第二一维编码,则所述步骤S304可以实现为:根据所述空间填充曲线操作所填充的曲线网格精度和所述多个第二一维编码生成多维数据索引树。
多维数据索引树的高度取决于空间填充曲线操作所填充的曲线网格精度和第二一维编码的数量,如,通常情况下,曲线网格精度越高,树的高度相对越高。当然,为了确保较好的查询效率,可以适当的减少树的高度,以避免查询效率过低。
在本实施例中,为了保证生成的位图索引中前缀压缩效果较好,从而减少对存储空间的占用,所述多维数据索引树的每个叶子节点对应于一个第二一维编码,所述叶子节点按照所述第二一维编码的相邻顺序在广度层面依次排列。
为了保证在使用位图索引进行查询时,能够较为方便地根据非叶子节点确定其的叶子节点是否与第一多维数据对应,所述叶子节点和所述多维数据索引树的根节点之间存在至少一级中间节点,各级中间节点中存储的编码根据对应的下级节点中的第二一维编码生成。根节点和至少一级中间节点即为前述的非叶子节点。
例如,各级中间节点中存储的编码通过对对应的下级节点中存储的第二一维编码进行或运算操作生成。例如,中间节点对应4个叶子节点,分别为叶子节点A~D,其中叶子节点A的一维编码为“0000 0001”、叶子节点B的一维编码为“0000 0010”、叶子节点C的一维编码为“0000 0100”、叶子节点D的一维编码为“0000 1000”,则对这4个叶子节点的一维编码进行或运算操作(即逐个bit位对应进行OR运算),获得的中间节点的一维编码为“00001111”。这样在查询时,若第一多维数据对应的第一一维编码为“00101111”,则由于中间节点的前4位为“0000”,其对应的叶子节点中不包含前4位有1的叶子节点,因此可以不再进行叶子节点的匹配,而直接返回没有匹配数据。这样可以减少查询次数,从而提升效率。
通过本实施例,多维数据索引树的高度取决于填充曲线网格精度,且多维数据中的所有空间对象都会成为多维数据索引树的叶子节点。这样便构成一颗有序的分层树。而通过多维数据索引树自底向上生成位图索引(即bitmap),即从最底层叶子节点自左向右将编码按bit写入位图索引的位图块文件中,并在位图块文件满足一定大小后,压缩写入磁盘文件,可以实现以位图方式存储多维数据,这样使得存储空间占用更小,且由于多维数据索引树是基于一维编码生成的,因为使得数据写入性能和查询性能都更好。
此外,由于叶子节点的数据有大量重复前缀,因此采用目前已有的前缀压缩算法可以很大程度上对数据进行压缩,从而减少位图索引占用空间,同时可以直接在压缩数据上检索,确保检索效率。
下面以一个具体实例为例,对索引生成方法进行详细说明:
如图6所示,其示出了一种生成基于多维数据的位图索引并使用位图索引进行查询的原理框图。如图7所示,其示出了一种生成基于多维数据的位图索引流程示意图。
基于图6和图7,索引生成包括以下步骤:
步骤A1:对第二多维数据进行预处理,将第二多维数据转换为一维字符串或数据。
其中第二多维数据为包含空间数据的数据。其可以为单纯的空间数据,也可以是时间与空间的混合数据。通过Z3/S3变换,将第二多维数据中的空间坐标数据转换为坐标轴上的点,再通过空间填充曲线,使坐标轴上的点与空间填充曲线中的网格对应。空间填充曲线将数据空间划分成大小相同的网格,再根据一定的规则(该规则可以根据需要确定)将这些网格编码,每个网格指定一个唯一的第二一维编码,这样使得在一定程度上相邻网格的编码也是相邻的,而第二多维数据中的任意一个空间对象可以由一组网格表示。这样便可以将多维的空间数据降维到一维空间当中。
其中,Z曲线、S2/S3、希尔伯特曲线均为多维空间填充曲线。以图2所示为例,对于空间中的点(3,2),通过图2所示的希伯尔填充曲线可以转换为9,对应二进制“01001”。这样实现通过Z3/S3变换将第二多维数据转换为一维字符串或数据,一维字符串或数据可以表示为二进制。
具体地,如图6所示,在所有时空数据写入时,可以首先通过KD-Tree、QuardTree或网格等方式对时空数据进行分块,对每个块的数据通过空间填充曲线,都可以转换为以二进制编码表示的第二一维编码。
由于空间填充曲线变换具有很高的性能,因而可以很好地适应大数据写入场景。另外,空间填充曲线形成的网格具有空间近邻,编码近邻的特性,这样可以使空间相近的第二一维编码可以更好地聚集在一起,从而使得在后续生成位图索引中,可以对第二一维编码进行高效的压缩,从而减少存储占用。
步骤B1:构建有序树(即多维数据索引树)。
在构建有序树过程中,以树的度是4(树的高度取决于填充曲线网格精度)为例,第二一维编码以二进制数据进行表示,将二进制数据插入到有序树的叶子节点中,叶子节点即为时空数据节点。叶子节点上层的父节点是其对应的所有子节点进行OR运算操作的结果。
这样,整个有序树是有序排列的二进制串,而且大部分时空位置相近的数据是紧密排列的。
步骤C1:构建位图索引。
对于步骤B1中构建的有序树,从叶子节点自下而上、自左而右地写入位图索引的位图块文件中。可以看到生成的位图块文件有大量重复前缀,这可以通过已有的算法进行压缩,比如前缀压缩算法。这样一个时空数据平均仅需要数个bit即可表示。
在位图块文件满足一定大小后,进行压缩写入到磁盘文件,也可以写入分布式文件系统。针对有序树中的非叶子节点可以写入位图索引的元数据中,以生成位图索引文件。
通过上述过程就可以实现基于多维数据的位图索引的生成。
在生成位图索引后,可以基于该位图索引进行查询。如图8所示,示出了一种基于位图索引的查询过程示意图。
基于图8,数据查询方法包括以下步骤:
步骤A2:对第一多维数据进行降维处理。
在对多维数据进行查询,尤其是空间数据进行查询时,通常是对某个多维数据范围或空间区域进行查询,常见的如Bbox查询。为了能够在基于多维数据的位图索引上进行检索,把第一多维数据(其指示某个多维数据范围)或空间区域(即空间range)进行降维处理。
例如,通过Z3/S3变换,将第一多维数据或空间区域转换为多个一维的网格。如图2中B处所示的范围可以转换为[9,10]和[53,54],进而根据这两个一维的网格对应的一维编码,转换为对应的第一一维编码(一维连续的几个范围)即:[1001,1010]和[110101,110111]。
步骤B2:根据第一多维数据对应的第一一维编码,进行查询。
由于位图索引中的存储的多维数据索引树中的非叶子节点的元数据通过压缩处理,且本身数量较少,因而是可以加载到内存中的,而这种一维编码在位图索引的元数据中的扫描操作(scan)本身性能较好,因此可以有助于提升查询的效率。
具体地,根据第一一维编码,检索加载到缓存中的位图索引的元数据(其中包括统计信息及非叶子节点信息),可以高效检索出每个第一一维编码对应的位图块文件,由于范围查询的空间邻近性,大部分情况下是对少量位图块文件的扫描操作,因此IO负载较小。此外,这在文件内部通常是一种顺序IO操作,查询性能很高。进而基于位图块文件可以快速地获得需要的多维数据。
本方式中,创造性地通过位图方式索引GIS空间/时空等多维空间数据,借助空间填充曲线的近邻性特性,使多维空间数据降维后适配位图特性,从而带来高效的检索性能。此外,空间位图索引的构建方式,比传统空间索引较大的提升了整体压缩比,而且高效支持了在位图索引上进行空间范围查询。
通过采用位图方式创建基于多维数据(如多维时空数据)的索引的方法,充分利用了位图空间占用少的特点,对于空间点类型空间数据,平均只需1-2B,相比传统索引方式较大程度的压缩了空间数据。位图索引的元数据可以缓存到内存中,对于加速查询起到非常好的效果。同时,以有序树方式组织数据结构,可以实现logn的复杂度。
此种位图索引,由于采用位图方式,采用bit位来表示空间的点,本身数据占用少,同时由于数据前缀聚集的特点,可以进行高效压缩。数据写入上,我们仅在一维上进行树的插入,写入性能比高纬的RTree等空间索引高很多,相较于传统的RTree等空间索引,充分克服了其数据膨胀和大数据量写入性能下降的缺点。
此外,由于第二多维数据均写入叶子节点,而非叶子节点中不存储第二多维数据,相较于现有技术中的GeoMesa方案中需要对存储引擎中的时空数据在内存中重建,使得编码后字符串存储借助于其他通用的存储引擎,性能取决于其他引擎的实现方式,且编码后字符串作rowkey,整条数据作为values,导致查询IO放大严重,内存占用较大的问题,位图索引具有高压缩特性,可以很好地解决内存问题。同时采用一维索引的统计检索,在查询上,比大数据方案(例如:HBase的roekey)的前缀匹配性能更高。
综上所述,该位图索引充分解决了现有技术中不能很好解决时空大数据的存储成本和计算的性能问题。实现了一种通过位图索引进行检索和管理二维空间或三维时空数据的方法,且可以支持空间范围的快速检索。
实施例五
参照图9,示出了根据本发明实施例五的一种数据查询装置的结构框图。
本实施例的数据查询装置包括:第一获取模块902,用于获取用于查询多维数据的待查询信息,其中,所述待查询信息中包含有待查询的第一多维数据的信息;第二获取模块904,用于获取所述第一多维数据对应的第一一维编码,和预设的、存储有多维数据索引的位图索引,其中,所述多维数据索引根据第二多维数据对应的第二一维编码生成;第三获取模块906,用于根据所述位图索引,获取所述第一一维编码对应的位图块文件;第四获取模块908,用于根据获取的所述位图块文件,获取所述待查询信息所查询的第一多维数据。
可选地,所述多维数据索引根据多维数据索引树的节点信息生成,多维数据索引树的节点信息根据第二多维数据对应的第二一维编码生成;其中,所述节点信息包括叶子节点信息和非叶子节点信息,所述叶子节点信息根据所述多维数据索引树中的叶子节点存储的所述第二一维编码生成,所述多维数据索引树中的叶子节点从广度层面按照所述第二一维编码的相邻顺序依次存储所述第二一维编码;所述非叶子节点信息为根据叶子节点存储的第二一维编码按照设定规则逐级生成的父节点的信息。
可选地,所述第三获取模块906,包括:非叶子节点确定模块9061,用于根据所述位图索引,确定所述第一一维编码对应的非叶子节点信息;叶子节点确定模块9062,用于从确定的所述非叶子节点信息对应的所有叶子节点信息中,匹配与所述第一一维编码对应的叶子节点信息;位图块文件确定模块9063,用于根据匹配的所述叶子节点信息,确定所述第一一维编码对应的位图块文件。
可选地,所述非叶子节点确定模块9061用于根据所述位图索引的元数据,确定所述第一一维编码对应的非叶子节点信息。
可选地,所述第二获取模块904用于对所述第一多维数据进行二进制编码,生成对应的第一一维编码。
可选地,所述第四获取模块908用于对所述位图块文件中的第二一维编码进行与所述二进制编码对应的反向解码,根据反向解码结果获取所述待查询信息所查询的第一多维数据。
本实施例的数据查询装置用于实现前述多个方法实施例中相应的数据查询方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本实施例的数据查询装置中的各个模块的功能实现均可参照前述方法实施例中的相应部分的描述,在此亦不再赘述。
实施例六
参照图10,示出了根据本发明实施例六的一种索引生成装置的结构框图。
本实施例的索引生成装置包括:编码获取模块1002,用于获取第二多维数据的多个分区对应的多个第二一维编码;索引树生成模块1004,用于根据所述多个第二一维编码生成多维数据索引树,其中,所述多维数据索引树的叶子节点用于按照所述多个第二一维编码的顺序存储所述多个第二一维编码;位图索引生成模块1006,用于根据所述多维数据索引树生成位图索引文件。
可选地,所述编码获取模块1002包括:分区模块10021,用于对所述第二多维数据进行分区,获取多个多维数据分区;空间填充操作模块10022,用于通过空间填充曲线操作,分别对所述多个多维数据分区进行二进制编码,获得对应的多个第二一维编码。
可选地,所述索引树生成模块1004用于根据所述空间填充曲线操作所填充的曲线网格精度和所述多个第二一维编码生成多维数据索引树。
可选地,所述多维数据索引树的每个叶子节点对应于一个第二一维编码,所述叶子节点按照所述第二一维编码的相邻顺序在广度层面依次排列;所述叶子节点和所述多维数据索引树的根节点之间存在至少一级中间节点,各级中间节点中存储的编码根据对应的下级节点中的第二一维编码生成。
可选地,各级中间节点中存储的编码通过对对应的下级节点中存储的第二一维编码进行或运算操作生成。
可选地,所述位图索引生成模块1006包括:顺序写入模块10061,用于按照位图块大小,广度遍历所述多维数据索引树,并将遍历获得的第二一维编码顺序写入至少一个位图块文件;压缩生成模块10062,用于对所述至少一个位图块文件进行压缩后,生成用于存储多维数据索引的位图索引文件。
可选地,所述顺序写入模块10061,用于对遍历获得的第二一维编码进行前缀压缩后,顺序写入至少一个位图块文件。
本实施例的索引生成装置用于实现前述多个方法实施例中相应的索引生成方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本实施例的索引生成装置中的各个模块的功能实现均可参照前述方法实施例中的相应部分的描述,在此亦不再赘述。
实施例七
参照图11,示出了根据本发明实施例七的一种数据库系统的结构示意图。
数据库系统包括数据处理服务器和至少一个数据存储层;其中,所述数据处理服务器用于执行前述实施例一或二所述的数据查询方法,以根据获取的所述位图块文件,访问数据存储层,获取所述待查询信息所查询的多维数据;或者,所述数据处理服务器用于执行前述实施例三或四所述的索引生成方法,以从所述数据存储层获取多维数据,并生成基于所述多维数据的位图索引文件。
实施例八
参照图12,示出了根据本发明实施例八的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。
如图12所示,该电子设备可以包括:处理器(processor)1202、通信接口(Communications Interface)1204、存储器(memory)1206、以及通信总线1208。
其中:
处理器1202、通信接口1204、以及存储器1206通过通信总线1208完成相互间的通信。
通信接口1204,用于与其它电子设备如终端设备或服务器进行通信。
处理器1202,用于执行程序1210,具体可以执行上述数据查询方法或索引生成方法实施例中的相关步骤。
具体地,程序1210可以包括程序代码,该程序代码包括计算机操作指令。
处理器1202可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器1206,用于存放程序1210。存储器1206可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序1210具体可以用于使得处理器1202执行以下操作:获取用于查询多维数据的待查询信息,其中,所述待查询信息中包含有待查询的第一多维数据的信息;获取所述第一多维数据对应的第一一维编码,和预设的、存储有多维数据索引的位图索引,其中,所述多维数据索引根据第二多维数据对应的第二一维编码生成;根据所述位图索引,获取所述第一一维编码对应的位图块文件;根据获取的所述位图块文件,获取所述待查询信息所查询的第一多维数据。
在一种可选的实施方式中,所述多维数据索引根据多维数据索引树的节点信息生成,所述多维数据索引树的节点信息根据所述第二多维数据对应的第二一维编码生成;其中,所述节点信息包括叶子节点信息和非叶子节点信息,所述叶子节点信息根据所述多维数据索引树中的叶子节点存储的所述第二一维编码生成,所述多维数据索引树中的叶子节点从广度层面按照所述第二一维编码的相邻顺序依次存储所述第二一维编码;所述非叶子节点信息为根据叶子节点存储的第二一维编码按照设定规则逐级生成的父节点的信息。
在一种可选的实施方式中,程序1210还用于使得处理器1202在根据所述位图索引,获取所述第一一维编码对应的位图块文件时,根据所述位图索引,确定所述第一一维编码对应的非叶子节点信息;从确定的所述非叶子节点信息对应的所有叶子节点信息中,匹配与所述第一一维编码对应的叶子节点信息;根据匹配的所述叶子节点信息,确定所述第一一维编码对应的位图块文件。
在一种可选的实施方式中,程序1210还用于使得处理器1202在根据所述位图索引,确定所述第一一维编码对应的非叶子节点信息时,根据所述位图索引的元数据,确定所述第一一维编码对应的非叶子节点信息。
在一种可选的实施方式中,程序1210还用于使得处理器1202在获取所述第一多维数据对应的第一一维编码时,对所述第一多维数据进行二进制编码,生成对应的第一一维编码。
在一种可选的实施方式中,程序1210还用于使得处理器1202在根据获取的所述位图块文件,获取所述待查询信息所查询的第一多维数据时,对所述位图块文件中的第二一维编码进行与所述二进制编码对应的反向解码,根据反向解码结果获取所述待查询信息所查询的第一多维数据。
或者,程序1210具体可以用于使得处理器1202执行以下操作:获取第二多维数据的多个分区对应的多个第二一维编码;根据所述多个第二一维编码生成多维数据索引树,其中,所述多维数据索引树的叶子节点用于按照所述多个第二一维编码的顺序存储所述多个第二一维编码;根据所述多维数据索引树生成位图索引文件。
在一种可选的实施方式中,程序1210还用于使得处理器1202在获取第二多维数据的多个分区对应的多个第二一维编码时,对所述第二多维数据进行分区,获取多个多维数据分区;通过空间填充曲线操作,分别对所述多个多维数据分区进行二进制编码,获得对应的多个第二一维编码。
在一种可选的实施方式中,程序1210还用于使得处理器1202在根据所述多个第二一维编码生成多维数据索引树时,根据所述空间填充曲线操作所填充的曲线网格精度和所述多个第二一维编码生成多维数据索引树。
在一种可选的实施方式中,多维数据索引树的每个叶子节点对应于一个所述第二一维编码,所述叶子节点按照所述第二一维编码的相邻顺序在广度层面依次排列;所述叶子节点和所述多维数据索引树的根节点之间存在至少一级中间节点,各级中间节点中存储的编码根据对应的下级节点中的第二一维编码生成。
在一种可选的实施方式中,各级中间节点中存储的编码通过对对应的下级节点中存储的第二一维编码进行或运算操作生成。
在一种可选的实施方式中,程序1210还用于使得处理器1202在根据所述多维数据索引树生成位图索引文件时,按照位图块大小,广度遍历所述多维数据索引树,并将遍历获得的第二一维编码顺序写入至少一个位图块文件;对所述至少一个位图块文件进行压缩后,生成用于存储多维数据索引的位图索引文件。
在一种可选的实施方式中,程序1210还用于使得处理器1202在将遍历获得的第二一维编码顺序写入至少一个位图块文件时,对遍历获得的第二一维编码进行前缀压缩后,顺序写入至少一个位图块文件。
程序1210中各步骤的具体实现可以参见上述数据查询方法或索引生成方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
通过本实施例的电子设备,
需要指出,根据实施的需要,可将本发明实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本发明实施例的目的。
上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的数据查询方法或索引生成方法。此外,当通用计算机访问用于实现在此示出的数据查询方法或索引生成方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的数据查询方法或索引生成方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
以上实施方式仅用于说明本发明实施例,而并非对本发明实施例的限制,有关技术领域的普通技术人员,在不脱离本发明实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明实施例的范畴,本发明实施例的专利保护范围应由权利要求限定。
Claims (18)
1.一种数据查询方法,包括:
获取用于查询多维数据的待查询信息,其中,所述待查询信息中包含有待查询的第一多维数据的信息;
获取所述第一多维数据对应的第一一维编码,和预设的、存储有多维数据索引的位图索引,其中,所述多维数据索引根据第二多维数据对应的第二一维编码生成;
根据所述位图索引,获取所述第一一维编码对应的位图块文件;
根据获取的所述位图块文件,获取所述待查询信息所查询的第一多维数据。
2.根据权利要求1所述的方法,其中,所述多维数据索引根据多维数据索引树的节点信息生成,所述多维数据索引树的节点信息根据所述第二多维数据对应的第二一维编码生成;
其中,所述节点信息包括叶子节点信息和非叶子节点信息,所述叶子节点信息根据所述多维数据索引树中的叶子节点存储的所述第二一维编码生成,所述多维数据索引树中的叶子节点从广度层面按照所述第二一维编码的相邻顺序依次存储所述第二一维编码;
所述非叶子节点信息为根据叶子节点存储的第二一维编码按照设定规则逐级生成的父节点的信息。
3.根据权利要求2所述的方法,其中,所述根据所述位图索引,获取所述第一一维编码对应的位图块文件,包括:
根据所述位图索引,确定所述第一一维编码对应的非叶子节点信息;
从确定的所述非叶子节点信息对应的所有叶子节点信息中,匹配与所述第一一维编码对应的叶子节点信息;
根据匹配的所述叶子节点信息,确定所述第一一维编码对应的位图块文件。
4.根据权利要求3所述的方法,其特征在于,所述根据所述位图索引,确定所述第一一维编码对应的非叶子节点信息,包括:
根据所述位图索引的元数据,确定所述第一一维编码对应的非叶子节点信息。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述获取所述第一多维数据对应的第一一维编码,包括:
对所述第一多维数据进行二进制编码,生成对应的第一一维编码。
6.根据权利要求5所述的方法,其特征在于,所述根据获取的所述位图块文件,获取所述待查询信息所查询的第一多维数据,包括:
对所述位图块文件中的第二一维编码进行与所述二进制编码对应的反向解码,根据反向解码结果获取所述待查询信息所查询的第一多维数据。
7.一种索引生成方法,其特征在于,包括:
获取第二多维数据的多个分区对应的多个第二一维编码;
根据所述多个第二一维编码生成多维数据索引树,其中,所述多维数据索引树的叶子节点用于按照所述多个第二一维编码的顺序存储所述多个第二一维编码;
根据所述多维数据索引树生成位图索引文件。
8.根据权利要求7所述的方法,其特征在于,获取第二多维数据的多个分区对应的多个第二一维编码,包括:
对所述第二多维数据进行分区,获取多个多维数据分区;
通过空间填充曲线操作,分别对所述多个多维数据分区进行二进制编码,获得对应的多个第二一维编码。
9.根据权利要求8所述的方法,其特征在于,所述根据所述多个第二一维编码生成多维数据索引树,包括:
根据所述空间填充曲线操作所填充的曲线网格精度和所述多个第二一维编码生成多维数据索引树。
10.根据权利要求9所述的方法,其特征在于,所述多维数据索引树的每个叶子节点对应于一个所述第二一维编码,所述叶子节点按照所述第二一维编码的相邻顺序在广度层面依次排列;
所述叶子节点和所述多维数据索引树的根节点之间存在至少一级中间节点,各级中间节点中存储的编码根据对应的下级节点中的第二一维编码生成。
11.根据权利要求10所述的方法,其特征在于,各级中间节点中存储的编码通过对对应的下级节点中存储的第二一维编码进行或运算操作生成。
12.根据权利要求7-11任一项所述的方法,其特征在于,所述根据所述多维数据索引树生成位图索引文件,包括:
按照位图块大小,广度遍历所述多维数据索引树,并将遍历获得的第二一维编码顺序写入至少一个位图块文件;
对所述至少一个位图块文件进行压缩后,生成用于存储多维数据索引的位图索引文件。
13.根据权利要12所述的方法,其特征在于,所述将遍历获得的第二一维编码顺序写入至少一个位图块文件,包括:
对遍历获得的第二一维编码进行前缀压缩后,顺序写入至少一个位图块文件。
14.一种数据查询装置,其特征在于,包括:
第一获取模块,用于获取用于查询多维数据的待查询信息,其中,所述待查询信息中包含有待查询的第一多维数据的信息;
第二获取模块,用于获取所述第一多维数据对应的第一一维编码,和预设的、存储有多维数据索引的位图索引,其中,所述多维数据索引根据第二多维数据对应的第二一维编码生成;
第三获取模块,用于根据所述位图索引,获取所述第一一维编码对应的位图块文件;
第四获取模块,用于根据获取的所述位图块文件,获取所述待查询信息所查询的第一多维数据。
15.一种索引生成装置,其特征在于,包括:
编码获取模块,用于获取第二多维数据的多个分区对应的多个第二一维编码;
索引树生成模块,用于根据所述多个第二一维编码生成多维数据索引树,其中,所述多维数据索引树的叶子节点用于按照所述多个第二一维编码的顺序存储所述多个第二一维编码;
位图索引生成模块,用于根据所述多维数据索引树生成位图索引文件。
16.一种数据库系统,其特征在于,包括数据处理服务器和至少一个数据存储层;
所述数据处理服务器用于执行权利要求1-6中任一项所述的数据查询方法,以根据获取的所述位图块文件,访问数据存储层,获取所述待查询信息所查询的多维数据;
或者,所述数据处理服务器用于执行权利要求7-13中任一项所述的索引生成方法,以从所述数据存储层获取多维数据,并生成基于所述多维数据的位图索引文件。
17.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-6中任一项所述的查询处理方法对应的操作,或者,执行如权利要求7-13中任一项所述的索引生成方法对应的操作。
18.一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1-6中任一所述的查询处理方法,或者,执行如权利要求7-13中任一项所述的索引生成方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010011631.9A CN113076334B (zh) | 2020-01-06 | 2020-01-06 | 数据查询方法、索引生成方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010011631.9A CN113076334B (zh) | 2020-01-06 | 2020-01-06 | 数据查询方法、索引生成方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113076334A true CN113076334A (zh) | 2021-07-06 |
CN113076334B CN113076334B (zh) | 2024-05-03 |
Family
ID=76608939
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010011631.9A Active CN113076334B (zh) | 2020-01-06 | 2020-01-06 | 数据查询方法、索引生成方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113076334B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448968A (zh) * | 2021-07-21 | 2021-09-28 | 浪潮软件科技有限公司 | 一种海量轨迹数据的读写方法及系统 |
CN114547380A (zh) * | 2022-01-25 | 2022-05-27 | 北京元年科技股份有限公司 | 数据遍历查询方法、装置、电子设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070174309A1 (en) * | 2006-01-18 | 2007-07-26 | Pettovello Primo M | Mtreeini: intermediate nodes and indexes |
CN104504030A (zh) * | 2014-12-12 | 2015-04-08 | 国家电网公司 | 一种面向电力调度自动化海量报文的索引方法 |
WO2015096582A1 (zh) * | 2013-12-27 | 2015-07-02 | 华为技术有限公司 | 一种时空数据的索引建立方法、查询方法、装置及设备 |
CN108182242A (zh) * | 2017-12-28 | 2018-06-19 | 湖南大学 | 一种用于海量多维数值数据范围查询的索引方法 |
-
2020
- 2020-01-06 CN CN202010011631.9A patent/CN113076334B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070174309A1 (en) * | 2006-01-18 | 2007-07-26 | Pettovello Primo M | Mtreeini: intermediate nodes and indexes |
WO2015096582A1 (zh) * | 2013-12-27 | 2015-07-02 | 华为技术有限公司 | 一种时空数据的索引建立方法、查询方法、装置及设备 |
CN104504030A (zh) * | 2014-12-12 | 2015-04-08 | 国家电网公司 | 一种面向电力调度自动化海量报文的索引方法 |
CN108182242A (zh) * | 2017-12-28 | 2018-06-19 | 湖南大学 | 一种用于海量多维数值数据范围查询的索引方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448968A (zh) * | 2021-07-21 | 2021-09-28 | 浪潮软件科技有限公司 | 一种海量轨迹数据的读写方法及系统 |
CN114547380A (zh) * | 2022-01-25 | 2022-05-27 | 北京元年科技股份有限公司 | 数据遍历查询方法、装置、电子设备及可读存储介质 |
CN114547380B (zh) * | 2022-01-25 | 2022-11-15 | 北京元年科技股份有限公司 | 数据遍历查询方法、装置、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113076334B (zh) | 2024-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11146284B2 (en) | Space-filling curve dictionary-based compression | |
CN109165215B (zh) | 一种云环境下时空索引的构建方法、装置及电子设备 | |
CN108009979B (zh) | 基于时空数据融合的三维点云压缩存储方法及系统 | |
US7945569B2 (en) | Method and apparatus for querying spatial data | |
US7167856B2 (en) | Method of storing and retrieving multi-dimensional data using the hilbert curve | |
CN107766433B (zh) | 一种基于Geo-BTree的范围查询方法及装置 | |
CN110599490A (zh) | 一种遥感影像数据存储方法和系统 | |
CN108009265B (zh) | 一种云计算环境下的空间数据索引方法 | |
CN106874425B (zh) | 基于Storm的实时关键词近似搜索算法 | |
CN113076334B (zh) | 数据查询方法、索引生成方法、装置及电子设备 | |
CN105574212A (zh) | 一种多索引磁盘哈希结构的图像检索方法 | |
CN113268557B (zh) | 一种适应显示导向型可视化分析的快速的空间索引方法 | |
CN106991149B (zh) | 一种融合编码和多版本数据的海量空间对象存储方法 | |
CN111125392A (zh) | 一种基于矩阵对象存储机制的遥感影像存储、查询方法 | |
CN112395288B (zh) | 基于希尔伯特曲线的r树索引合并更新方法、装置及介质 | |
CN112035586A (zh) | 基于可扩展学习索引的空间范围查询方法 | |
CN112364188A (zh) | 一种遥感影像的索引建立方法、遥感影像检索方法及装置 | |
CN105740428A (zh) | 一种基于b+树的高维磁盘索引结构和图像检索方法 | |
CN110955656A (zh) | 矢量数据拓扑运算索引优化机制与构建方法 | |
CN117608476A (zh) | 矢量数据分块存储方法、装置、电子设备及介质 | |
Pfoser et al. | Trajectory indexing using movement constraints | |
Pinto et al. | Improved queryable representations of rasters | |
CN117009411A (zh) | 一种基于点云数据网格化空间存储与索引方法、装置及计算机可读存储介质 | |
CN111414445A (zh) | 一种应用地理信息的地址反解析方法 | |
Vassilakopoulos et al. | External balanced regular (x-BR) trees: new structures for very large spatial databases |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40056493 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |