专利名称:一种支持大规模并发的三维空间数据放置方法
技术领域:
本发明涉及地理空间信息系统技术领域,特别是涉及一种支持大规模并发的三维空间数据放置方法。
背景技术:
尽管计算机硬件技术发展迅速,数据库管理系统性能也有了极大的提高,然而,快速处理复杂空间数据操作所需的处理能力和现有空间数据库所提供的性能仍然无法完全匹配,这导致了三维空间数据库的性能绝大多数受限于对空间操作的响应处理能力和对大量三维空间数据存取的I/o吞吐能力。由于三维空间数据库应用总是伴随着密集的I/O操作和CPU (Central Processing Unit,中央处理器)操作,通常CPU访问内存的速度非常快(纳秒级),而访问磁盘的I/O时间通常要比内存访问速度慢几个数量级(微秒级),尤其是多用户并发时,三维空间数据从二级存储磁盘到内存之间存在着严重的I/O瓶颈。因此,针对TB级的海量三维空间数据库高性能实时应用的需求,磁盘读取的性能必然成为影响海量三维空间数据读取效率的关键影响因素。针对三维空间数据库的海量性、类型复杂等特点以及高效数据调度的需求,亟需研究减少磁盘I/o的性能瓶颈的三维空间数据分布放置的方法,来有效分散磁盘I/O。虽然冗余磁盘阵列(Redundant Array of Inexpensive/Independent Disks, RAID)技术将多个物理磁盘按照一定方式组合起来形成大的逻辑对象,其将数据自动分散在多个磁盘上,可以提供数据保护与提高数据读写速度等能力。但是,由于三维空间数据不同类型数据的组织方法、访问特点等存在明显的差异,单纯采用RAID本身并不会将I/O性能提高到最佳状态,因此需要针对不同类型数据的数据特点、组织方法以及访问特点等,研究三维空间数据不同数据在多磁盘/RAID组上的分布放置方法,来有效分散磁盘1/0,为大规模三维空间数据库的闻效调度提供基础。综上所述,三维空间数据库操作所涉及的数据规模巨大,不可能一次装入内存,必须通过密集的I/o操作反复与磁盘进行数据交换。快速处理复杂空间数据操作所需的处理能力和现有空间数据库所提供的性能仍然无法完全匹配,这导致了三维空间数据库的性能绝大多数受限于对空间操作的响应处理能力和对大量三维空间数据存取的I/o吞吐能力。因此,将三维空间数据库的数据分布放置在不同的磁盘/RAID组是必然的解决方法。但是,现在通用的数据分布放置方法,未充分考虑三维空间数据库的数据内容及其数据访问的特点,因此都难以对大规模三维空间数据的多磁盘分布放置取得最佳的分布效果。
发明内容
本发明提供了一种支持大规模并发的三维空间数据放置方法,旨在解决现有技术难以对大规模三维空间数据的多磁盘分布放置取得最佳的分布效果,无法突破大规模多用户并发导致的三维空间数据库读取的I/o瓶颈这一技术问题。本发明采用如下技术方案
—种支持大规模并发的三维空间数据放置方法,所述方法包括如下步骤S1、检测服务器存储设备的硬件环境并获取所述存储设备的磁盘信息,更新所述磁盘信息的描述文件;S2、基于三维空间数据的数据内容分析以及存储设备的磁盘信息描述,确定各类型三维空间数据在存储设备上的多磁盘分布放置方案;S3、根据所述多磁盘分布放置方案,对各类型三维空间数据进行多磁盘分布放置;S4、根据各类型三维空间数据的多磁盘分布放置情况,实时更新所述存储设备的磁盘信息描述文件。优选地,所述存储设备的磁盘信息包括存储设备的磁盘数或RAID组数,以及所述磁盘设备的容量和已使用量。优选地,所述三维空间数据按数据类型分为地形数据、三维要素数据和纹理数据,其中所述地形数据包括数字高程模型数据和数字正射影像数据。优选地,所述步骤S3具体包括A、采用基于金字塔层的多磁盘分布存储方法,对分层分块的海量地形数据进行多磁盘分布放置;B、采用基于三维要素类的三维要素数据多磁盘分布存储方法,对包含多要素类的三维要素数据进行多磁盘分布放置;C、采用基于散列的分布存储方法,对纹理数据进行多磁盘分布放置。优选地,所述步骤A具体包括Al、获取DEM和DOM金字塔层数M,以及服务器存储设备的可用磁盘数或RAID组数N;A2、创建DEM和DOM金字塔层第i层数据表,i初始化为O ;A3、将DEM金字塔层第i层数据放到第j个磁盘或RAID组,将DOM金字塔层第i层数据放到第N-j个磁盘或RAID组,j初始化为0,i和j依次递增;A4、如果M > N,依次往磁盘或RAID组中放置N层DEM金字塔层数据之后,再从头开始循环放置,DOM数据采用与DEM数据相反的顺序进行放置,直至全部的DEM和DOM金字塔层都找到存储的磁盘或RAID组。优选地,对于记录数量超大的DEM和DOM金字塔层数据表,采用分区的方式对所述数据表进行分区管理,每个分区表的数据在不同的磁盘或RAID组上分布放置。优选地,所述步骤B具体包括B1、获取三维要素类个数M,以及服务器存储设备的可用磁盘数或RAID组数N ;B2、创建第i个三维要素集合数据表和第i个三维要素LOD集合数据表,i初始化为O ;B3、将第i个三维要素集合数据表放到第j个磁盘或RAID组,将第i个三维要素LOD集合数据表放到第N-j个磁盘或RAID组,j初始化为0,i和j依次递增;B4、如果M > N,在依次往磁盘或RAID组中放置N个三维要素集合数据表和三维要素LOD集合数据表之后,依次反向循环放置,直至全部的三维要素集合数据表和三维要素LOD集合数据表都找到存储的磁盘或RAID组。
优选地,所述步骤C具体包括Cl、获取服务器存储设备的可用磁盘数或RAID组数N ;C2、根据所述可用磁盘或RAID组数创建N个纹理数据分表,每个纹理数据分表放置在每个磁盘或RAID组中;C3、对插入的每个纹理数据的ID进行散列计算,得到新的key值;C4、根据所述key值将所述纹理数据插入到指定纹理数据分表中,放置在指定的磁盘或RAID组中。本发明针对大规模并发下三维空间数据库操作存在的严重I/O瓶颈,通过对三维空间数据库的数据内容以及数据类型的划分,采用基于数据内容的三维空间数据多磁盘放置方法,将不同类型三维空间数据在多磁盘上进行分布放置,达到了大规模三维空间数据的多磁盘分布放置的最佳效果,有效支持大规模用户并发的数据调度以及三维实时可视化应用需求,对三维GIS (Geographic Information System,地理信息系统)网络化应用具有重要意义。
图1为本发明实施例一种支持大规模并发的三维空间数据放置方法流程图;图2为本发明实施例中不同类型数据及其多磁盘分布放置方案示意图;图3为本发明实施例中DEM和DOM金字塔层数据的多磁盘分布放置流程图;图4为本发明实施例中三维要素数据多磁盘分布放置流程图;图5为本发明实施例中纹理数据多磁盘分布放置流程图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。针对三维空间数据的数据内容与三维空间数据库分类组织特点,本发明实施例提供了一种支持大规模并发的三维空间数据放置方法,可以支持大规模并发的高效数据调度;按数据类型的不同,采用不同的多磁盘分布放置方法,提高了数据存取的效率,满足海量数据的高效存取和实时可视化的需求。如图1所示,该方法包括下述步骤步骤S1:检测服务器存储设备的硬件环境并获取所述存储设备的磁盘信息,更新所述磁盘信息的描述文件。其中,存储设备的磁盘信息包括存储设备的磁盘数/RAID组数(也即磁盘数或RAID组数,下同),以及磁盘设备的容量和已使用量等信息,但不限于此。步骤S2 :基于三维空间数据的数据内容分析以及存储设备的磁盘信息描述,确定各类型三维空间数据在存储设备上的多磁盘分布放置方案。其中,三维空间数据按数据类型分为地形数据、三维要素数据和纹理数据等多种数据类型,不限于此处列举的这三种,本实施例将以这三种类型的数据为例,对本发明进行详细阐述。地形数据包括数字高程模型数据(DEM,Digital Elevation Model)和数字正射影像数据(DOM, Digital Orthophoto Map);三维要素数据包括按三维要素类组织的三维要素几何数据与属性数据;纹理数据包括三维要素几何贴的纹理数据。步骤S3 :根据所述多磁盘分布放置方案,对各类型三维空间数据进行多磁盘分布放置。如图2所示,在本实施例中,当三维空间数据为地形数据(DEM和DOM数据)时,将采用基于金字塔层的多磁盘分布存储方法,进行分层分块的海量地形数据的多磁盘分布放置;当三维空间数据为三维要素数据时,将采用基于三维要素类的三维要素数据多磁盘分布存储方法,进行包含多要素类的三维要素数据的多磁盘分布放置;当三维空间数据为纹理数据时,将采用基于散列的分布存储方法,进行纹理数据的多磁盘分布放置。不同类型数据的具体分布放置方案将在后文中详细说明。步骤S4 :根据各类型三维空间数据的多磁盘分布放置情况,实时更新所述存储设备的磁盘信息描述文件。下面对各类型三维空间数据的多磁盘分布放置方案进行详细说明A、地形数据(DEM和DOM数据)针对地形数据在数据库中采用“金字塔分层+均匀分块”的方式进行数据库的组织与管理的特点,每个金字塔层的数据都放在对应金字塔层数据表中进行管理。在进行地形数据调度时,通常根据视点变化的规律,距离视点近的区域需要调度精细分辨率的数据块,而距离视点远的区域需要调度粗糙分辨率的数据块,这就需要同时从不同的金字塔层数据表中获取数据,以满足不同区域不同分辨率表达的需求。因此,为了减少不同金字塔层数据同时读取同一磁盘造成的资源竞争,将地形数据按照金字塔层在多磁盘上进行分布放置。如图3所示,具体包括以下步骤Al、获取DEM和DOM金字塔层数M,以及服务器存储设备的可用磁盘数或RAID组数N;A2、创建DEM和DOM金字塔层第i层数据表,i初始化为O ;A3、将DEM金字塔层第i层数据放到第j个磁盘或RAID组,将DOM金字塔层第i层数据放到第N-j个磁盘或RAID组,j初始化为0,i和j依次递增;A4、如果M > N,依次往磁盘或RAID组中放置N层DEM金字塔层数据之后,再从头开始循环放置,DOM数据采用与DEM数据相反的顺序进行放置,直至全部的DEM和DOM金字塔层都找到存储的磁盘或RAID组。每一金字塔层的DEM层数据表和DOM层数据表,如果其记录数量超大,则采用分区的方式对该大数据表进行分区管理,以提高大数据表的数据查询效率。这样可以保证不同分辨率的DEM和DOM数据可以存储在不同的磁盘上,在上层请求不同分辨率的数据时,可以同时从多个磁盘中读取,有效的分散了磁盘I/O。B、三维要素数据在三维可视化和三维空间分析等实时应用中,会对三维要素数据频繁进行三维空间查询的操作,从而产生了很大数量的磁盘I/o。在地上下一体化漫游的过程中,往往需要调度所有地上地下所有三维要素类的数据,而且会根据视点的远近调动不同细节层次的数据。由于三维要素数据按照三维要素类进行分类管理,每个三维要素类对应一个三维要素集合数据表和一个三维要素LOD (Levels of Detail,多细节层次)集合数据表,其中三维要素集合数据表存储该三维要素类的最粗细节层次的三维要素数据,三维要素LOD集合数据表存储该三维要素类其他精细细节层次的三维要素数据,在进行数据调度时都是先调度粗细节层次的三维要素数据,随后调度其更高细节层次的三维要素数据。因此,将不同三维要素类的三维要素集合数据表和三维要素LOD集合数据表在多磁盘/RAID组上进行分布存储,可以有效的分散磁盘I/O。如图4所示,具体包括以下步骤B1、获取三维要素类个数M,以及服务器存储设备的可用磁盘数或RAID组数N ;B2、创建第i个三维要素集合数据表和第i个三维要素LOD集合数据表,i初始化为O ;B3、将第i个三维要素集合数据表放到第j个磁盘或RAID组,将第i个三维要素LOD集合数据表放到第N-j个磁盘或RAID组,j初始化为0,i和j依次递增;B4、如果M > N,在依次往磁盘或RAID组中放置N个三维要素集合数据表和三维要素LOD集合数据表之后,依次反向循环放置,直至全部的三维要素集合数据表和三维要素LOD集合数据表都找到存储的磁盘或RAID组。在三维要素数据的多磁盘分布放置流程中,每个三维要素类型的数据表循环排列,分布在不同的磁盘/RAID组中。为了避免多细节层次数据请求造成的资源竞争,一个三维要素类对应的三维要素集合数据表和三维要素LOD集合数据表分布在不同的磁盘/RAID组中,这样有利于不同细节层次数据的高效读取。针对三维要素数据逻辑结构的特点,将三维要素集合数据表和三维要素LOD集合数据表采用错位分布法,并循环分布,直至结束。C、纹理数据纹理数据直接决定了三维空间数据的真实感与辨识能力,为了能够达到更逼真的视觉效果,三维空间数据包括了大量复杂、高质量的纹理数据,几乎占据了三维空间数据库总数据量的80%以上,从而纹理数据读取效率的提高对于整个三维空间数据库的调度效率提高至关重要。由于每个三维空间对象,比如每个建筑大多都贴有多张纹理数据,这样在三维可视化过程中,往往将多个纹理数据同时从三维空间数据库中调度出来,如果将这些数据能分散存储在不同的磁盘上,就可以同时从多个磁盘上读取出来,能有效地利用多磁盘的性能优势。如图5所示,具体包括以下步骤Cl、获取服务器存储设备的可用磁盘数或RAID组数N ;C2、根据所述可用磁盘或RAID组数创建N个纹理数据分表,每个纹理数据分表放置在每个磁盘或RAID组中;C3、对插入的每个纹理数据的ID进行散列计算,得到新的key值;C4、根据所述key值将所述纹理数据插入到指定纹理数据分表中,放置在指定的磁盘或RAID组中。在纹理数据的多磁盘分布放置流程中,根据获得的磁盘数/RAID组数得到纹理数据表的分表数量,每个磁盘对应一个纹理数据分表,将分表编号记录在纹理数据表的表名中,以区分不同的纹理数据分表;在纹理数据入库时,通过散列算法达到纹理数据均匀分散存储在多个磁盘的效果。此外,为了快速的判断某一个纹理数据所在的纹理表,将纹理数据的原ID与新生成的key值都记录在纹理数据分表中,以便快速查询。通过将纹理数据尽可能的分布在多个数据表中,并分布存储在不同的磁盘上,这样当需要调用这些纹理时,可以采用多线程在多个磁盘上实现并行读取,充分利用了多个磁盘驱动器的优势,从而大幅提高了纹理数据的读取效率。
根据本发明实施例提出的用于支持大规模并发的三维空间数据放置方法,设计了三维空间数据库多磁盘存储的数据库结构。对于三维空间数据库中存取产生大量I/o的地形数据、三维要素数据和纹理数据等,在多个磁盘/RAID组中进行了数据文件的规划,以充分利用多磁盘的高性能存取优势,在多用户并发情况下能有效地提高不同类型数据的存取效率。DEM和DOM数据每个金字塔层数据表存储为一个单独的数据文件,循环分布在多个磁盘/RAID组中,并且DEM和DOM相同金字塔层数据存储在不同的磁盘上。三维要素数据通过三维要素集合数据表和三维要素LOD集合数据表错位分布在多个磁盘/RAID组中,以利用多细节层次数据的高效调度。纹理数据根据可用磁盘/RAID数创建多个纹理数据分表,将纹理数据循环插入到各个纹理数据分表中,达到尽可能将每个几何模型所对应的纹理数据分散在不同的磁盘上,以尽可能地分散磁盘I/O。本发明实施例针对大规模并发下三维空间数据库操作存在的严重I/O瓶颈,通过对三维空间数据库的数据内容以及数据类型的划分,采用基于数据内容的三维空间数据多磁盘放置方法,将不同类型三维空间数据在多磁盘上进行分布放置,达到了大规模三维空间数据的多磁盘分布放置的最佳效果,有效支持大规模用户并发的数据调度以及三维实时可视化应用需求,对三维GIS网络化应用具有重要意义。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种支持大规模并发的三维空间数据放置方法,其特征在于,所述方法包括如下步骤: 51、检测服务器存储设备的硬件环境并获取所述存储设备的磁盘信息,更新所述磁盘信息的描述文件; 52、基于三维空间数据的数据内容分析以及存储设备的磁盘信息描述,确定各类型三维空间数据在存储设备上的多磁盘分布放置方案; 53、根据所述多磁盘分布放置方案,对各类型三维空间数据进行多磁盘分布放置; 54、根据各类型三维空间数据的多磁盘分布放置情况,实时更新所述存储设备的磁盘信息描述文件。
2.根据权利要求1所述的方法,其特征在于,所述存储设备的磁盘信息包括:存储设备的磁盘数或RAID组数,以及所述磁盘设备的容量和已使用量。
3.根据权利要求1所述的方法,其特征在于,所述三维空间数据按数据类型分为:地形数据、三维要素数据和纹理数据,其中所述地形数据包括数字高程模型数据和数字正射影像数据。
4.根据权利要求1所述的方法,其特征在于,所述步骤S3具体包括: A、采用基于金字塔层的多磁盘分布存储方法,对分层分块的海量地形数据进行多磁盘分布放置; B、采用基于三维要素类的三维要素数据多磁盘分布存储方法,对包含多个三维要素类的三维要素数据进行多磁盘 分布放置; C、采用基于散列的分布存储方法,对纹理数据进行多磁盘分布放置。
5.根据权利要求4所述的方法,其特征在于,所述步骤A具体包括: Al、获取DEM和DOM金字塔层数M,以及服务器存储设备的可用磁盘数或RAID组数N ; A2、创建DEM和DOM金字塔层第i层数据表,i初始化为O ; A3、将DEM金字塔层第i层数据放到第j个磁盘或RAID组,将DOM金字塔层第i层数据放到第N-j个磁盘或RAID组,j初始化为0,i和j依次递增; A4、如果M > N,依次往磁盘或RAID组中放置N层DEM金字塔层数据之后,再从头开始循环放置,DOM数据采用与DEM数据相反的顺序进行放置,直至全部的DEM和DOM金字塔层都找到存储的磁盘或RAID组。
6.根据权利要求5所述的方法,其特征在于,对于记录数量超大的DEM和DOM金字塔层数据表,采用分区的方式对所述数据表进行分区管理,每个分区表的数据在不同的磁盘或RAID组上分布放置。
7.根据权利要求4所述的方法,其特征在于,所述步骤B具体包括: B1、获取三维要素类个数M,以及服务器存储设备的可用磁盘数或RAID组数N ; B2、创建第i个三维要素集合数据表和第i个三维要素LOD集合数据表,i初始化为O ; B3、将第i个三维要素集合数据表放到第j个磁盘或RAID组,将第i个三维要素LOD集合数据表放到第N-j个磁盘或RAID组,j初始化为0,i和j依次递增; B4、如果M > N,在依次往磁盘或RAID组中放置N个三维要素集合数据表和三维要素LOD集合数据表之后,依次反向循环放置,直至全部的三维要素集合数据表和三维要素LOD集合数据表都找到存储的磁盘或RAID组。
8.根据权利要求4所述的方法,其特征在于,所述步骤C具体包括: Cl、获取服务器存储设备的可用磁盘数或RAID组数N ; C2、根据所述可用磁盘或RAID组数创建N个纹理数据分表,每个纹理数据分表放置在每个磁盘或RA ID组中; C3、对插入的每个纹理数据的ID进行散列计算,得到新的key值; C4、根据所述key值将所述纹理数据插入到指定纹理数据分表中,放置在指定的磁盘或RAID组中。
全文摘要
本发明涉及地理空间信息系统技术领域,提供了一种支持大规模并发的三维空间数据放置方法,步骤包括检测服务器存储设备的硬件环境并获取所述存储设备的磁盘信息,更新所述磁盘信息的描述文件;基于三维空间数据的数据内容分析以及存储设备的磁盘信息描述,确定各类型三维空间数据在存储设备上的多磁盘分布放置方案;根据所述多磁盘分布放置方案,对各类型三维空间数据进行多磁盘分布放置;根据各类型三维空间数据的多磁盘分布放置情况,实时更新所述存储设备的磁盘信息描述文件。本发明通过对三维空间数据不同类型数据进行多磁盘分布放置,有效支持大规模用户并发的数据调度以及三维实时可视化的应用需求。
文档编号G06F17/30GK103077209SQ201210584430
公开日2013年5月1日 申请日期2012年12月28日 优先权日2012年12月28日
发明者李晓明, 冯圣中, 修文群, 胡金星, 张宝运, 李微微 申请人:深圳先进技术研究院