一种基于空间关联的分布式数据装置、方法及系统的制作方法

文档序号:6546740阅读:228来源:国知局
一种基于空间关联的分布式数据装置、方法及系统的制作方法
【专利摘要】本发明涉及数据系统【技术领域】,具体的讲是一种基于空间关联的分布式数据装置、方法及系统。其中,存储方法包括将具有空间特性的数据划分为多个网格,所述网格具有该网格所在空间中的数据;根据网格空间位置的关联关系,将所述网格中的数据存储于复数个存储节点。本发明的有益效果在于对于巨量的各种类型空间数据,可以实现高并行度的数据写入和读取,保证按照空间属性分割的数据可以均衡的、保持空间关联的、安全的存储到各个节点,同时,系统具有极大的扩展能力,而且系统扩展与性能是线性相关的,系统不会出现大量闲置节点,或者I/O瓶颈节点,实现了分布式系统设计的初衷。
【专利说明】一种基于空间关联的分布式数据装置、方法及系统
【技术领域】
[0001]本发明涉及数据系统【技术领域】,具体的讲是一种基于空间关联的分布式数据装置、方法及系统。
【背景技术】
[0002]分布式数据系统经过多年发展,目前已经成为海量数据高效率、高可用性、高性价比存储和应用的重要解决方式,其在推动云计算和大数据应用上具有举足轻重的作用。分布式数据系统的核心思想是分散数据的存储,将数据分割成标准的子集,使用多节点存储数据的各个子集,并将数据子集的位置信息存储到主节点。在读取数据时,每个存储节点只负责提供自己的数据子集,由客户端接口组件负责重组各个数据子集,最终提交数据文件或记录。通过数据的分割存储和分散读取,可以大大的降低单一节点的I/o压力,实现多节点的并行读取,整个数据系统的性能将会得到极大提升,能够适应现今数据急剧增长和应用需求不断提高的挑战。
[0003]现有技术中实现的分布式数据系统主要的处理对象是数据文件或数据记录,本质上仍然是一种文件系统或者数据库存储系统的扩展。因此,当前分布式数据系统更多的实现是分布式文件系统,文件作为系统的基本处理单元,形成文件子集分散存储到各个节点。分布式文件系统的数据分割完全是基于物理切分的,数据子集关联的依据是文件中的位置。同时,在分布式文件系统中,数据文件之间是没有属性关联关系的,数据文件及其数据子集的存储位置按照随机规则进行分配。系统对于文件的整体读写具有较好的性能,但是按照数据属性,对文件部分读取或者多文件关联读取时,存储节点很难维持合理的负载均衡,会出现少量节点承担大部分I/o压力,大量节点空闲的情况,极大地影响系统性能。
[0004]现有技术一提供了一种分布式文件系统,例如Hadoop分布式文件系统(HDFS),它被设计成适合运行在通用硬件上的分布式文件系统,HDFS能提供高吞吐量的数据访问,非常适合大规模数据的存储和应用。HDFS以文件为存储单元,将文件按照固定数据块容量(64MB)进行物理分割,采用多拷贝复制方式,将数据块分散存储到存储节点。HDFS主要由一个名字节点和多个数据节点组成,名字节点负责维护文件名检索、确定数据块与数据节点的映射、接受数据读写请求,按照数据流的方式提供数据。
[0005]但是本案发明人发现现有技术一至少存在以下不足:首先HDFS系统是文件系统的分布式实现,其处理主体仍然是各个独立的文件,因而不能称为真正的数据系统;其次,面对具有明显属性关联的数据,如空间、时间、层次等属性的数据类型,HDFS系统无法识别这些属性信息,无法按照属性关联方式分割数据,建立数据块间的关联,造成数据分布的不合理;再次,由于HDFS系统没有按照数据属性分割存储数据,当按照某种属性特征进行数据读取时,无法提供合理的负载均衡,部分节点的I/O压力过大,造成整体性能的下降;最后,HDFS数据访问是基于文件的,无法基于属性特征进行数据访问,无法提供基于属性的数据查询、合并、裁剪等操作,无法按照属性关联读取和重组多个文件的数据。
[0006]现有技术二提供一种GoogleBigTable (BigTable: A Distributed Storage Systemfor Structured Data)的分布式数据库系统,可以实现海量数据记录在成百上千节点的存储。BigTable基于一种Key/Value白勺存储结构,引入了列族(即Column Family)的概念,即一条记录由Key和一个或多个列族组成,存储时按列族存储。每个BigTable的数据表由多个Tablet组成,Tablet是一个数据记录集合的单元,一般限定数据容量为100-200MB,由Tablet Server负责管理Tablet位置信息。BigTable建立了一个B+树的Tablet索引结构,采用Google Chubby服务进行高可用和访问锁控制,用户访问通过Chubby连接到RootTablet,然后定位到具体的Tablet,最后通过Key得到相应的列族。BigTable非常适合巨大数据量的非结构化或半结构化数据的存储,可以提供较好的分布式并行读写性能。
[0007]但是本案发明人发现现有技术二至少存在以下不足:首先BigTable的Key/Value结构只具有单一的关键字,而且一般为字符串,无法用于具有多维属性结构的关键字描述,例如具有空间位置、时间属性和层次属性的空间数据;其次BigTable存储数据是按照到达顺序或者随机方式进行分配的,以此形成不同的Tablet,会造成空间关联数据存储的不合理,数据访问会频繁的指向一个Tablet,从而失去分布式系统的优势;再次,BigTable的数据记录通过Key是无法判断属性关联的,例如空间相邻、时间顺序、层次关系等,因而在数据查询读取时,无法按照属性特征进行任务分配和处理,造成系统性能的不均衡。

【发明内容】

[0008]本发明正是考虑到当前分布式文件系统的缺陷和不足,针对具有空间属性的数据类型,设计和实现了一种基于空间关联的分布式数据装置、方法及系统。整个数据系统将不存在文件概念,系统使用标准空间参数建立不同的数据空间,输入数据按照匹配的数据空间进行网格化分割,通过网格散列计算得到分布序列编码,以此编码为依据将网格化的数据块存储到分布节点中。这个分布式系统将成为一个真正的面向数据的系统,而不是简单的文件系统,系统中的数据和数据块完全依据自身的空间属性进行分割和分布,数据读取可以涉及到数据空间的任意区域,系统自动的按照空间范围拼接和裁剪数据,形成最终结果,以数据流或者文件的方式提供。
[0009]本发明实施例提供了一种基于空间关联的分布式数据存储方法,包括,
[0010]将具有空间特性的数据划分为多个网格,所述网格具有该网格所在空间的数据;
[0011]根据网格空间位置的关联关系,将所述网格中的数据存储于复数个存储节点。
[0012]根据本发明实施例所述一种基于空间关联的分布式数据存储方法的一个进一步的方面,所述空间特性的数据包括一维空间数据,二维空间数据,三维空间数据或者多维空间数据。
[0013]根据本发明实施例所述一种基于空间关联的分布式数据存储方法的再一个进一步的方面,数据空间作为具有相同空间属性数据的容器,由多个范围一致的空间网格组成,所述每个网格均具有时间轴,按照时间片的方式存储不同时段内的数据,在每个时间片内还包括至少一个物理层,数据按照物理层分为多个数据块。
[0014]根据本发明实施例所述一种基于空间关联的分布式数据存储方法的另一个进一步的方面,根据网格空间位置的关联关系将所述网格中的数据存储于复数个存储节点中进一步包括,将空间位置距离近的数据存储于分散的存储节点中。
[0015]根据本发明实施例所述一种基于空间关联的分布式数据存储方法的另一个进一步的方面,所述根据网格的空间位置将所述网格中的数据存储于复数个存储节点之前还包括,将所述多个网格进行从维度空间到一维序列的转换,得到能够体现网格之间空间关系的序列编码。
[0016]根据本发明实施例所述一种基于空间关联的分布式数据存储方法的另一个进一步的方面,所述将所述多个网格进行从维度空间到一维序列的转换方法进一步包括希尔伯特曲线、行序曲线或Z序曲线。
[0017]根据本发明实施例所述一种基于空间关联的分布式数据存储方法的另一个进一步的方面,在得到能够体现网格之间空间关系的序列编码之后还包括,将所述序列编码与存储节点做映射,根据所述映射将空间位置距离近的数据存储于分散的存储节点中。
[0018]本发明实施例还提供了一种基于空间关联的分布式数据并行读取方法,包括,
[0019]根据读取具有空间特性数据的读取请求,确定覆盖所述读取请求的网格;
[0020]根据所述覆盖的网格,确定存储所述网格中数据的存储节点;
[0021 ] 从所述确定的存储节点并行读取请求的数据。
[0022]根据本发明实施例所述一种基于空间关联的分布式数据并行读取方法的一个进一步的方面,在从所述确定的存储节点获取所述读取请求的数据之后还包括,根据所述读取请求中的空间范围对所述覆盖网格的数据进行拼接裁剪,获得精确的读取请求的数据。
[0023]本发明实施例还提供了一种基于空间关联的分布式数据存储装置,包括,
[0024]网格划分单元,用于将具有空间特性的数据分割为多个网格,所述网格具有该网格所在空间的数据;
[0025]存储单元,用于根据网格的关联关系,将所述网格中的数据存储于复数个存储节点。
[0026]根据本发明实施例所述一种基于空间关联的分布式数据存储装置的一个进一步的方面,还包括散列计算单元,连接于所述网格划分单元与所述存储单元之间,用于将所述多个网格进行从维度空间到一维序列的转换,得到能够体现网格之间空间关系的网格编号;还包括映射单元,连接于所述存储单元与散列计算单元之间,用于将所述网格与存储节点做映射。
[0027]根据本发明实施例所述一种基于空间关联的分布式数据存储装置的再一个进一步的方面,所述散列计算单元采用包括希尔伯特曲线、行序曲线或Z序曲线将所述多个网格进行从维度空间到一维序列的转换。
[0028]本发明实施例还提供了一种基于空间关联的分布式数据并行读取装置,包括,请求获取单元,用于根据读取具有空间特性数据的读取请求,确定覆盖所述读取请求的网格;
[0029]处理单元,用于根据所述覆盖的网格,确定存储所述网格中数据的存储节点;
[0030]并行读取单元,用于从所述确定的存储节点并行读取请求的数据。
[0031]根据本发明实施例所述一种基于空间关联的分布式数据读取装置的一个进一步的方面,还包括拼接和剪裁单元,与所述读取单元相连接,用于根据所述读取请求中的空间范围对所述覆盖网格的数据进行拼接裁剪,获得精确的读取请求的数据。
[0032]本发明实施例还提供了一种基于空间关联的分布式数据系统,包括,
[0033]网格划分单元,用于将具有空间特性的数据分割为多个网格,所述网格具有该网格所在空间的数据;
[0034]存储单元,用于根据网格的关联关系,将所述网格中的数据存储于复数个存储节
占.[0035]请求获取单元,用于根据读取具有空间特性数据的读取请求,确定覆盖所述读取请求的网格;
[0036]处理单元,用于根据所述覆盖的网格,确定存储所述网格中数据的存储节点;
[0037]并行读取单元,用于从所述确定的存储节点并行读取请求的数据。
[0038]根据本发明实施例所述一种基于空间关联的分布式数据系统的一个进一步的方面,散列计算单元,用于将分割数据空间后形成的多个网格进行从维度空间到一维序列的转换,得到能够体现网格之间空间关系的序列编码;
[0039]映射单元,用于将所述网格与存储节点做映射。
[0040]根据本发明实施例所述一种基于空间关联的分布式数据系统的再一个进一步的方面,所述散列计算单元、映射单元、请求获取单元、处理单元位于主节点;
[0041]所述网格划分单元、存储单元、并行读取单元位于客户端节点。
[0042]根据本发明实施例所述一种基于空间关联的分布式数据系统的另一个进一步的方面,还包括中间层节点,连接于所述客户端节点和存储节点之间,用于根据所述读取请求中的空间范围对所述覆盖网格的数据进行拼接和裁剪,获得精确的读取请求的数据。
[0043]通过上述实施例中的方法及装置,对于巨量的各种类型空间数据,可以实现高并行度的数据读写,保证按照空间属性分割的数据可以均衡的、保持空间关联的、安全的存储到各个节点,可以适应各种形式的数据读取申请,为用户提供真正的以数据为中心的服务,而不是简单的文件读取。同时,系统具有极大的扩展能力,而且系统扩展与性能是线性相关的,系统不会出现大量闲置节点,或者I/o瓶颈节点,实现了分布式系统设计的初衷,即:分散压力、提高效率。
【专利附图】

【附图说明】
[0044]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
[0045]图1所示为本发明实施例一种基于空间关联的分布式数据存储方法的流程图;
[0046]图2所示为本发明实施例一种基于空间关联的分布式数据并行读取方法的流程图;
[0047]图3所示为本发明实施例一种基于空间关联的分布式数据存储装置的结构图;
[0048]图4所述为本发明实施例一种基于空间关联的分布式数据并行读取装置的结构示意图;
[0049]图5所示为本发明实施例一种基于空间关联的分布式数据系统的结构图;
[0050]图6为实施例的数据空间和网格划分示意图;
[0051]图7所示为本发明实施例网格数据模型的示意图;
[0052]图8所示为本发明实施例网格标识和散列序列号对应示意图;[0053]图9所示为本发明实施例网格标识与存储节点映射关系的示意图;
[0054]图10所示为本发明实施例卫星遥感数据与网格中的位置示意图;
[0055]图11所示为本发明实施例网格数据的属性表格;
[0056]图12所不为本发明实施例网格存储于存储节点的映射关系不意图;
[0057]图13所示为本发明实施例写入数据的示意图;
[0058]图14所示为本发明实施例多文件写入数据空间的示意图;
[0059]图15所示为本发明实施例按照矩形区域读取数据空间子集的示意图;
[0060]图16所示为本发明实施例读取多边形区域数据空间的示意图;
[0061]图17所示为本发明实施例读取多边形区域数据空间流程图。
【具体实施方式】
[0062]为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
[0063]如图1所示为本发明实施例一种基于空间关联的分布式数据存储方法的流程图。
[0064]包括步骤101,将具有空间特性的数据划分为多个网格,所述网格具有该网格所在空间的数据。
[0065]步骤102,根据网格空间位置的关联关系,将所述网格中的数据存储于复数个存储节点。
[0066]作为本发明的一个实施例,所述空间特性的数据包括一维空间数据,二维空间数据,三维空间数据或者多维空间数据。空间特性的数据是用于在明确的坐标系统中,描述空间内连续或离散位置的各种属性、物理、统计、自然等方面信息的数据集合,主要包括:基于地理的空间实体数据、连续分布的空间栅格数据、离散分布的信息点数据、具有行列坐标的图像和科学矩阵数据等。
[0067]作为本发明的一个实施例,数据空间作为具有相同空间属性数据的容器,由多个范围一致的空间网格组成,所述每个网格均具有时间轴,用以存储不同时段内的数据,在每个时段内还包括至少一个物理层,数据按照物理层分为多个数据块。
[0068]作为本发明的一个实施例,根据网格的空间位置将所述网格中的数据存储于复数个存储节点中进一步包括,将空间位置距离近的数据存储于分散的存储节点中。
[0069]作为本发明的一个实施例,所述根据网格的空间位置将所述网格中的数据存储于复数个存储节点之前还包括,将所述多个网格进行从维度空间到一维序列的转换,得到能够体现网格之间空间关系的网格编号,例如空间位置距离越近的网格的编号越接近。
[0070]作为本发明的一个实施例,所述将所述多个网格进行从维度空间到一维序列的转换进一步包括希尔伯特曲线、行序曲线或Z序曲线。
[0071]作为本发明的一个实施例,在得到能够体现网格之间空间关系的网格编号之后还包括,将所述网格编号与存储节点做映射,根据所述映射将空间位置距离近的数据存储于分散的存储节点中。
[0072]作为本发明的一个实施例,将空间位置距离近的数据存储于分散的存储节点中进一步包括,将空间位置距离近的网格的数据存储于分散的存储节点中。[0073]通过上述实施例的方法,对于巨量的各种类型空间数据,可以实现高并行度的数据写入,保证按照空间属性分割的数据可以均衡的、保持空间关联的、安全的存储到各个节点,同时,系统具有极大的扩展能力,而且系统扩展与性能是线性相关的,系统不会出现大量闲置节点,或者I/O瓶颈节点,实现了分布式系统设计的初衷。
[0074]如图2所示为本发明实施例一种基于空间关联的分布式数据并行读取方法的流程图。
[0075]包括步骤201,根据读取具有空间特性数据的读取请求,确定覆盖所述读取请求的网格。
[0076]步骤202,根据所述覆盖的网格,确定存储所述网格中数据的存储节点。
[0077]步骤203,从所述确定的存储节点并行读取请求的数据。
[0078]作为本发明的一个实施例,在从所述确定的存储节点获取所述读取请求的数据之后还包括,根据所述读取请求中的空间范围对所述覆盖网格的数据进行拼接和裁剪,获得精确的读取请求的数据。
[0079]通过上述读取方法的实施例,在读取数据时是按照空间相邻关系选择网格数据的,可以驱动大部分存储节点并行工作,保证系统的I/O性能最优化。
[0080]如图3所示为本发明实施例一种基于空间关联的分布式数据存储装置的结构图。
[0081]包括网格划分单元301,用于将具有空间特性的数据分割为多个网格,所述网格具有该网格所在空间的数据。
[0082]存储单元302,用于根据网格的关联关系,将所述网格中的数据存储于复数个存储节点。
[0083]作为本发明的一个实施例,所述空间特性的数据包括一维空间数据,二维空间数据,三维空间数据或者多维空间数据。
[0084]作为本发明的一个实施例,数据空间作为具有相同空间属性数据的容器,由多个范围一致的空间网格组成,所述每个网格均具有时间轴,以时间片的方式存储不同时段内的数据,在每个时间片内还包括至少一个物理层,数据按照物理层分为多个数据块。
[0085]作为本发明的一个实施例,所述存储单元302进一步用于将空间位置距离近的数据存储于分散的存储节点中。
[0086]作为本发明的一个实施例,还包括散列计算单元303,连接于所述网格划分单元301与所述存储单元302之间,用于将所述多个网格进行从维度空间到一维序列的转换,得到能够体现网格之间空间关系的序列编码;
[0087]还包括映射单元304,连接于所述存储单元302与散列计算单元303之间,用于将所述序列编码与存储节点做映射,所述存储单元302根据所述映射将网格数据存储于存储节点中。
[0088]作为本发明的一个实施例,所述散列单元303采用包括希尔伯特曲线、行序曲线或Z序曲线将所述多个网格进行从维度空间到一维序列的转换。
[0089]作为本发明的一个实施例,所述存储单元302进一步用于将空间位置距离近的网格的数据存储于分散的存储节点中。
[0090]通过上述实施例的装置,对于巨量的各种类型空间数据,可以实现高并行度的数据写入,保证按照空间属性分割的数据可以均衡的、保持空间关联的、安全的存储到各个节点,同时,系统具有极大的扩展能力,而且系统扩展与性能是线性相关的,系统不会出现大量闲置节点,或者I/o瓶颈节点,实现了分布式系统设计的初衷。
[0091]如图4所述为本发明实施例一种基于空间关联的分布式数据并行读取装置的结构示意图。
[0092]包括请求获取单元401,用于根据读取具有空间特性数据的读取请求,确定覆盖所述读取请求的网格。
[0093]处理单元402,用于根据所述覆盖的网格,确定存储所述网格中数据的存储节点。
[0094]读取单元403,用于从所述确定的存储节点获取所述读取请求的数据。
[0095]作为本发明的一个实施例,还包括拼接和剪裁单元404,与所述读取单元403相连接,用于根据所述读取请求中的空间范围对所述覆盖网格的数据进行拼接和裁剪,获得精确的读取请求的数据。
[0096]通过上述读取装置的实施例,在读取数据时是按照空间相邻关系选择网格数据的,可以驱动大部分存储节点并行工作,保证系统的I/O性能最优化。
[0097]如图5所示为本发明实施例一种基于空间关联的分布式数据系统的结构图。
[0098]包括主节点501,复数个存储节点502,客户端节点503。
[0099]所述主节点501进一步包括:
[0100]数据空间单元5011,用于建立具有一致属性的数据容器空间的描述,划分为多个空间网格,计算每个网格的唯一标识。
[0101]散列计算单元5011,将分割数据空间后形成的多个网格进行从维度空间到一维序列的转换,得到能够体现网格之间空间关系的序列编码;所述数据空间作为具有相同空间特征描述的数据容器,按照空间属性、坐标系统和数据特征建立数据空间,依据网格划分标准,将数据空间分割为多个网格,得到每个网格的唯一标识。
[0102]映射单元5012,将得到的序列编码与复数个存储节点进行映射,得到一一对应的网格与存储节点的映射关系。
[0103]还包括请求获取单元5013,用于根据所述客户端节点503发出的读取具有空间特性数据的读取请求,根据所述读取请求确定覆盖所述读取请求的网格。
[0104]处理单元5014,用于根据所述覆盖的网格,确定存储所述网格中数据的存储节点。
[0105]所述客户端节点503进一步包括:
[0106]网格划分单元5031,用于将具有空间特性的数据划分为多个网格,所述网格具有该网格所在空间的数据。
[0107]存储单元5032,用于根据网格的关联关系(即映射关系),将所述网格中的数据存储于复数个存储节点502。
[0108]读取单元5033,用于从所述确定的存储节点并行读取请求的数据。
[0109]在上述客户端节点503中还可以包括拼接和剪裁单元5035,用于根据所述读取请求中的空间范围从获取的数据中进行拼接和裁剪,获得精确的读取请求的数据。
[0110]或者,在所述客户端节点503与所述存储节点502之间还包括中间层节点504,用于根据所述读取请求中的空间范围从获取的数据中进行裁剪,获得精确的读取请求的数据发送给客户端节点503。
[0111]上述实施例中,散列计算单元、映射单元、请求获取单元、处理单元可以位于主节点(后面的实施例均位于主节点),也可以位于存储节点(即没有主节点),亦或者位于客户端节点(即没有主节点);或者在某个实施例中,如果事先将该数据空间分割成多个网格后,该系统可以不需要散列计算单元、映射单元再次分割网格,直接将客户端节点输入的数据根据数据空间分割网格的标准分割成多个网格,然后根据网格的关联关系(即空间位置)分别存储于不同的存储节点中。
[0112]下面将使用一个具体的实施例,详细阐明本发明的实施方案和技术优点。
[0113]首先,初始化系统参数,建立主节点数据库,部署存储节点管理模块,安装客户端接口库,完成样例数据输入准备。
[0114]图6为实施例的数据空间和网格划分示意图,在本实施例中以二维数据为例,建议一个二维的数据空间,在其他实施例中还可以为多维数据对应建立多维的数据空间,在最基本的二维数据空间中创建一个基于地理坐标的数据空间,范围包括整个中国及周边区域,其中:坐标范围为:70° -140° E、15° -55° N ;X方向分辨率为0.02°,Y方向分辨率为0.02° ;地球椭球体模型参考WGS-84标准;左上角为坐标原点,X坐标抽为经度,正向向左,Y坐标轴为纬度,正向向下;数据空间物理大小为3500X2000。上述参数整合为属性数据记录,数据空间标识设为“ChinaRegion”,存入主节点数据库中,数据空间创建完成。其中,主节点数据库采用矩阵式关系数据库集群部署方式,按照系统规模由2-4个节点组成,所有节点都有一份完整的数据拷贝,数据一致性达到严格的事物处理级别。通过配置界面,输入存储节点的物理信息,包括地址、容量、接口协议、主备设置、活动状态等,建立存储节点配置表。
[0115]下一步开始设计网格划分,网格的大小需要考虑数据类型、数据量大小、数据空间大小等,按照网格切割的数据块大小要适中,优选的在128KB-4MB的范围内,这样系统的I/O性能最优。本实施例中,网格按照250X250的正方形区域进行设计,则数据空间“Chinaregion”包括112个网格,形成一个14X8的网格矩阵,如图6所示。对于每个网格,记录其左上角坐标、X和Y方向分辨率、X和Y方向宽度等参数;同时,通过网格标识计算函数,生成网格标识,例如网格标识可以为一个64位的整数,其中:高4位代表数据空间类型;接下来8位保留;然后26位为网格左上角X坐标值;最后26位为网格左上角Y坐标值,例如:本实施例的数据空间类型是中国网格,代码为15,对于左上角坐标为110.0° E和45.0° N的网格,其计算得到的网格标识为:16142813667133857664。同时,系统也提供一个网格标识逆计算函数,通过网格标识可以直接计算得到网格左上角X和Y坐标值,例如:网格标识为16142914330428357664的网格,经逆计算可以得出网格左上角X和Y坐标值为120.0° E和35.0° N。将网格属性参数和网格标识组合形成数据记录,存入主节点数据库的网格属性表中。
[0116]上述步骤中的网格还可以包括若干层次的数据,例如如图7所示为本发明实施例网格数据模型的示意图,在本例中模型包括三个层次,即:网格、时间片和物理层。这三个层次是向下包含的,首先,按照空间范围、坐标体系建立数据空间,将数据空间划分为多个网格,每个网格将是一个独立的数据单元,网格间的联系依靠空间拓扑关联维持;其次,对于每一个网格,存在一个时间轴,数据按照时间片的形式分布在时间轴上,时间片具有“厚度”属性,不同“厚度”代表不同的时间范围,由数据输入时设置;再次,空间数据一般包括I个或多个物理层次,在一个时间片内,将依据属性分成多个物理层,数据按照物理层分为多个数据块,成为系统存储的最小单元。
[0117]上一步得到的14X8的网格矩阵,在实际存储数据时,会形成112个网格数据块序列,这个一维序列如何排列,将对系统的I/O性能有明显影响,因此本发明实施例采用算法模型计算二维矩阵到一维序列的映射。
[0118]在本步骤中,数据空间“ChinaRegion”将使用希尔伯特曲线的算法模型计算网格矩阵散列,希尔伯特曲线是一种能填充满一个平面空间的分形曲线,其价值在于建立一维空间到二维空间一一对应的关系。希尔伯特曲线遍历的平面空间,必需是一个2n的正方形矩阵,对于数据空间“ChinaRegion”的14X8的网格矩阵,需要扩充为24X 24的矩阵空间,在这个空间完成希尔伯特曲线计算,然后由左上角开始,裁剪出14X8的矩阵空间,作为散列计算结果,图8的上部为数据空间“ChinaRegion”叠加希尔伯特曲线的示意图。希尔伯特曲线计算结果是一个序列号码,代表网格矩阵中某个网格在希尔伯特曲线中的排位,两个在希尔伯特曲线中相连的点,其在二维空间中也是相邻的,这样使得越是空间紧密相连的数据,其希尔伯特曲线中的序列编码也就越接近。图8中的表I和表2为A和B两个区域的网格标识与希尔伯特曲线序列号的对应表。
[0119]作为另外的实施例中,还可以采用其他的散列算法,例如对于空间范围较大,网格空间矩阵超过4X4维度的,依据希尔伯特曲线(Hilbert)进行散列分布计算,得到空间关联的一维序列;对于空间范围较小,网格空间矩阵小于4X4维度的,使用一般的行序曲线进行散列分布计算;对于网格空间矩阵X和Y方向维度有较大差异的情况,采用Z序曲线计算散列分布。
[0120]得到希尔伯特序列号后,使用这个序列号与存储节点配置表进行笛卡尔乘积关系运算,就可以进一步得到网格与存储节点的映射关系。图9为网格标识与存储节点映射关系的示意图,以图8中选取的B区域作为示例,图9的表I为网格标识与希尔伯特曲线编码对应表,图9表2为存储节点配置表,图9表3为计算得到的网格与存储节点映射表。由图9表3分析可知,通过希尔伯特曲线的网格散列计算,可以非常完美的将B区域的网格序列,均衡的分布到所有的存储节点,各个节点的负载基本一致,8个存储节点都至少存储一个网格数据,最多存储2个网格数据。空间关联关系维持在所有分布的存储节点,而不是仅存在于一个存储节点中,在读取数据时按照空间相邻关系选择网格数据,本发明的分布式数据系统可以驱动大部分存储节点并行工作,保证系统的I/O性能最优化。
[0121]上述处理完成后,数据空间就可以作为数据容器,提供给输入数据使用,所有符合数据空间“ChinaRegion”空间属性描述的数据类型都可以存储数据,这里采用一个典型的空间数据类型作为实例。卫星遥感数据是一种典型的空间数据种类,其基本特征就是连续空间分布的栅格数据,可以使用空间网格模型来描述。如图10上部分所示为卫星遥感数据的一部分,这里使用一个卫星遥感图像作为输入数据,文件名为“filel.dat”其空间范围为:100° E —120° E和30° N — 50° N,坐标系统、分辨率、椭球体模型与数据空间“ChinaRegion”保持一致,图10的下部分是输入数据在网格中的位置示意。图11的上部分显示了输入数据网格划分的示意,共分为16个网格区域,同时将通过这个区域的希尔伯特曲线叠加在数据图像上。图11的表I为输入数据的网格空间属性表,图11的表2为网格散列编码表,这些是通过主节点数据库,由数据空间“ChinaRegion”网格属性表进行空间查询获取的。图12下部分为进一步查询得到的输入数据网格与存储节点的映射关系,图12的表1为16个网格与8个存储节点的映射表,图12的下部分显示了 16个网格在存储节点的分布情况,每个节点都至少对应一个网格,Node2和Node5对应的网格数量最多,达到3个,整个分布情况比较均衡。
[0122]图13显示了数据写入的示意图,按照网格划分标准,输入数据首先分成16个网格数据体,然后根据网格和存储节点的映射关系,以得到的存储节点地址由客户端将16个网格数据体并行写入各个存储节点(N0del、N0de2…NodeS),最后通知主节点数据写入成功,写入过程的主要数据流只在客户端和存储节点之间产生,客户端与主节点之间仅传输控制信息,整个系统的负载分配非常均衡,不会出现I/O瓶颈。
[0123]图14为多文件写入数据空间的示意图,filel.dat、file2.dat、file3.dat为3个具有相同空间属性的数据文件,分别按照数据空间“ChinaRegion”的网格划分写入数据,图14显示了 3个文件数据输入完成后,整个数据空间的图像,三部分数据拼接为一个整体,后续的数据访问仅针对数据空间,不需要关心数据属于哪个文件。
[0124]本发明的分布式数据系统,在数据读取时更具有明显的优势和效率,数据读取可以看作是数据写入的逆过程,但在优秀的散列算法的安排下,数据读取过程的并行度将得到质的提高。这里以上述完成写入3个文件的数据空间“ChinaRegion”为例,分别按照矩形和多边形区域进行数据读取,说明整个系统的并行度和负载情况。
[0125]图15是一个按照矩形区域读取数据空间子集的示意图,图15显示了数据空间中选择最左侧的一个矩形区域,范围为:95° E —105° E和30° N — 45° N,共包括9个网格,图15中的B为这个矩形区域数据的最终图像。由客户端通过主节点数据库得到覆盖输入区域的所有网格序列号(Grid_ID),依据网格标识(Hilbert_Num)进一步得到对应的存储节点编号(Node_ID),通过存储节点的编号最终得到存储节点的地址(IP_Addr),图15的表I为得到的网格与存储节点映射表,确定每个网格的存储位置,由客户端并行从相关的存储节点读取网格数据体。数据流只在存储节点和客户端之间产生,系统负载非常均衡,图15的下部分显示了各个存储节点的负载情况,这次数据读取涉及的9个网格,非常均匀的分布在8个节点上,只有node6需要提供2个网格,其它节点都只需要提供一个网格,存储节点没有出现大量空闲,也没有出现高I/O压力节点,系统处于一个良好的负载状态下,这是本发明的分布式数据系统相比其它分布式系统最具优势的体现。
[0126]在数据读取时,本发明实施例还可以提供一个空间处理中间层内置于客户端或者连接于客户端与存储节点之间,用于将分散的网格数据拼接为一个整体,按照输入请求的空间区域进行精确的裁剪,形成符合用户需求的数据体返回到客户端。图16显示了一个多边形区域的数据读取示意,图16中的A部分显示了输入多边形区域在数据空间中的位置,依据空间检索算法,获取覆盖这个多边形区域的最大网格序列,图16中的B部分显示了多边形区域最小外接网格矩形的示意,共涉及9个网格。按照网格数据并行读取方式,从各个存储节点读取网格数据,输入到空间处理中间层,按照空间算法完成网格数据的拼接、裁剪和重组等处理,图16中的C部分为最终的数据读取结果显示,最后以数据流方式返回到客户端。
[0127] 图17显示了本发明实施例的数据读取的流程示意,首先用户通过客户端提出数据读取请求(如图中网格中的点状区域)发送到主节点,所述数据读取请求中包括将空间、时间和物理等属性参数;然后主节点采用空间检索算法,查询覆盖输入空间范围的最小网格序列,如图中的16个网格,将网格标识返回客户端;再次,客户端提交网格标识序列到主节点,并查询主节点数据库得到网格对应的存储节点,客户端通过并行方式向各个节点提出网格数据请求;各个存储节点将网格数据传输到空间处理中间层,在该空间处理中间层中进行数据的拼接和裁剪,形成如客户端请求的那部分点状区域的数据;最后,空间处理中间层以数据流方式,将最终结果返回客户端,完成数据读取。整个数据读取过程,数据流和控制流完全分离,数据流的I/O压力分散到各个存储节点,主节点不承担任何数据流的I/O,只负责控制信息和原数据的查询,系统的负载非常合理,适合大规模的数据应用需求。
[0128]通过上述的实施例,对于巨量的各种类型空间数据,可以实现高并行度的数据读写,保证按照空间属性分割的数据可以均衡的、保持空间关联的、安全的存储到各个节点,可以适应各种形式的数据读取申请,为用户提供真正的以数据为中心的服务,而不是简单的文件读取。同时,系统具有极大的扩展能力,而且系统扩展与性能是线性相关的,系统不会出现大量闲置节点,或者I/o瓶颈节点,实现了分布式系统设计的初衷,S卩:分散压力、提高效率。
[0129]本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0130]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0131]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0132]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0133]以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种基于空间关联的分布式数据存储方法,其特征在于包括, 将具有空间特性的数据划分为多个网格,所述网格具有该网格所在空间的数据; 根据网格空间位置的关联关系,将所述网格中的数据存储于复数个存储节点。
2.根据权利要求1所述的一种基于空间关联的分布式数据存储方法,其特征在于,所述空间特性的数据包括一维空间数据,二维空间数据,三维空间数据或者多维空间数据。
3.根据权利要求1所述的一种基于空间关联的分布式数据存储方法,其特征在于,数据空间作为具有相同空间属性数据的容器,由多个范围一致的空间网格组成,所述每个网格均具有时间轴,以时间片的形式存储不同时段内的数据,在每个时间片内还包括至少一个物理层,数据按照物理层分为多个数据块。
4.根据权利要求1所述的一种基于空间关联的分布式数据存储方法,其特征在于,根据网格空间位置的关联关系,将所述网格中的数据存储于复数个存储节点中,进一步包括,将空间位置距离近的数据存储于分散的存储节点中。
5.根据权利要求1所述的一种基于空间关联的分布式数据存储方法,其特征在于,所述根据网格的空间位置的关联关系,将所述网格中的数据存储于复数个存储节点之前还包括,将所述多个网格进行从维度空间到一维序列的转换,得到能够体现网格之间空间关系的序列编码。
6.根据权利要求5所述的一种基于空间关联的分布式数据存储方法,其特征在于,所述将所述多个网格进行从维度空间到一维序列的转换方法进一步包括希尔伯特曲线、行序曲线或Z序曲线。
7.根据权利要求5所述的一种基于空间关联的分布式数据存储方法,其特征在于,在得到能够体现网格之间空间关系的序列编码之后还包括,将所述序列编码与存储节点做映射,根据所述映射将空间位置距离近的数据存储于分散的存储节点中。
8.一种基于空间关联的分布式数据并行读取方法,其特征在于包括, 根据读取具有空间特性数据的读取请求,确定覆盖所述读取请求的网格; 根据所述覆盖的网格,确定存储所述网格中数据的存储节点; 从所述确定的存储节点并行读取请求的数据。
9.根据权利要求8所述的一种基于空间关联的分布式数据并行读取方法,其特征在于,在从所述确定的存储节点获取所述读取请求的数据之后还包括,根据所述读取请求中的空间范围对所述覆盖网格的数据进行拼接和裁剪,获得精确的读取请求的数据。
10.一种基于空间关联的分布式数据存储装置,其特征在于包括, 网格划分单元,用于将具有空间特性的数据分割为多个网格,所述网格具有该网格所在空间的数据; 存储单元,用于根据网格的关联关系,将所述网格中的数据存储于复数个存储节点。
11.根据权利要求10所述的一种基于空间关联的分布式数据存储装置,其特征在于,还包括散列计算单元,连接于所述网格划分单元与所述存储单元之间,用于将所述多个网格进行从维度空间到一维序列的转换,得到能够体现网格之间空间关系的序列编码; 还包括映射单元,连接于所述存储单元与散列计算单元之间,用于将所述网格与存储节点做映射。
12.一种基于空间关联的分布式数据并行读取装置,其特征在于包括,请求获取单元,用于根据读取具有空间特性数据的读取请求,确定覆盖所述读取请求的网格; 处理单元,用于根据所述覆盖的网格,确定存储所述网格中数据的存储节点; 并行读取单元,用于从所述确定的存储节点并行读取请求的数据。
13.一种基于空间关联的分布式数据系统,其特征在于包括: 网格划分单元,用于将具有空间特性的数据分割为多个网格,所述网格具有该网格所在空间的数据; 存储单元,用于根据网格的关联关系,将所述网格中的数据存储于复数个存储节点;请求获取单元,用于根据读取具有空间特性数据的读取请求,确定覆盖所述读取请求的网格; 处理单元,用于根据所述覆盖的网格,确定存储所述网格中数据的存储节点; 并行读取单元,用于从所述确定的存储节点并行读取请求的数据。
14.根据权利要求13所述的一种基于空间关联的分布式数据系统,其特征在于还包括, 散列计算单元,用 于将分割数据空间后形成的多个网格进行从维度空间到一维序列的转换,得到能够体现网格之间空间关系的序列编码; 映射单元,用于将所述网格与存储节点做映射。
15.根据权利要求14所述的一种基于空间关联的分布式数据系统,其特征在于, 所述散列计算单元、映射单元、请求获取单元、处理单元位于主节点; 所述网格划分单元、存储单元、并行读取单元位于客户端节点。
16.根据权利要求15所述的一种基于空间关联的分布式数据系统,其特征在于,还包括中间层节点,连接于所述客户端节点和存储节点之间,用于根据所述读取请求中的空间范围对所述覆盖网格的数据进行拼接和裁剪,获得精确的读取请求的数据。
【文档编号】G06F3/06GK103995861SQ201410208628
【公开日】2014年8月20日 申请日期:2014年5月16日 优先权日:2014年5月16日
【发明者】罗敬宁 申请人:罗敬宁
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1