CN117608476A - 矢量数据分块存储方法、装置、电子设备及介质 - Google Patents
矢量数据分块存储方法、装置、电子设备及介质 Download PDFInfo
- Publication number
- CN117608476A CN117608476A CN202311585935.6A CN202311585935A CN117608476A CN 117608476 A CN117608476 A CN 117608476A CN 202311585935 A CN202311585935 A CN 202311585935A CN 117608476 A CN117608476 A CN 117608476A
- Authority
- CN
- China
- Prior art keywords
- data
- index
- block
- vector data
- vector
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000005192 partition Methods 0.000 claims description 32
- 238000000638 solvent extraction Methods 0.000 claims description 14
- 230000006835 compression Effects 0.000 claims description 8
- 238000007906 compression Methods 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 claims description 8
- 238000013507 mapping Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 6
- 238000010276 construction Methods 0.000 claims description 3
- 230000008520 organization Effects 0.000 claims description 2
- 238000013500 data storage Methods 0.000 abstract description 16
- 238000012545 processing Methods 0.000 abstract description 12
- 238000004364 calculation method Methods 0.000 description 9
- 238000004458 analytical method Methods 0.000 description 6
- 230000000903 blocking effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 235000019580 granularity Nutrition 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012732 spatial analysis Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种矢量数据分块存储方法、装置、电子设备及介质,涉及数据处理技术领域,包括:获取矢量数据,并基于S2编码规则,对矢量数据进行分块,构建分块索引;基于自定义数据结构和分块索引,组织每个数据块的块内数据;将分块数据存储到分布式数据库中。本发明提高了数据存储性能和查询效率。
Description
技术领域
本发明涉及数据处理技术领域,尤其是涉及一种矢量数据分块存储方法、装置、电子设备及介质。
背景技术
随着空间信息技术的发展和自然资源等领域的信息化进程加快,空间数据涉及自然资源、国土空间各个领域,超大规模的矢量空间数据在数据存储和分析计算上面临巨大挑战。矢量数据采用点、线、面等几何对象来表示现实世界中的地理要素,描述其准确的地理位置和形状信息,并支持复杂的拓扑关系和空间分析,通常以结构化方式存储在数据库中。传统的集中式计算、关系型数据库在存储效率、空间索引、读写性能和计算速度等方面均无法满足需求。分布式计算在处理大规模数据集、高并发任务和复杂计算模型的场景表现出巨大潜力。分布式数据库作为底层数据存储和处理引擎,将数据划分成多个片段(分片)并分布在多个节点上,通过分布式架构可以实现数据的并行处理和存储,提供横向的扩展性和高性能。面向分布式计算的数据存储技术在数据分布、共享传输、读取性能、存储效率、计算性能等方面需要有力提升。
但是,空间位置是矢量数据的重要组成部分,也是进行数据检索和分析计算的重要依据,矢量空间数据的分片存储就是将数据切分并添加空间索引的过程。现有技术中常见的有采用网格索引、四叉树索引、Geohash索引用于数据分区中。网格分区将数据的整个空间范围划分为规则的网格单元,网格大小固定,只适于均匀分布的数据,网格大小会影响精度,面对数据分布不均匀、需要精确查询和处理跨边界查询时,索引效率和准确性较低;四叉树相邻的叶子节点可能会存储相似的数据,存在索引冗余,影响查询效率,且需要进行频繁的分割和合并,对于动态数据更新的场景效率较低;Geohash索引将坐标编码为一串字符串,字符串长度影响索引精度,且无法提供均匀的空间分布,存在精度、查询性能和跨边界查询等方面的缺点。
另外,数据的存储结构通常会定义相应的空间索引和查询算法,以实现高效的空间查询操作。现有技术中,数据通常采用按行存储或按列存储两种方式。按行存储适合于需要读取一整行数据的查询,按列存储适合于需要对数据进行聚合操作或只读取某些属性的查询。按行或按列的数据存储方式在数据检索时,要结合相应的索引结构,映射行号或列号,并连续读取该行或改列的数据进行过滤和排序,检索量大。且对于空间数据,由于复杂的空间拓扑和几何计算,传统的关系型数据库需要进行大量的表连接和计算,导致查询速度下降。
综上所述,现有的矢量数据存储方法存储性能和查询效率较低。
发明内容
有鉴于此,本发明的目的在于提供一种矢量数据分块存储方法、装置、电子设备及介质,以提高了数据存储性能和查询效率。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供了一种矢量数据分块存储方法,包括:获取矢量数据,并基于S2编码规则,对矢量数据进行分块,构建分块索引;基于自定义数据结构和分块索引,组织每个数据块的块内数据;将分块数据存储到分布式数据库中。
在一种实施方式中,基于S2编码规则,对矢量数据进行分块,构建分块索引,包括:获取矢量数据的最大经度、最小经度、最大维度和最小维度,得到矢量数据的边界框范围;基于边界框范围确定矢量数据的分块层级和分块大小;将矢量数据进行坐标映射,并生成矢量数据对应的S2 Key;基于分块层级和分块大小对矢量数据进行分块,得到多个数据块,并基于S2 Key生成每个数据块的分块索引。
在一种实施方式中,自定义数据结构包括:头部文件、纲要、索引、属性数据、空间位置数据;头部文件用于提供使用数据结构所需的基本信息,至少包括:魔数、版本、列数、要素数、各个分区长度;纲要用于描述数据结构,至少包括每列的名称、长度和类型;索引至少包括:空间索引、Bbox索引和属性索引;空间索引是用于加速空间数据查询的索引,依据数据块中的空间列,采用R-tree索引结构;Bbox索引是矢量数据索引,通过使用轴对齐的边界框表示和组织空间对象;属性索引是基于属性值的数据结构索引,依据数据块中的属性数据,采用B-tree索引结构;属性数据通过属性列按行的形式进行存储;空间位置数据通过空间列按列的形式进行存储。
在一种实施方式中,将分块数据存储到分布式数据库中,包括:采用不同的压缩编码技术分别对按行存储的属性数据和按列存储的空间位置数据进行压缩;将压缩后的数据块通过数据库驱动分散的存储到分布式数据库的不同节点上。
在一种实施方式中,将分块数据存储到分布式数据库中之后,还包括:基于分块索引,读取矢量数据。
在一种实施方式中,基于分块索引,读取矢量数据,包括:获取数据请求,并基于分块索引确定数据请求所需的矢量数据所在的数据块和存储节点;在存储节点,基于自定义数据结构提取数据的索引信息,并基于索引信息查询数据请求所需的矢量数据所在的存储位置;基于数据请求所需的矢量数据所在的数据块的头部文件解析得到数据结构,并基于数据结构按照预设的格式和顺序读取所需的数据字段。
第二方面,本发明实施例提供了一种矢量数据分块存储装置,包括:索引构建模块,用于获取矢量数据,并基于S2编码规则,对矢量数据进行分块,构建分块索引;组织块内数据模块,用于基于自定义数据结构和分块索引,组织每个数据块的块内数据;分块存储模块,用于将分块数据存储到分布式数据库中。
在一种实施方式中,索引构建模块,还用于:获取矢量数据的最大经度、最小经度、最大维度和最小维度,得到矢量数据的边界框范围;基于边界框范围确定矢量数据的分块层级和分块大小;将矢量数据进行坐标映射,并生成矢量数据对应的S2 Key;基于分块层级和分块大小对矢量数据进行分块,得到多个数据块,并基于S2 Key生成每个数据块的分块索引。
第三方面,本发明实施例提供了一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的计算机可执行指令,处理器执行计算机可执行指令以实现上述第一方面提供的任一项的方法的步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述第一方面提供的任一项的方法的步骤。
本发明实施例带来了以下有益效果:
本发明实施例提供了一种矢量数据分块存储方法、装置、电子设备及介质,首先,获取矢量数据,并基于S2编码规则,对矢量数据进行分块,构建分块索引;然后,基于自定义数据结构和分块索引,组织每个数据块的块内数据;然后,采用不同的压缩编码技术分别对按行存储的属性数据和按列存储的空间位置数据进行压缩;最后,将分块数据存储到分布式数据库中。上述方法将S2编码规则用于大规模矢量数据分块和索引,数据分块后更符合空间数据的分布式存储要求,可以按策略均衡的存储在分布式数据库多个节点上。相对于传统的关系型数据库,有效地利用了分布式架构的可扩展性,大幅度提升了数据读写能力,减少了存储空间以及提高了数据存储性能和查询效率,突破的了传统关系型数据库不可扩展造成的性能瓶颈;相对于其他矢量数据分布式存储方式,其数据分片方式更为均衡,压缩方式更为合理,有效的避免了数据倾斜,减少了存储空间占用,提升了数据存储和查询性能。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种矢量数据分块存储方法的流程图;
图2为本发明实施例提供的一种自定义数据结构的示意图;
图3为本发明实施例提供的一种基于S2编码的面向分布式计算矢量数据分块存储方法的流程图;
图4为本发明实施例提供的一种矢量数据分块存储装置的结构示意图;
图5为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,现有的矢量数据存储方法存储性能和查询效率较低。基于此,本发明实施例提供的一种矢量数据分块存储方法、装置、电子设备及介质,以提高了数据存储性能和查询效率。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种矢量数据分块存储方法进行详细介绍,该方法可以由电子设备执行,诸如智能手机、电脑、平板电脑等。参见图1所示的一种矢量数据分块存储方法的流程图,示意出该方法主要包括以下步骤S101至步骤S103:
步骤S101:获取矢量数据,并基于S2编码规则,对矢量数据进行分块,构建分块索引。
S2编码是一种公开的空间位置索引算法,将二维空间数据映射为一维的编码形式,主要用于空间位置索引。S2算法可以将地球表面上所有的点都投影到外切正方体的6个正方形面上,正方形逐渐细分为更小的正方形子网格,形成不同层级的网格。每个正方形子网格都通过一个唯一的编号来表示它的位置和层级,且编码长度固定。对于大规模的矢量数据集,S2编码可以更方便地进行空间计算和索引,减少存储空间和提高查询性能。本发明实施例中,可以采用S2编码规则,对矢量数据进行分块,构建分块索引。
步骤S102:基于自定义数据结构和分块索引,组织每个数据块的块内数据。
在一种实施方式中,可以自定义数据结构,并按照数据结构组织数据块内的数据。
步骤S103:将分块数据存储到分布式数据库中。
在一种实施方式中,分布式系统可以根据数据的属性特点和负载情况进行动态的分块存储策略调整,以实现更好的数据管理和负载均衡效果,具有高扩展性、高可靠性和高性能的特点。本实施例中,在进行数据分块之后,可以将分块数据存储到分布式数据库中的不同节点上。
本发明实施例提供的上述矢量数据分块存储方法,将S2编码规则用于大规模矢量数据分块和索引,数据分块后更符合分布式存储要求,可以按策略分散的存储在分布式数据库多个节点上,相对于传统的关系型数据库,有效提升了数据读写能力,减少了存储空间以及提高了数据存储性能和查询效率。
在一种实施方式中,对于前述步骤S101,即在基于S2编码规则,对矢量数据进行分块,构建分块索引时,主要包括以下步骤1至步骤4:
步骤1:获取矢量数据的最大经度、最小经度、最大维度和最小维度,得到矢量数据的边界框范围。
在具体实施时,确定矢量数据的边界框,获取矢量数据的最小经度、最小纬度、最大经度和最大纬度,得到矢量数据的边界框范围。
步骤2:基于边界框范围确定矢量数据的分块层级和分块大小。
S2编码使用了一个全球分层的网格系统,每个级别对应一个特定的网格精度,层级越高,分块越小,精度越高,能够提供更为精确的空间查询能力。在具体实施时,可以根据实际的应用需求和数据特点进行调整,确定合适的分块层级和分块大小,以便在保证性能的同时提供满足要求的空间查询能力。
在不确定数据需求的情况下,可以采取两种方式确定分块层级和分块大小,一是根据数据范围自适应,自动计算分块层级;二是定义多个不同的分块层级,在不同层级上生成对应的分块索引,这种方式可以提供不同粒度的分块,以满足不同的应用需求。
步骤3:将矢量数据进行坐标映射,并生成矢量数据对应的S2 Key。
在具体实施时,坐标映射主要包括:(1)将矢量数据的经纬度进行球面坐标转换;(2)将转换后的坐标投影到外切正方体上;(3)对球面矩形投影进行修正;(4)将点与坐标轴点进行相互转换;(5)将坐标轴点映射到希尔伯特曲线上。
在对矢量数据进行坐标转换后,对于每个数据对象或位置点,根据其对应的经纬度坐标,计算出对应的S2 Key。Key由层级(level)和ID(id)组成,其中,level表示相对于初始全球覆盖级别的层级数,id表示在该层级中的正方形区域的唯一标识,S2编码中的每个层级每个分块都具有一个唯一的Key。
步骤4:基于分块层级和分块大小对矢量数据进行分块,得到多个数据块,并基于S2 Key生成每个数据块的分块索引。
在具体实施时,在确定的层级范围内,根据层级和网格范围(即根据分块大小划分的网格)对矢量数据进行分块,将网格边界内的所有数据划分到一个数据块中,并结合S2Key生成对应的分块索引。
在一种实施方式中,参见图2所示,自定义数据结构包括:头部文件、纲要、索引、属性数据、空间位置数据。
其中,头部文件用于提供使用数据结构所需的基本信息,至少包括:魔数、版本、列数、要素数、各个分区长度,使得读取程序可以通过解析头部文件自动了解数据结构并按照规定方式解析和处理数据。
头部文件的结构和内容可以在数据文件的不同版本之间保持一致,从而实现数据格式的兼容性。通过在头部文件中定义一定的扩展字段,可以在不影响已有数据的情况下轻松拓展数据结构,使系统具备一定的可扩展性。头部文件中可以包含一些元数据,例如数据创建时间、数据来源等信息,利于对数据的跟踪和管理。
纲要用于描述数据结构,至少包括每列的名称、长度和类型。具体的,纲要为数据结构的概要性描述,提供每列的名称、类型、长度等信息。
索引至少包括:空间索引、Bbox索引和属性索引,不同的索引方式结合使用,能够提高对矢量数据的查询效率。
空间索引是用于加速空间数据查询的索引,依据数据块中的空间列,采用R-tree索引结构,支持高效的空间查询,例如范围查询(根据坐标范围查找对象)、最近邻查询(查找与给定对象最近的对象)和空间连接查询(查找空间上相交的对象)等。
Bbox索引是矢量数据索引,通过使用轴对齐的边界框(Bounding Box)表示和组织空间对象,每个对象用其边界框包围起来,形成一个包围盒。通过在包围盒上构建索引,可以快速进行空间查询,尤其适合处理范围查询。
属性索引是基于属性值的数据结构索引,依据数据块中的属性数据,采用B-tree索引结构,通过属性值快速检索到相关对象,适用于根据属性条件查询。
属性数据通过属性列按行的形式进行存储;空间位置数据通过空间列按列的形式进行存储。
具体的,属性列:存储矢量数据的属性值,按行的形式进行存储。每个矢量数据要素为一行,包含了该矢量要素的所有属性,便于进行属性索引。
空间列:矢量数据的几何属性、空间位置单独按列的形式进行存储,便于进行空间索引。
对于前述步骤S103,即在将分块数据存储到分布式数据库中时,可以采用包括但不限于以下方式:首先,采用不同的压缩编码技术分别对按行存储的属性数据和按列存储的空间位置数据进行压缩;然后,将压缩后的数据块通过数据库驱动分散的存储到分布式数据库的不同节点上。
在具体实施时,首先,利用压缩编码对分块数据进行压缩,使数据以序列化二进制的方式进行存储,提升存储效率;具体的可以根据数据结构选择不同的编码技术分别对行存储数据和列存储数据进行压缩,使存储结构更为紧凑;然后,将压缩后的数据块通过数据库驱动分散的存储在分布式数据库不同节点上。每个存储节点负责管理一部分数据块,并提供对这些数据的读写操作。
进一步,在将数据快的分块数据存储到分布式数据库中之后,上述方法还包括:基于分块索引,读取矢量数据。在分布式计算中,可以采用存算解耦的方式,根据计算任务的数据需求向存储节点发送数据请求,通过多级索引定位数据存储位置,按照自定义数据结构解析并读取目标数据。具体可以采用包括但不限于以下方式:
首先,获取数据请求,并基于分块索引确定数据请求所需的矢量数据所在的数据块和存储节点。
在具体实施时,根据计算任务或用户发起的数据请求,通过分块索引Key查询,直接定位至包含所需数据的数据块和存储节点。
然后,在存储节点,基于自定义数据结构提取数据的索引信息,并基于索引信息查询数据请求所需的矢量数据所在的存储位置。
在具体实施时,在相应存储节点上并发执行数据查询任务,利用数据结构的自解析功能提取数据的索引信息,并根据查询条件选择相应的空间索引、Bbox索引或属性索引,快速查询所需数据的存储位置。其中,每个存储节点只负责检索自己存储的数据。
最后,基于数据请求所需的矢量数据所在的数据块的头部文件解析得到数据结构,并基于数据结构按照预设的格式和顺序读取所需的数据字段。
在具体实施时,根据数据块的头部文件解析数据结构,按照规定的格式和顺序读取所需数据字段,完成数据的解析和处理,读取的数据经数据库端口通过网络传输给计算节点。
本发明实施例提供的上述方法,与现有技术的方式相比,具有以下至少一种优点:(1)将S2算法用于大规模矢量数据分块和索引,数据分块后更符合空间数据分布式存储要求,可以按策略均衡的存储在分布式数据库多个节点上,相对于传统的关系型数据库,有效提升读写能力;通过Key查询,直接将查询请求发送到包含目标数据的节点,每个节点只负责处理自己存储的数据,并返回查询结果,减少了不必要的网络通信和数据传输。面向分布式计算时,实现任务的均衡分配和高效执行。
(2)S2编码的分块方法相比于其他分块方法,空间划分更加均匀,有效避免数据分布不均匀导致的网格单元过载或过度膨胀,并且提供了层次结构和可变精度,可以实现不同级别的空间索引、聚合和查询,有效提高存储性能、查询效率。另外,S2编码长度固定,不随精度变化而变化,适用于需要高精度和高效索引的空间分析任务。
(3)自定义数据结构,空间位置数据按列存储,属性数据按行存储,同时构建空间索引和属性索引,可对块内数据随机访问,实现按需读取,减少遍历整个数据集的开销,提高查询能力。同时,减少反序列化数据量,避免数据读取过程中产生冗余数据,提高读写性能。
(4)构建多级索引,通过S2编码实现空间单元的数据分块和空间索引,并设计块内的空间索引和属性索引结构,增加二级索引,提升精细数据的查询效率,且空间索引更加适用于对矢量空间数据的检索。尤其是空间叠加分析计算时,可快速读取计算范围的矢量数据,避免大范围、多数据参与计算,极大的降低了计算量,最大可能地保证计算性能。
(5)数据存储方式采用按行和按列相结合的方式,按行存储(属性数据)和按列存储(空间数据)可以分别采取不同的压缩方式,有效压缩数据大小,使结构更为紧凑,提升存储效率。
(6)数据结构中头部文件的自描述信息可以帮助程序解析数据,直接读取所需部分,提高读取性能。
为了便于理解,本发明实施例还提供了一种基于S2编码的面向分布式计算矢量数据分块存储方法,参见图3所示,主要包括以下步骤1至步骤4:
步骤1:按S2编码对矢量数据进行分块。
步骤2:自定义数据结构,并按结构组织块内数据。
步骤3:分块数据存储至分布数据库中。
步骤4:按需读取数据,用于分布式计算。
需要说明的是,本实施例提供的矢量数据分块存储方法,其实现原理及产生的技术效果和前述方法实施例相同,在此不再赘述。
对于前述实施例提供的矢量数据分块存储方法,本发明实施例还提供了一种矢量数据分块存储装置,参见图4所示的一种矢量数据分块存储装置的结构示意图,示意出该装置主要包括以下部分:
索引构建模块401,用于获取矢量数据,并基于S2编码规则,对矢量数据进行分块,构建分块索引;
组织块内数据模块402,用于基于自定义数据结构和分块索引,组织每个数据块内的数据;
分块存储模块403,用于将分块数据存储到分布式数据库中。
本发明实施例提供的上述矢量数据分块存储装置,将S2编码规则用于大规模矢量数据分块和索引,数据分块后更符合分布式存储要求,可以按策略分散的存储在分布式数据库多个节点上,相对于传统的关系型数据库,有效提升了数据读写能力,减少了存储空间以及提高了数据存储性能和查询效率。
在一种实施方式中,上述索引构建模块401进一步还用于:获取矢量数据的最大经度、最小经度、最大维度和最小维度,得到矢量数据的边界框范围;基于边界框范围确定矢量数据的分块层级和分块大小;将矢量数据进行坐标映射,并生成矢量数据对应的S2 Key;基于分块层级和分块大小对矢量数据进行分块,得到多个数据块,并基于S2 Key生成每个数据块的分块索引。
在一种实施方式中,上述分块存储模块403进一步还用于:采用压缩编码对数据块的分块数据进行压缩;将压缩后的数据块通过数据库驱动分散的存储到分布式数据库的不同节点上。
在一种实施方式中,上述装置还包括数据读取模块,用于:基于分块索引,读取矢量数据。
在一种实施方式中,上述数据读取模块进一步还用于:获取数据请求,并基于分块索引确定数据请求所需的矢量数据所在的数据块和存储节点;在存储节点,基于自定义数据结构提取数据的索引信息,并基于索引信息查询数据请求所需的矢量数据所在的存储位置;基于数据请求所需的矢量数据所在的数据块的头部文件解析得到数据结构,并基于数据结构按照预设的格式和顺序读取所需的数据字段。
需要说明的是,本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
本发明实施例还提供了一种电子设备,具体的,该电子设备包括处理器和存储装置;存储装置上存储有计算机程序,计算机程序在被处理器运行时执行如上实施方式的任一项所述的方法。
图5为本发明实施例提供的一种电子设备的结构示意图,该电子设备100包括:处理器50,存储器51,总线52和通信接口53,所述处理器50、通信接口53和存储器51通过总线52连接;处理器50用于执行存储器51中存储的可执行模块,例如计算机程序。
其中,存储器51可能包含高速随机存取存储器(RAM,Random Acc ess Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口53(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线52可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器51用于存储程序,所述处理器50在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器50中,或者由处理器50实现。
处理器50可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器50中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器50可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器51,处理器50读取存储器51中的信息,结合其硬件完成上述方法的步骤。
本发明实施例所提供的可读存储介质的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见前述方法实施例,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (8)
1.一种矢量数据分块存储方法,其特征在于,包括:
获取矢量数据,并基于S2编码规则,对所述矢量数据进行分块,构建分块索引;
基于自定义数据结构和所述分块索引,组织每个数据块的块内数据;
将分块数据存储到分布式数据库中。
2.根据权利要求1所述的方法,其特征在于,基于S2编码规则,对所述矢量数据进行分块,构建分块索引,包括:
获取所述矢量数据的最大经度、最小经度、最大维度和最小维度,得到所述矢量数据的边界框范围;
基于所述边界框范围确定所述矢量数据的分块层级和分块大小;
将所述矢量数据进行坐标映射,并生成所述矢量数据对应的S2 Key;
基于所述分块层级和所述分块大小对所述矢量数据进行分块,得到多个数据块,并基于所述S2 Key生成每个所述数据块的分块索引。
3.根据权利要求1所述的方法,其特征在于,所述自定义数据结构包括:头部文件、纲要、索引、属性数据、空间位置数据;
所述头部文件用于提供使用数据结构所需的基本信息,至少包括:魔数、版本、列数、要素数、各个分区长度;
所述纲要用于描述数据结构,至少包括每列的名称、长度和类型;
所述索引至少包括:空间索引、Bbox索引和属性索引;所述空间索引是用于加速空间数据查询的索引,依据所述数据块中的空间列,采用R-tree索引结构;所述Bbox索引是矢量数据索引,通过使用轴对齐的边界框表示和组织空间对象;所述属性索引是基于属性值的数据结构索引,依据所述数据块中的属性数据,采用B-tree索引结构;
所述属性数据通过属性列按行的形式进行存储;
所述空间位置数据通过空间列按列的形式进行存储。
4.根据权利要求1所述的方法,其特征在于,将分块数据存储到分布式数据库中,包括:
采用不同的压缩编码技术分别对按行存储的属性数据和按列存储的空间位置数据进行压缩;
将压缩后的数据块通过数据库驱动分散的存储到分布式数据库的不同节点上。
5.一种矢量数据分块存储装置,其特征在于,包括:
索引构建模块,用于获取矢量数据,并基于S2编码规则,对所述矢量数据进行分块,构建分块索引;
组织块内数据模块,用于基于自定义数据结构和所述分块索引,组织每个数据块的块内数据;
分块存储模块,用于将分块数据存储到分布式数据库中。
6.根据权利要求5所述的装置,其特征在于,所述索引构建模块,还用于:
获取所述矢量数据的最大经度、最小经度、最大维度和最小维度,得到所述矢量数据的边界框范围;
基于所述边界框范围确定所述矢量数据的分块层级和分块大小;
将所述矢量数据进行坐标映射,并生成所述矢量数据对应的S2 Key;
基于所述分块层级和所述分块大小对所述矢量数据进行分块,得到多个数据块,并基于所述S2 Key生成每个所述数据块的分块索引。
7.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现权利要求1至4任一项所述的方法的步骤。
8.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行上述权利要求1至4任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311585935.6A CN117608476A (zh) | 2023-11-24 | 2023-11-24 | 矢量数据分块存储方法、装置、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311585935.6A CN117608476A (zh) | 2023-11-24 | 2023-11-24 | 矢量数据分块存储方法、装置、电子设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117608476A true CN117608476A (zh) | 2024-02-27 |
Family
ID=89952885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311585935.6A Pending CN117608476A (zh) | 2023-11-24 | 2023-11-24 | 矢量数据分块存储方法、装置、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117608476A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117931095A (zh) * | 2024-03-21 | 2024-04-26 | 腾讯科技(深圳)有限公司 | 地图数据存储方法、装置、电子设备和存储介质 |
-
2023
- 2023-11-24 CN CN202311585935.6A patent/CN117608476A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117931095A (zh) * | 2024-03-21 | 2024-04-26 | 腾讯科技(深圳)有限公司 | 地图数据存储方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11132388B2 (en) | Efficient spatial queries in large data tables | |
Van Oosterom et al. | Massive point cloud data management: Design, implementation and execution of a point cloud benchmark | |
US11520760B2 (en) | System and method for providing bottom-up aggregation in a multidimensional database environment | |
US11188738B2 (en) | System and method associated with progressive spatial analysis of prodigious 3D data including complex structures | |
Mostak | An overview of MapD (massively parallel database) | |
CN117608476A (zh) | 矢量数据分块存储方法、装置、电子设备及介质 | |
Jing et al. | An improved distributed storage and query for remote sensing data | |
CN111221813B (zh) | 数据库索引以及数据库查询的处理方法、装置及设备 | |
Su et al. | Indexing and parallel query processing support for visualizing climate datasets | |
Pandey et al. | How good are modern spatial libraries? | |
Hu et al. | A hierarchical indexing strategy for optimizing Apache Spark with HDFS to efficiently query big geospatial raster data | |
Nguyen et al. | Spatio-semantic comparison of large 3D city models in CityGML using a graph database | |
Zhang et al. | Efficient parallel zonal statistics on large-scale global biodiversity data on gpus | |
CN115905630A (zh) | 一种图数据库查询方法、装置、设备及存储介质 | |
Liu et al. | HistSFC: Optimization for nD massive spatial points querying | |
Kvet et al. | Relational pre-indexing layer supervised by the DB_index_consolidator Background Process | |
Corral et al. | Algorithms for joining R-trees and linear region quadtrees | |
Kim et al. | Utilizing extended geocodes for handling massive three-dimensional point cloud data | |
Zhong et al. | Elastic and effective spatio-temporal query processing scheme on hadoop | |
Wang et al. | HBase storage schemas for massive spatial vector data | |
CN110945499B (zh) | 应用维度混洗变换的实时三维空间搜索与点云配准的方法与系统 | |
Rueda-Ruiz et al. | SPSLiDAR: towards a multi-purpose repository for large scale LiDAR datasets | |
Yang et al. | Workload-based ordering of multi-dimensional data | |
Yang et al. | GridMesa: A NoSQL-based big spatial data management system with an adaptive grid approximation model | |
Wang et al. | GLIN: a lightweight learned indexing mechanism for complex geometries |
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 |