面向巨量遥感数据的分布式存储方法、装置及介质转让专利

申请号 : CN202111573294.3

文献号 : CN114338718B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杜震洪孙逍遥郝亚楠陈奕君

申请人 : 浙江大学

摘要 :

本发明公开了一种面向巨量遥感数据的分布式存储方法、装置及介质,属于分布式存储领域。本发明通过对巨量遥感数据元数据的数据划分规则进行优化,以包含多个空间要素的数据块作为分片的单位,实现了不同分片节点中遥感数据所需计算量的相对均衡,兼顾巨量遥感数据的分布式存储以及后续遥感数据的海量计算需求。本发明可以提升分布式引擎的稳定性和负载均衡性,对全球综合观测成果的应用具有重大意义。

权利要求 :

1.一种面向巨量遥感数据的分布式存储方法,其特征在于,包括:

S1、分布式数据库集群中的路由节点收到客户端提交的遥感数据写入请求后,读取写入请求中涉及的所有空间要素组成空间要素集;

S2、统计所述空间要素集中所有空间要素的地物面积总大小,并根据预设的数据块总数,计算所述地物面积总大小与所述数据块总数的比值,作为每个数据块的分配面积阈值;

S3、将所述空间要素集中所有空间要素的几何中心点坐标通过空间填充曲线转换为空间编码值,按照空间编码值对所有空间要素进行排序,形成空间要素序列;

S4、将所有空的数据块赋予唯一标志符并按序排列,将所述空间要素序列中的空间要素按序逐个取出并填入当前未填满的第一个数据块中,一个数据块中的空间要素的地物面积总大小超过所述分配面积阈值时视为该数据块已填满,继续对下一个空的数据块进行数据填充,直至所述空间要素序列中的所有空间要素均被取出并填入数据块中;

S5、路由节点将每个数据块的唯一标志符通过哈希算法转化为哈希值,并根据哈希值建立各数据块与分片节点之间的对应关系,并按照该对应关系执行写入操作,将各数据块存储至分片节点所对应物理机硬盘上。

2.如权利要求1所述的面向巨量遥感数据的分布式存储方法,其特征在于,所述空间填充曲线为希尔伯特曲线。

3.如权利要求1所述的面向巨量遥感数据的分布式存储方法,其特征在于,所述空间要素集中的空间要素类型包括影像数据和矢量数据,所述影像数据包括整幅影像和影像瓦片,所述矢量数据包括点要素、线要素和面要素。

4.如权利要求3所述的面向巨量遥感数据的分布式存储方法,其特征在于,所述点要素的几何中心点为该点要素自身。

5.如权利要求1所述的面向巨量遥感数据的分布式存储方法,其特征在于,所述预设的数据块总数为分布式数据库集群中所有分片节点总数的正整数倍。

6.如权利要求1所述的面向巨量遥感数据的分布式存储方法,其特征在于,所述哈希算法为一致性哈希算法。

7.如权利要求1所述的面向巨量遥感数据的分布式存储方法,其特征在于,分布式数据库集群中的每个分片节点中存储有分片节点和物理机硬盘之间的映射关系表,每一块物理机硬盘上具有多个分片节点,且该映射关系表随着硬盘数量的变化实时调整。

8.如权利要求1所述的面向巨量遥感数据的分布式存储方法,其特征在于,每个数据库均基于多副本一致性协议同时存储主备两份,以实现读写分离。

9.一种面向巨量遥感数据的分布式存储装置,其特征在于,包括存储器和处理器;

所述存储器,用于存储计算机程序;

所述处理器,用于当执行所述计算机程序时,实现如权利要求1 8任一所述的面向巨量~遥感数据的分布式存储方法。

10.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,当所述计算机程序被处理器执行时,能实现如权利要求1 8任一所述的面向巨量遥感数据的分~布式存储方法。

说明书 :

面向巨量遥感数据的分布式存储方法、装置及介质

技术领域

[0001] 本发明属于分布式存储技术领域,具体涉及一种面向巨量遥感数据的分布式存储方法、装置及介质。

背景技术

[0002] 遥感数据通常以栅格、矢量等格式进行存储,栅格数据的模型较为简单,但数据量大,因此现有关于栅格数据的研究大多集中于栅格数据的存储和管理。在巨量遥感数据的存储方面,国内外专家学者、研究机构以及商业公司已经开展了许多相关工作。现有的遥感数据存储方式可以主要分为以下五类:基于集中式文件系统的遥感数据存储、基于数据库的遥感数据存储、网络存储、基于分布式文件系统的文件存储和基于分布式数据库的遥感数据存储。
[0003] 基于集中式文件系统的数据存储指遥感数据集中存储于单个服务器上,利用文件系统对遥感数据的文件本体进行存储和管理,集中式文件存储的存储容量和性能几乎完全取决于单台服务器,对硬件性能具有强依赖性,不仅难以提供高读取速度,利用硬件进行数据运算也很困难。
[0004] 通过将关系数据库和地学数据中间件相结合的方式,可以支持大尺寸遥感数据的存储,然而,利用数据库进行遥感数据存储也存在一些问题,例如关系型数据库对单体大文件的支持有限,对于非结构化数据的存储也有很多限制,在数据量上升的情况下性能会有较大幅度的下降。
[0005] 为了解决单台存储设备容量极限的问题,可以通过扩展节点来提升整体的存储集群容量。通过网络对单个节点进行横向串联可以整合一些容量相对较小的节点,成为大型的中心化管理的数据存储服务器。然而,由于单个节点的情况各异,难以对所有节点进行集中管理和维护。
[0006] 分布式文件系统是指经过网络架构,将空间和物理分散的大量计算节点或者存储节点通过逻辑关系关联在一起,形成一种物理分散、逻辑统一、数据通过网络流动的存储关系。但其数据检索不根据遥感数据特点定制,数据访问延迟会随数据存储量的增长而增加,从而导致整体运行速率的下降。
[0007] 分布式数据库架构是一种通过将关系型数据库技术与空间数据中间件相结合,对外提供统一存取接口的空间数据存储形式。然而,由于所有的服务请求都需要经过网络服务器进行处理和二次转发,代理服务器很容易因为过多的网络请求而产生阻塞,从而成为整个系统的性能瓶颈。
[0008] 另外,传统的分布式存储技术仅仅考虑存储和访问的需求,因此其存储时的分片机制主要是针对文件大小负载均衡为基准的。但是对于遥感数据而言,往往还涉及到大量的计算需求,而遥感数据的计算量与文件大小并不存在关联性,由此导致分布式存储的遥感数据在计算过程中出现计算资源的不均衡,导致额外的性能瓶颈。
[0009] 因此,本发明提出了一种面向巨量遥感数据的分布式高效存储方法,构建满足巨量遥感数据组织与计算需求的存储方法。

发明内容

[0010] 本发明的目的在于解决现有技术中存在的问题,并提供一种面向巨量遥感数据的分布式存储方法、装置及介质。
[0011] 本发明所采用的具体技术方案如下:
[0012] 第一方面,本发明提供了一种面向巨量遥感数据的分布式存储方法,其包括:
[0013] S1、分布式数据库集群中的路由节点收到客户端提交的遥感数据写入请求后,读取写入请求中涉及的所有空间要素组成空间要素集;
[0014] S2、统计所述空间要素集中所有空间要素的地物面积总大小,并根据预设的数据块总数,计算所述地物面积总大小与所述数据块总数的比值,作为每个数据块的分配面积阈值;
[0015] S3、将所述空间要素集中所有空间要素的几何中心点坐标通过空间填充曲线转换为空间编码值,按照空间编码值对所有空间要素进行排序,形成空间要素序列;
[0016] S4、将所有空的数据块赋予唯一标志符并按序排列,将所述空间要素序列中的空间要素按序逐个取出并填入当前未填满的第一个数据块中,一个数据块中的空间要素的地物面积总大小超过所述分配面积阈值时视为该数据块已填满,继续对下一个空的数据块进行数据填充,直至所述空间要素序列中的所有空间要素均被取出并填入数据块中;
[0017] S5、路由节点将每个数据块的唯一标志符通过哈希算法转化为哈希值,并根据哈希值建立各数据块与分片节点之间的对应关系,并按照该对应关系执行写入操作,将各数据块存储至分片节点所对应物理机硬盘上。
[0018] 作为上述第一方面的优选,所述空间填充曲线为希尔伯特曲线。
[0019] 作为上述第一方面的优选,所述空间要素集中的空间要素类型包括影像数据和矢量数据,所述影像数据包括整幅影像和影像瓦片,所述矢量数据包括点要素、线要素和面要素。
[0020] 作为上述第一方面的优选,所述点要素的几何中心点为该点要素自身。
[0021] 作为上述第一方面的优选,所述预设的数据块总数为分布式数据库集群中所有分片节点总数的正整数倍。
[0022] 作为上述第一方面的优选,所述哈希算法为一致性哈希算法。
[0023] 作为上述第一方面的优选,分布式数据库集群中的每个分片节点中存储有分片节点和物理机硬盘之间的映射关系表,每一块物理机硬盘上具有多个分片节点,且该映射关系表随着硬盘数量的变化实时调整。
[0024] 作为上述第一方面的优选,每个数据库均基于多副本一致性协议同时存储主备两份,以实现读写分离。
[0025] 第二方面,本发明提供了一种面向巨量遥感数据的分布式存储装置,其包括存储器和处理器;
[0026] 所述存储器,用于存储计算机程序;
[0027] 所述处理器,用于当执行所述计算机程序时,实现如上述第一方面任一方案所述的面向巨量遥感数据的分布式存储方法。
[0028] 第三方面,本发明提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序,当所述计算机程序被处理器执行时,能实现如上述第一方面任一方案所述的面向巨量遥感数据的分布式存储方法。
[0029] 本发明相对于现有技术而言,具有以下有益效果:
[0030] 本发明通过对巨量遥感数据元数据的数据划分规则进行优化,以包含多个空间要素的数据块作为分片的单位,实现了不同分片节点中遥感数据所需计算量的相对均衡。本发明兼顾巨量遥感数据的分布式存储以及后续遥感数据的海量计算需求,不仅满足了异构遥感数据的统一存储,也解决在海量用户下多业务并发访问同一套系统造成的热点数据以及负载不均衡问题。本发明可以提升分布式引擎的稳定性和负载均衡性,对全球综合观测成果的应用具有重大意义。

附图说明

[0031] 图1为面向巨量遥感数据的分布式存储方法的步骤流程图;
[0032] 图2为哈希算法执行分片存储的示意图;
[0033] 图3为分库存储的示意图。

具体实施方式

[0034] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似改进,因此本发明不受下面公开的具体实施例的限制。本发明各个实施例中的技术特征在没有相互冲突的前提下,均可进行相应组合。
[0035] 在本发明的一个较佳实施例中,提供了一种面向巨量遥感数据的分布式存储方法,用于对海量的遥感数据进行分布式存储,具体而言该方法可用于全球综合观测成果的分布式存储。全球综合观测成果具有典型的多源异构特征,包含影像、矢量等多种不同形式的遥感数据。例如,在影像方面,数据来源包括GF1、GF2、HJ、ZY等卫星,而在存储结构方面,不同的采集设备采用的元数据模式亦有所不同,但其结构描述中多包含一定的空间位置信息。因此全球综合观测成果分布式存储模型的基本设计思想是在分布式数据库存储架构的基础上,考虑观测数据的多源异构、空间关系、时间序列等特征,设计支持多结构、高扩展、易实现的分布式存储方法,为全球海量综合观测成果的遥感数据提供基础分布式存储与高效并行查询、计算服务。
[0036] 需说明的是,本发明中所谓的“巨量”,仅用于描述遥感数据的数据量较大,可达到百PB级别,但并不限制其具体的数据大小。
[0037] 在本发明的分布式数据库集群中,包含了路由节点和分片节点,由路由节点负责对剩余的分片节点按照路由机制进行数据分发。路由机制不同于传统存储,并没有集中的元数据管理,元数据服务也不再成为系统的性能瓶颈,通过这种方式可以有效解决存储扩展性的问题。
[0038] 如图1所示,该下面对该面向巨量遥感数据的分布式存储方法的步骤进行详细描述:
[0039] S1、分布式数据库集群中的路由节点收到客户端提交的遥感数据写入请求后,读取写入请求中涉及的所有空间要素组成空间要素集。
[0040] 在本实施例中,每一个遥感数据写入请求中均会指定所需要存储的遥感数据,这些遥感数据可能由不同类型的空间要素组成。其中,空间要素的类型包括影像数据和矢量数据,影像数据既可以是栅格形式的整幅影像,也可以是影像瓦片,具体需要根据指定写入的影像数据类型而定;另外,矢量数据包括点要素、线要素和面要素三类。写入请求中指定的所有空间要素组成了空间要素集,后续路由节点将按照S2~S5的步骤对这个空间要素集进行分片存储。
[0041] S2、统计空间要素集中所有空间要素的地物面积总大小T,并根据预设的数据块总数M,计算地物面积总大小T与数据块总数M的比值V=T/M,作为每个数据块的分配面积阈值。
[0042] 需要说明的是,遥感数据中的每一个空间要素均对应了对地观测时的某一类地物,在其原始数据所携带的字段中也会存储每一个空间要素对应的地物面积大小。因此,本实施例中,可以直接从空间要素的属性字段中读取相应的地物面积大小的字段值,然后将空间要素集中所有空间要素的地物面积加和,即可得到所有空间要素的地物面积总大小T。但特别需要注意的是,此处空间要素的地物面积大小,可以是实际面积值,也可以是一个按缩放比例折算的相对值,当采用相对值时保证所有空间要素的地物面积的缩放比例一致即可。
[0043] S3、针对前述空间要素集中每一个空间要素,分别确定其几何中心点坐标,然后将空间要素集中所有空间要素的几何中心点坐标通过空间填充曲线转换为空间编码值,按照空间编码值对所有空间要素进行排序,形成空间要素序列O。
[0044] 在本实施例中,由于空间要素具有遥感影像和矢量数据两类,其几何中心点需要针对类型来确定。对于包含四至位置信息的影像数据,采用四至范围的中心点作为几何中心点即可;对于点要素,如全球GPS数据,可将每个点自身作为其几何中心点;对于线要素或者面要素,则确定要素的中心点作为几何中心点即可。确定空间要素的几何中心点后,空间编码方面可采用皮亚诺(Peano)、希尔伯特(Hilbert)等空间填充曲线,优选采用Hilbert曲线来实现。
[0045] S4、前述M个数据块预先进行初始化置空,将所有空的数据块赋予唯一标志符并按序排列,将前述空间要素序列O中的空间要素按序逐个取出并填入当前未填满的第一个数据块中,一个数据块中的空间要素的地物面积总大小超过分配面积阈值V时视为该数据块已填满,继续对下一个空的数据块进行数据填充,直至空间要素序列O中的所有空间要素均被取出并填入M个数据块中。
[0046] 为了便于均衡地分配,预设的数据块总数M推荐为分布式数据库集群中所有分片节点总数的正整数倍,例如一共有10个分片节点,则可以设置M为分片节点数量的三倍,即M=30。
[0047] 需要注意的是,前述的分配面积阈值V并非是一个数据块所能够存储的要素的最大面积,而是一个预估的平均值。在本步骤执行的过程中,M个数据块在初始化时可以初始化设定其中空间要素的地物面积总和Si为0,在空间要素逐个填入数据块后Si随之增大,当Si超过V值时,停止对这个数据块的填充。因此,一个数据块中最终的地物面积总和Si是略大于V的。
[0048] 另外,需要注意的是,空间要素序列O中的空间要素按序逐个取出并填满M个数据块的。换一种形式也就是说,在空间要素序列O中,如果前n1个空间要素的地物面积之和大于V但前n1‑1个空间要素的地物面积之和不大于V,则前n个空间要素从空间要素序列O中取出并填入第1个数据块;前n1个空间要素取出后的剩余空间要素序列O中,如果前n2个空间要素的地物面积之和大于V但前n2‑1个空间要素的地物面积之和不大于V,则再将这前n2个空间要素从空间要素序列O中取出并填入第2个数据块;以次类推……,直至所有的空间要素都被取出,最后一个数据块中的地物面积之和可能未超过V。
[0049] 本发明中,以地物面积来作为数据块分块依据,主要是为了顾及遥感数据的计算需求。因为遥感数据实际对应的是对地观测中的地物,因此在对遥感数据进行计算时,其计算量往往与对应的地物面积有关系,地物面积越大所需的计算资源也越大。经过本发明上述S4的划分规则,所有待写入的空间要素都被划分成了数据块,每一个数据块中空间要素的地物面积之和是基本均匀的,由此可以保证其在分布式存储后,后续每一个节点的计算资源消耗也相对均衡。
[0050] S5、当完成数据块的划分后,路由节点将每个数据块的唯一标志符通过哈希算法转化为哈希值,并根据哈希值建立各数据块与分片节点之间的对应关系,并按照该对应关系执行写入操作,将各数据块存储至分片节点所对应物理机硬盘上。
[0051] 在本发明的分布式存储中,哈希算法可以是硬哈希算法,也可以是一致性哈希算法。在本实施例中,为了便于实现分布式存储节点的动态调整,推荐采用一致性哈希算法。一致性哈希算法可以实现数据块在分片节点上均衡分配,其具体过程属于现有技术。为了便于理解,下面对一致性哈希算法的过程简单叙述如下:首先,求出各分片节点的哈希值,并将其配置到哈希环;然后采用同样的方法求出每一个数据块的主键的哈希值,并映射到相同的哈希环上;最后从数据块映射到的位置开始顺时针查找,将数据块存储到找到的第一个分片节点上,由此建立每一个数据块与待存储的分片节点之间的对应关系,后续通过分片节点与物理硬盘之间映射进行存储,由此将根据主键Key i将数据Value i写入硬盘,如图2所示。
[0052] 另外,巨量遥感数据的存储还需要解决存储层的扩展性问题,存储层可采用分布式哈希表(Distribute Hash Table,DHT)路由算法,每个存储节点负责存储小部分数据,基于SDHT实现整个系统数据的寻址和存储。在具体实现时,存储层可以将哈希空间划分为N等份,每等份为1个分区节点(Partition),对这N等份按照硬盘数量进行均分。例如系统N默认为3600,假设当前系统有50块硬盘,则每块硬盘承载72个分区。在系统初始化时会建立上述的分片节点和物理机硬盘之间的映射关系表,而且该映射关系后续会随着系统中硬盘数量的变化进行实时调整。该映射表所需要的空间很小,分布式数据库集群中中的每个分片节点中存储有分片节点和物理机硬盘之间的映射关系表用于快速路由。路由机制不同于传统存储,并没有集中的元数据管理,元数据服务也不再成为系统的性能瓶颈,通过这种方式可以有效解决存储扩展性的问题。
[0053] 另外,遥感数据具有多源异构的典型特点,因此为了满足异构元数据的统一存储,还需要设计结构灵活的数据存储与组织结构。考虑到当前对于元数据统一交换多采用XML、JSON等可扩展的数据描述模式,因此在分布式元数据库中亦采用这种结构灵活的数据模型对全球综合观测成果的元数据进行描述,并采用二进制流进行物理存储。
[0054] 另外,为了保证遥感数据分布式存储的可靠性,还需对分布式数据库的组织架构进行设计。作为本发明的一种优选实现形式,每个数据库均需要基于多副本一致性协议同时存储主备两份,存储于不同的分库中。如图3所示,其中主数据库(M)用于提供元数据写入服务,而从数据库(S)主要用于提供元数据的读取服务,以此实现数据访问时的读写分离,提高系统的并发服务能力。
[0055] 由此,上述S1~S5所述的面向巨量遥感数据的分布式存储方法,可以将多源异构的遥感数据进行均衡、可靠地分布式存储,而且其能够兼顾后续遥感数据的海量计算需求,平衡不同分片节点上存储的数据所需的计算资源。当客户端需要访问数据时,依据查询条件及路由规则,计算查询结果所在的分片节点即可。
[0056] 需要说明的是,根据本发明公开的实施例,上述存储器中的具体实现各步骤的功能可以通过编写的计算机软件程序来实现,计算机程序中包含用于执行相应方法的程序代码。由此,与前述的分布式存储方法对应,本发明还可以进一步提供对应的分布式存储装置以及存储前述程序代码的介质。
[0057] 在本发明的另一实施例中,还提供了一种面向巨量遥感数据的分布式存储装置,其包括存储器和处理器;
[0058] 所述存储器,用于存储计算机程序;
[0059] 所述处理器,用于当执行所述计算机程序时,实现如上述S1~S5所述的面向巨量遥感数据的分布式存储方法。
[0060] 在本发明的另一实施例中,还提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,当所述计算机程序被处理器执行时,能实现如上述S1~S5所述的面向巨量遥感数据的分布式存储方法。
[0061] 需要注意的是,上述的存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non‑Volatile Memory,NVM),例如至少一个磁盘存储器。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field‑Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。当然,还装置中还应当具有实现程序运行的必要组件,例如电源、通信总线等等。
[0062] 以上所述的实施例只是本发明的一种较佳的方案,然其并非用以限制本发明。有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型。因此凡采取等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。