CN112328629A - 实体对象处理方法、装置和电子设备 - Google Patents

实体对象处理方法、装置和电子设备 Download PDF

Info

Publication number
CN112328629A
CN112328629A CN202010961798.1A CN202010961798A CN112328629A CN 112328629 A CN112328629 A CN 112328629A CN 202010961798 A CN202010961798 A CN 202010961798A CN 112328629 A CN112328629 A CN 112328629A
Authority
CN
China
Prior art keywords
target
sub
entity object
region
node
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
Application number
CN202010961798.1A
Other languages
English (en)
Other versions
CN112328629B (zh
Inventor
李宗祥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
MIGU Culture Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
MIGU Culture Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd, MIGU Culture Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN202010961798.1A priority Critical patent/CN112328629B/zh
Priority claimed from CN202010961798.1A external-priority patent/CN112328629B/zh
Publication of CN112328629A publication Critical patent/CN112328629A/zh
Application granted granted Critical
Publication of CN112328629B publication Critical patent/CN112328629B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9537Spatial or temporal dependent retrieval, e.g. spatiotemporal queries

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

实体对象处理方法、装置和电子设备
技术领域
本发明涉及大数据技术领域,尤其是涉及一种实体对象处理方法、装置和电子设备。
背景技术
随着移动互联网的发展,对实际存在的实体对象(例如,楼宇、湖泊、桥等等)通常在地图中以空间数据(即带有空间位置信息的数据)的形式存储。当需要查询地图中某已知位置的待查询区域中存在哪些实体对象时,现有技术中通常查询地图中每一实体对象所在的区域与该待查询区域是否存在重叠,进而确定位于待查询区域中的实体对象有哪些。由于地图中通常存在大量的实体对象,现有技术中的这种查询实体对象的方法需要遍历地图中的每一实体对象,运算量大且查询效率低。
可见,现有技术中对位于待查询区域中的实体对象进行查询的方法运算量大且查询效率低。
发明内容
本发明实施例提供一种实体对象处理方法、装置和电子设备,用以解决现有技术中对位于待查询区域中的实体对象进行查询的方法运算量大且查询效率低的问题。
针对以上技术问题,第一方面,本发明实施例提供一种实体对象处理方法,包括:
获取待查询区域,以及在包括所述待查询区域的索引区域内创建的至少一组区域划分线;其中,任一组区域划分线用于对所述索引区域进行划分或者用于对所述索引区域内通过其它任一组区域划分线形成的子索引区域进行划分;
将与所述待查询区域相交的一组区域划分线,作为目标组区域划分线,从所述目标组区域划分线对应的子线段中,确定与所述待查询区域相交的目标子线段;其中,目标组区域划分线对应的子线段是根据所述目标组区域划分线中的区域划分线的交点对每一区域划分线进行划分后得到的线段;
根据与所述待查询区域相交的目标子线段,从位于所述索引区域内的实体对象中获取目标实体对象,根据所述待查询区域的位置,从所述目标实体对象中查询位于所述待查询区域内的实体对象。
第二方面,本发明实施例提供一种实体对象处理装置,包括:
获取模块,用于获取待查询区域,以及在包括所述待查询区域的索引区域内创建的至少一组区域划分线;其中,任一组区域划分线用于对所述索引区域进行划分或者用于对所述索引区域内通过其它任一组区域划分线形成的子索引区域进行划分;
确定模块,用于将与所述待查询区域相交的一组区域划分线,作为目标组区域划分线,从所述目标组区域划分线对应的子线段中,确定与所述待查询区域相交的目标子线段;其中,目标组区域划分线对应的子线段是根据所述目标组区域划分线中的区域划分线的交点对每一区域划分线进行划分后得到的线段;
查询模块,用于根据与所述待查询区域相交的目标子线段,从位于所述索引区域内的实体对象中获取目标实体对象,根据所述待查询区域的位置,从所述目标实体对象中查询位于所述待查询区域内的实体对象。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以上所述的实体对象处理方法的步骤。
本发明的实施例提供了一种实体对象处理方法、装置和电子设备,在对位于待查询区域中的实体对象进行查询时,先在包括待查询区域的索引区域内创建的至少一组区域划分线,然后获取与待查询区域相交的一组目标组区域划分线。从目标组区域划分线的各子线段中获取待查询区域相交的目标子线段,根据目标子线段从索引区域内所有的实体对象中筛选出目标实体对象,进而从目标实体对象中确定位于待查询区域的实体对象。仅从目标实体对象中查询位于待查询区域的实体对象,缩小了需要进行查询的实体对象的范围,降低了运算量,提高了查询效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的实体对象处理方法的流程示意图;
图2是本发明另一实施例提供的索引区域内创建的区域划分线的示意图;
图3是本发明另一实施例提供的与CIF-四叉树各节点关联的桶的示意图;
图4是本发明另一实施例提供的根据划分索引区域的区域划分线的子线段,对CIF-四叉树的各节点创建方向子节点的示意图;
图5是本发明另一实施例提供的与CIF-四叉树各节点的方向子节点关联的桶的示意图;
图6是本发明另一实施例提供的基于区域划分线的空间编码结构示意图;
图7是本发明另一实施例提供的索引区域的区域划分线的各子线段对应的编码示意图;
图8是本发明另一实施例提供的HDLC-树查询方法的流程示意图;
图9是本发明另一实施例提供的并行查询方法的流程示意图;
图10是本发明另一实施例提供的HDLC-树的CIF-四叉树节点索引文件的结构示意图;
图11是本发明另一实施例提供的方向子节点索引文件的结构示意图;
图12是本发明另一实施例提供的HDLC-树的在Hadoop上的索引存储整体结构示意图;
图13是本发明另一实施例提供的索引构建过程的流程示意图;
图14是本发明另一实施例提供的实体对象的删除流程示意图;
图15是本发明另一实施例提供的实体对象处理装置的结构框图;
图16是本发明另一实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请提供的实体对象处理方法可以应用于“对地图中某一待查询区域内存在哪些实体对象进行查询”。为了方便查询,通常先在地图中包括查询区域的索引区域内创建至少一组区域划分线,通过与待查询区域相交的一组区域划分线对位于索引区域内的实体对象进行筛选,从筛选出来的实体对象中确定位于待查询区域内的实体对象。例如,与待查询区域相交的一组区域划分线为目标组区域划分线,则从位于索引区域内的实体对象中获取实体对象所在的区域与目标组区域划分线也相交的实体对象,作为筛选出来的实体对象。相比于查询索引区域中每一实体对象是否位于待查询区域中,从查询筛选出来的实体对象是否位于待查询区域大大降低了需要进行查询的实体对象的数量。
为了对上述方案进行优化,进一步降低需要进行查询的实体对象的数量,图1为本实施例提供的实体对象处理方法的流程示意图,参见图1,该方法包括:
步骤101:获取待查询区域,以及在包括所述待查询区域的索引区域内创建的至少一组区域划分线;其中,任一组区域划分线用于对所述索引区域进行划分或者用于对所述索引区域内通过其它任一组区域划分线形成的子索引区域进行划分。
实体对象指的是实际存在的物体,例如,楼宇、湖泊等。在地图中实体对象所在的区域是包含有实体对象的最小矩形。待查询区域为地图中已知位置,未知所包含的实体对象的区域。索引区域中区域划分线的创建是为了使得索引区域中的每一实体对象所在的区域均与某一组区域划分线相交,进而可以根据实体对象与区域划分线的相交情况对实体对象进行筛选。
关于区域划分线的创建过程,图2为本实施例提供的索引区域内创建的区域划分线的示意图。假设图2中最大的矩形即为包括述待查询区域的索引区域,索引区域中的A、B、C、D、E、F、G、H、I、J、K表示索引区域内的11个实体对象所在区域。由于图2中的索引区域为矩形,可以设定每组区域划分线均为矩形的两条中线。则首先创建在该索引区域(即最大的矩形0)中创建一组区域划分线,基于该组区域划分线形成了4个子索引区域(例如,索引区域1、2、3和4),分别对索引区域2、3和4创建一组区域划分线,以使得更多的实体对象所在的区域与区域划分线相交。对索引区域2创建区域划分线划分出了4个子索引区域(例如,索引区域5、6、7和8),由于索引区域5中还存在一个没有与区域划分先相交的实体对象E,因此还可以继续在索引区域5中创建一组区域划分线,以使得存在与实体对象E所在的区域相交的一组区域划分线。
步骤102:将与所述待查询区域相交的一组区域划分线,作为目标组区域划分线,从所述目标组区域划分线对应的子线段中,确定与所述待查询区域相交的目标子线段;其中,目标组区域划分线对应的子线段是根据所述目标组区域划分线中的区域划分线的交点对每一区域划分线进行划分后得到的线段。
区域划分线对应的子线段指的是以区域划分线的交点划分出来的线段。例如,图2中每一组区域划分先均由索引区域这一矩形的中点,将两条区域划分线划分为4条子线段。
在确定了与待查询区域相交的目标组区域划分线的基础上,确定该目标组区域划分线中与待查询区域相交的目标子线段。以便根据目标子线段对实体对象进行更为精细的筛选。
步骤103:根据与所述待查询区域相交的目标子线段,从位于所述索引区域内的实体对象中获取目标实体对象,根据所述待查询区域的位置,从所述目标实体对象中查询位于所述待查询区域内的实体对象。
相比于根据与所述待查询区域相交的目标组区域划分线,从索引区域中筛选实体对象,本实施例通过目标组区域划分线中与所述待查询区域相交的目标子线段诗选实体对象,能够进一步精简筛选的实体对象的数量,从而进一步缩小需要进行查询的实体对象的范围,提高查询效率。
本实施例提供了一种实体对象处理方法,在对位于待查询区域中的实体对象进行查询时,先在包括待查询区域的索引区域内创建的至少一组区域划分线,然后获取与待查询区域相交的一组目标组区域划分线。从目标组区域划分线的各子线段中获取待查询区域相交的目标子线段,根据目标子线段从索引区域内所有的实体对象中筛选出目标实体对象,进而从目标实体对象中确定位于待查询区域的实体对象。仅从目标实体对象中查询位于待查询区域的实体对象,缩小了需要进行查询的实体对象的范围,降低了运算量,提高了查询效率。
关于如何根据目标子线段获取目标实体对象,进一步地,在上述实施例的基础上,所述根据与所述待查询区域相交的目标子线段,从位于所述索引区域内的实体对象中获取目标实体对象,包括:
若所述目标子线段唯一,且所述目标子线段为所述目标组区域划分线对应的子线段中的任一子线段,则将位于索引区域内的每一实体对象所在的区域中,与所述目标子线段相交的区域内的实体对象作为目标实体对象。
若所述目标子线段不唯一,则将位于索引区域内的每一实体对象所在的区域中,与所述目标组区域划分线相交的区域内的实体对象作为目标实体对象。
当待查询区域仅与目标组区域划分线中的目标子线段相交时,各实体对象中,实体对象所在的区域只要与该目标子线段相交,则均可能位于待查询区域内。因此,目标实体对象包括实体对象所在的区域仅与目标子线段相交的实体对象,以及实体对象所在的区域与目标组区域划分线中包含该目标子线段在内的多条子线段相交的实体对象。
当待查询区域与目标组区域划分线中的多条子线段相交时,则实体对象所在的区域只要与目标组区域划分线相交,则均可能位于待查询区域内。因此,目标实体对象包括实体对象所在的区域与目标组区域划分线相交的所有实体对象。
本实施例中,在待查询区域仅与目标组区域划分线中的目标子线段相交时,仅获取实体对象所在的区域与目标子线段相交的实体对象作为所述目标实体对象,进而从目标实体对象中查询位于待查询区域的实体对象。相比于从索引区域内所有的实体对象中查询位于待查询区域的实体对象,或者从所有实体对象所在的区域与目标组区域划分线相交的实体对象中查询位于待查询区域的实体对象而言,本实施例缩小了需要进行查询的实体对象的范围,从而提高了查询效率。
为了方便查询,通常会以各组区域划分线所划分的索引区域之间的关系建立CIF-四叉树,从而通过CIF-四叉树快速定位目标实体对象。
关于CIF-四叉树:
与一般的四叉树不同,CIF-四叉树是一种能够高效索引地图中的实体对象的树状索引结构。CIF-四叉树从根节点开始每个节点都会关联一个桶,用于存储落入这个节点的实体对象。CIF-四叉树判定一个实体对象是否落入某一个节点的方法,是判定表示该实体对象所在的区域(实体对象所在的区域是根据表示实体对象的空间数据所形成的包含实体对象的最小包围矩形)是否和该CIF-四叉树节点对应的索引区域的区域划分线相交。
参见图2,与CIF-四叉树根节点对应的索引区域为0,与根节点的各子节点对应的索引区域包括索引区域1、2、3和4,以此类推。图3为本实施例提供的与CIF-四叉树各节点关联的桶的示意图,参见图3,由于图2中的实体对象B所在的区域和实体对象C所在的区域与子索引区域2的区域划分线相交,所以实体对象B和实体对象C将存储在CIF-四叉树中与索引子区域2对应的节点所关联的桶中。以此类推,可以根据图2中各实体对象与划分索引区域的各组区域划分线相交的信息,得到如图3中所示的节点所关联的桶中存储的实体对象。
可见,CIF-四叉树使不同的实体对象落入不同的节点,虽然可以有效地解决实体对象所在区域重叠的问题。但是CIF-四叉树中每个实体对象所存储的位置都是固定的,而且每个节点都会存储实体对象,这会加剧索引树的不平衡,降低查询效率。
为了提高通过CIF-四叉树查询实体对象的效率,进一步地,在上述各实施例的基础上,所述将位于索引区域内的每一实体对象所在的区域中,与所述目标子线段相交的区域内的实体对象作为目标实体对象,包括:
获取对CIF-四叉树中每一节点增设的至少一个方向子节点;所述CIF-四叉树根据被各组区域划分线划分的索引区域创建;任一节点的方向子节点,根据指定组区域划分线的各子线段中与实体对象所在的区域相交的子线段创建;所述指定组区域划分线用于对所述任一节点对应的索引区域进行划分;
从所述CIF-四叉树中获取被所述目标组区域划分线划分的索引区域对应的节点,作为目标节点,从对所述目标节点增设的至少一个方向子节点中,获取目标方向子节点;其中,所述目标方向子节点处存储的实体对象所在的区域与所述目标子线段相交;
将所述目标方向子节点处存储的实体对象作为所述目标实体对象。
任一节点的方向子节点,根据指定组区域划分线的各子线段中与实体对象所在的区域相交的子线段创建,具体包括:
对所述任一节点增设的任一方向子节点处存储的实体对象为,实体对象所在的区域仅与划分任一节点对应的索引区域的区域划分线中任一子线段相交,或者实体对象所在的区域与划分任一节点对应的索引区域的区域划分线中至少两条子线段相交。
所述目标方向子节点处存储的实体对象所在的区域与所述目标子线段相交,具体包括:目标方向子节点处存储的实体对象所在的区域仅与所述目标子线段相交,以及目标方向子节点处存储的实体对象所在的区域与所述目标组区域划分线中的至少两条子线段相交。
图4为本实施例提供的根据划分索引区域的区域划分线的子线段,对CIF-四叉树的各节点创建方向子节点的示意图,基于图4所示的索引区域,所创建的CIF-四叉树的根节点对应了最大的矩形,根节点的各子节点分别对应了被最大矩形的区域划分线(即两条中线)划分出来的4个子索引区域。
在本实施例中,如图4所示,对于CIF-四叉树的任一节点均增设5个方向子节点,以索引区域0为例,对索引区域0对应的节点增设的5个方向子节点包括:方向子节点1(用于存储实体对象所在的区域仅与方向1所在的子线段的相交的实体对象)、方向子节点2(实体对象所在的区域仅与方向2所在的子线段的相交的实体对象)、方向子节点3(实体对象所在的区域仅与方向3所在的子线段的相交的实体对象)、方向子节点4(实体对象所在的区域仅与方向4所在的子线段的相交的实体对象)、方向子节点5(实体对象所在的区域与至少两条子线段相交的实体对象)。基于增设的方向子节点,假如目标线段为方向子节点1所在的线段,则可以将方向子节点1和方向子节点5作为所述目标方向子节点,获取存储在方向子节点1和方向子节点5中的实体对象作为目标实体对象。
具体来说,关于(1)CIF-四叉树的方向子节点建立
针对上述CIF-四叉树索引存在的查询效率较低的问题,本实施例给CIF-四叉树的每个节点增加四个方向子节点,这四个方向子节点分别表示四叉树节点划分线的四个方向轴,每个方向子节点中存入与该方向相交的空间区域数据。然后,本方案再给四叉树节点增加一个方向子节点用于存储空间区域与两条划分线都相交的空间对象。以图4中的子索引区域0所表示的CIF-四叉树节点为例,先按CIF-四叉树的方法划分子索引区域0成如图4所示的结果。子索引区域0有两条划分线(图4中的虚线表示),按这两条划分线将子索引区域分成四个方向,分别对应方向子节点1至方向子节点4,每个方向子节点索引实体对象所在的区域与其相交的实体对象,而方向子节点5则存放实体对象所在的区域与两条划分线都相交的实体对象。
此外,本方案为每个方向子节点关联一个桶,图5为本实施例提供的与CIF-四叉树各节点的方向子节点关联的桶的示意图,每一方向子节点关联的桶用于存储落入该方向子节点的实体对象。参见图5,根据图5中索引区域0中的区域划分线的各子线段可以将图5中的实体对象A、B、C、D、E和F按照图5右侧所示的存储关系,存储到方向子节点1至方向子节点5中(即存储在各方向子节点所关联的桶中)。
参见图4和图5,每个方向节点存储了所在的实体对象所在的区域与其对应的子线段相交的实体对象。之所以这样设计是因为:第一,不同的方向子节点实际上存储了节点对应的索引区域内部不同区域的实体对象,细化了在地图中空间坐标之间的差异,有利于提升剪枝效率。例如,节点所表示的区域是<(0,0),(10,10)>(对角线端点),如果待查询区域是<(3,6),(7,9)>就知道查询的结果一定在方向子节点4中,剔除了其他实体对象,缩小查询范围,从而提升查询效率。第二,将原来的一个节点拆分后,节点内访问的数据量变小,例如A子树共10层平均每层含有10000个数据,这样要进行100000次数据访问,而B子树只有5层每层只有15000个数据,这样要进行75000次数据访问,使用本方案设计的索引结构,则A子树的数据平均访问次数下降为20000(按概率只有原先的1/5了)次,而B子树的数据平均访问次数则下降到15000次,A子树与B子树的数据查询次数差异变小,在查询负载上的差异也变小,这一定程度上降低了树不平衡所带来的问题。第三,面对海量数据,将一个四叉树节点索引到的数据分开到不同的方向子节点,而不同的方向子节点再对应不同的存储桶,结合Hadoop可以更方便地进行实体对象的反聚集存储,提升Hadoop对空间区域数据的吞吐率。
本实施例中,通过对CIF-四叉树的各节点增设方向子节点,将索引区域内位于不同位置的实体对象分开存储,方便根据区域划分线中与待查询区域相交的子线段直接通过方向子节点查询目标实体对象,提高了查询效率。
关于查询目标实体对象,进一步地,在上述各实施例的基础上,所述将所述目标方向子节点处存储的实体对象作为所述目标实体对象,包括:
将用于存储所述目标方向子节点处的实体对象的实体存储节点,作为目标存储节点;
确定任一目标存储节点中用于存储所述目标方向子节点的实体对象的数据块,作为目标数据块;
根据每一所述目标数据块所在的实体存储节点,创建与所述任一目标存储节点对应的查询任务,以根据所述查询任务从所述任一目标存储节点中的目标数据块中读取所述目标实体对象。
将用于存储所述目标方向子节点处的实体对象的实体存储节点,作为目标存储节点,具体包括:根据CIF-四叉树索引节点文件查询存储有所述目标方向子节点处的实体对象的存储节点,作为目标存储节点;其中,所述CIF-四叉树索引节点文件中存储有对各方向子节点处的实体对象进行存储的存储节点的信息。
确定任一目标存储节点中用于存储所述目标方向子节点的实体对象的数据块,作为目标数据块,具体包括:对任一目标存储节点,根据所述目标方向子节点的索引文件确定所述任一目标存储节点中存储有所述目标方向子节点处的实体对象的数据块,作为目标数据块。
可理解的是,查询任务中仅包括在所述任一目标存储节点中存在的目标数据块,因此通过查询任务中的目标数据块能够从所述任一目标存储节点中快速读取目标实体对象。
实体存储节点指的是用于存储实体对象的节点,例如在Hadoop的HDFS(分布式文件架构)中,以Datanode作为存储各方向子节点处的实体对象的实体存储节点。
在进行查询的过程中,可以针对每一需要进行查询的目标存储节点创建查询任务,在查询任务中删除了没有存储在该目标存储节点内的实体对象,从而使得各存储节点能够根据与各自对应的查询任务实现对实体对象的并行查询,进一步提高查询效率。
为了更好地说明查询过程,首先需要对CIF-四叉树的各节点和增设的各方向子节点进行编码:
(2)基于区域划分线的编码方法
编码可以表示被编码区域之间的位置关系,本方案的实体对象被索引在方向子节点中,所以需要对方向子节点编码,而现有的编码方法都只能表述到四叉树划分节点一级,无法描述方向子节点之间的位置关系,因此本方案在之前设计的索引结构的基础上结合Zorder编码设计一种新的编码方式,使其能够有效地表征四叉树节点的各方向子节点之间的位置关系,即区域划分线编码。
图6为本实施例提供的基于区域划分线的编码结构示意图,图7为本实施例提供的索引区域的区域划分线的各子线段对应的编码示意图。参见图6和图7,Zorder编码值就是经过四叉树划分后节点所表示子索引区域的区域编码;区域划分线中各子线段在本方案中定义为用00、01、10、11四个区域编码来表示(如图7所示)。此外,本实施例用区域编码11和标记位为1的组合表示,与两条划分线都相交的方向子节点。图6中的标记位为1表示与两条划分线都相交的方向子节点,否则就不是。
参见图7,索引区域被分成10个子索引区域,图7中已经按Zorder编码的方式对每个子索引区域进行了编码,因为是3层的CIF-四叉树,所以Zorder编码的位数是4位。例如索引区域0的编码是0000、索引区域4的编码是0100。在图7中给出了区域划分线的编码,因此我们可以得出子区域0的节点对应的方向子节点编码分别为:0000000、0000010、0000100、0000110、0000111,换算成整数即0、2、4、6、8。本方案之所以这样设计是因为Zorder值本身能表示CIF-四叉树节点的空间位置关系即数值越接近在地图中所在的区域位置上也越接近,再加上划分线的编码就可以表示方向子节点的区域位置关系了;而标记位只是用来区分出与两条划分线相交的方向子节点,在计算位置距离时可以通过除以2的运算剔除这个标记位,实现空间位置关系的准确计算。
基于上述介绍的区域编码方法,
因此,对于待查询区域仅与目标子线段相交的情况,可以根据对区域划分线编码的区域编码,从索引文件中筛选出与该区域编码对应的方向子节点,从而能够从与该区域编码对应的方向子节点中获取目标实体对象,提高查询效率。
基于上述(1)和(2),本实施例提供的查询方法如下:
(3)HDLC-树(HDLC-指的是增加了方向子节点的CIF四叉树)查询方法
总体来说,本实施例提供的查询方法与CIF-四叉树的查询方法类似,只是在查询每个节点时并不是去查询节点内的所有索引数据而是通过计算查询区域的位置信息得到与查询区域相关的方向子节点,之后再查询方向子节点中的实体对象,图8为本实施例提供的HDLC-树查询方法的流程示意图,参见图8,该HDLC-树查询方法包括:
步骤1,获取所要查询的待查询区域的区域坐标信息,面对待查询区域,其查询条件也是一个区域,例如一个居民小区、一所学校、一个行政区等;
步骤2,开始查询HDLC-树,从根节点开始以递归的方式进行查询,查询那些与待查询区域相交的节点;
步骤3,根据待查询区域的坐标信息计算与待查询区域相交的区域划分线的子线段,获取相应的方向子节点;
步骤4,查询方向子节点中的实体对象,比较其中的实体对象所在的实体对象所在的区域是否与待查询区域相交,将与待查询区域相交的实体对象作为返回结果存储到结果集中;
步骤5,判断当前节点是否为叶节点,如果为叶节点则转步骤6,否则获取该节点与待查询区域相交的子节点,转步骤2进行下一层的查询;
步骤6,返回查询结果集。
为了进一步地提高查询效率,本实施例提供一种并行的查询方法:
(4)并行查询方法
在上述(3)的基础上,本实施例提供一种并行的查询方法,可以在保证空间剪枝效率的前提下,提升查询性能,消除查询热点。首先,我们可以启动Hadoop集群的所有节点去查询NameNode中的CIF-四叉树,得到该Hadoop节点的方向子节点索引数据块;接着,针对不同Hadoop节点上的索引数据块进行并行查询,查询出与查询区域相交的空间区域数据及其存储位置;最后,根据数据的存储位置,到相应的Hadoop节点上读取数据作为结果返回,在返回时用客户端缓存中被删除数据进行过滤,只留下没有被删除的数据。
图9为本实施例提供的并行查询方法的流程示意图,参见图9,该查询方法包括:
步骤1,获取待查询区域坐标即最小包围矩形的坐标,由于CIF-四叉树的特性,我们可以直接计算出与待查询区域相交的节点;
步骤2,启动map任务,使Hadoop的每个计算节点都查询NameNode内存中的CIF-四叉树索引文件,在查询时可以根据步骤1计算出的相交节点和索引文件固定结构的偏移量,直接获取相关的CIF-四叉树节点,提升查询速度;
步骤3,每个Hadoop节点都会获得一些四叉树节点,提取这些四叉树节点所关联的方向子节点信息,将方向子节点索引文件数据块不在本Hadoop节点的剔除掉;
步骤4,再执行一组map任务,用来按照前述(2)中所提的方法查询方向子节点中的索引数据,得到符合查询请求的实体对象及其存储位置;
步骤5,执行reduce任务,根据查询到的空间区域数据的存储位置,进行具体数据的并行读取;
步骤6,将查询结果返回给客户端,在返回的时候用客户端的删除数据缓存做过滤,剔除掉已被删除的数据,保证返回数据的准确性。
在本实施例中,通过CIF-四叉树索引节点文件查询存储节点,并通过方向子节点的索引文件确定存储有该方向子节点处的实体对象的数据块。关于索引文件:
(5)索引存储结构设计
本方案针对HDLC-树索引设计了两种索引文件及两种存储方法。两种索引文件包括HDLC-树的CIF-四叉树节点索引文件和方向子节点索引文件。图10为本实施例提供的HDLC-树的CIF-四叉树节点索引文件的结构示意图,图11为本实施例提供的方向子节点索引文件的结构示意图。
参见图10,索引文件的元信息包括索引文件的大小、节点个数等,占用64*2B的存储空间;之后就是顺序存储的CIF-四叉树节点信息,每个节点中节点元信息包含该节点的层数和索引数据的总量占64*2B、区域坐标占64*4B、节点四个孩子指针占64*4B、方向子节点指针则存储相应桶所在的DataNode节点的位置和文件中的Block号共占64*2B;之所以设置为64B的倍数是为了对齐内存从而方便从内存中进行读取。
参见图11,方向子节点的索引文件元信息包括索引文件中文件大小和节点个数共占64*2B,方向子节点的信息按顺序存入索引文件,其中方向子节点元信息包含该节点的数据容量大小和层数攻占64*2B、本方案设计的划分线编码则占64*2B、空间区域数据的信息包含空间区域的坐标和数据存储的DataNode编号和Block号共占64*4B。之所以这样设计是因为Hadoop是按块读取数据的,一个块是64MB,这样可以保证每个块都会存储完整的节点信息,避免跨Block读取,降低网络传输量提升数据读取效率。
在上述索引文件的基础上,本方案设计了两种索引存储方法。第一种,我们将CIF-四叉树节点索引文件存至NameNode的内存,从上述设计可以看出一个节点索引信息只占用了768B的存储空间,即使四叉树中有220次方个节点也只占768MB内存,完全可以放入内存从而提升四叉树的查找性能。第二种,我们将方向子节点的索引文件存入Hadoop的HDFS中,每个Block都包含完整的实体对象的信息,在查询时可以用MapReduce来并行查询不同DataNode上的索引数据。基于此,图12为本实施例提供的HDLC-树的在Hadoop上的索引存储整体结构示意图,参见图12,NameNode的内存中存放了CIF-四叉树节点的索引文件,而方向子节点的索引文件则根据Hadoop的存储方式按Block分布在集群的各个节点进行存储。
关于将实体对象存储到方向子节点的过程,进一步地,
所述将用于存储所述目标方向子节点处的实体对象的实体存储节点,作为目标存储节点之前,还包括:
将各方向子节点处的实体对象按照预设存储方式存储到预置的实体存储节点中的数据块内;
其中,所述预设存储方式包括如下至少一种:所述CIF-四叉树中同一节点的不同方向子节点处的实体对象存储到不同实体存储节点中的数据块内、所述CIF-四叉树中同一方向子节点处的实体对象存储到不同实体存储节点中的数据块内。
进一步地,在上述各实施例的基础上,
所述将各方向子节点处的实体对象按照预设存储方式存储到预置的实体存储节点中的数据块内,包括:
对任一待存储的实体对象,获取所述任一待存储的实体对象对应的方向子节点,作为待存储方向子节点;
根据所述待存储方向子节点对应的划分线编码、方向编码、所述待存储方向子节点在所述CIF-四叉树中的节点深度和所述待存储方向子节点处的实体对象已经占用的数据块的数量,确定用于存储所述任一待存储的实体对象的实体存储节点的节点编号,从所述节点编号对应的实体存储节点中分配用于存储所述任一待存储的实体对象的数据块;
其中,划分线编码用于区分所述CIF-四叉树中不同的节点;方向编码用于区分不同的方向子节点。
其中,根据公式
Loc=[(DL_Code/2+Bnum)%Dnum+H]%Dnum
确定用于存储所述任一待存储的实体对象的实体存储节点编号;
其中,DL_Code表示所述待存储方向子节点对应的划分线编码(即待存储方向子节点的父节点对应的划分线编码),Bnum表示所述待存储方向子节点处的实体对象已经占用的数据块(Block)的数量,Dnum则表示Hadoop集群中存储节点(即Hadoop节点或者datanode)的数量,H表示所述待存储方向子节点在所述CIF-四叉树中的节点深度。
本实施例对方向子节点分配用于存储实体对象的数据块,使得同一CIF四叉树节点下的方向子节点中的实体对象存储到不同的存储节点中,使得对同一方向子节点分配的多个数据块存储到不同的存储节点中,实现了实体对象的反聚集存储。
(6)数据存储方法
具体地,为了应对区域查询可能会因为出现的查询热点区域导致Hadoop集群中出现访问热点的情况,本方案设计了一种基于划分线空间编码的数据存储方法,将方向子节点中索引的数据存储到不同的Hadoop节点上,实现空间对象分局及存储。具体方法如下:首先,本方案在系统初始化的时候会为每个方向子节点关联一个Block作为存储数据的桶;之后,随着系统中新数据的到来,当一个Block写满时系统会分配一个新的Block,记录下一个方向子节点所关联的Block的数量;最终,通过划分线编码和以上信息可以得出方向子节点存储数据的Block在Hadoop集群中的存储位置即集群中的节点编号。
基于公式
Loc=[(DL_Code/2+Bnum)%Dnum+H]%Dnum
能够实现空间对象的反聚集存储。
具体来说,本方案设计的划分线编码可以很好的表征不同方向子节点之间的空间位置关系,空间位置越近那么划分线编码的值也越接近,用划分线编码除以2是对应前述在计算位置关系时剔除标记位;之后再加上已写Block的数量是为了使同一个方向子节点的Block存储到不同的节点上去;而对Dnum求模则计算出初始的节点编码;在此之后加上深度H是为了将父子节点的方向子节点分散到不同的Hadoop节点上。例如子区域0的方向子节点0000010,假设Hadoop集群的节点为20,在系统开始时计算出Block的存储节点编号为3,当它写入第四个Block时计算出Block的存储节点为6,达到了空间上相邻数据存储到不同的Hadoop节点的效果,实现了实体对象的反聚集存储。
基于(5)中介绍的索引的存储结构,此处提供索引的构建方法,具体地:
(7)索引的构建方法
索引的构建即根据实际的地图中的区域数据来建立索引。在本方案中索引的构建方法与索引的更新方法是一致的,其思路都是在CIF-四叉树中找寻相应的节点,将索引数据写入该节点关联的方向子节点中。基于本方案设计索引结构,索引数据最终会存入方向子节点,而方向子节点会在写完一个块后会继续申请新的块以追加的方式写入索引文件,从而省去了CIF-四叉树在插入新数据时桶分裂的开销,提升了索引数据的插入与更新效率。本方案设计的索引构建方法可以很方便的进行并行化:首先,可以将待插入的数据划分为多个组,通过MapReduce来并行插入,插入过程中每个工作节点都可以查询NameNode中的CIF-四叉树索引文件来获取插入节点;之后,再找到相应的方向子节点开始进行追加写入数据;最后再将索引信息进行更新。
图13为本实施例提供的索引构建过程的流程示意图,参见图13,索引构建的过程包括:
步骤1,获取用来构建索引或者插入索引的实体对象,提取实体对象所在的区域即最小包围矩形,可以按照四叉树的划分方式将数据分为22n组,供MapReduce进行并行构建;
步骤2,执行map任务,并行查询CIF-四叉树得到每个实体对象该插入的节点,如果没有插入节点则分裂CIF-四叉树的叶节点得到新的节点在判断能否插入;
步骤3,在查询出相应的CIF-四叉树节点后,根据实体对象所在的区域的坐标计算其应存储的方向子节点,将数据和其落入的方向子节点作为map任务的输出;
步骤4,执reduce任务,将实体对象按其存入的方向子节点归并,提取实体对象所在的区域的最小包围矩形等信息写入方向子节点索引文件;
步骤5,根据本方案设计的数据存储方式计算每个实体对象的存储位置,即数据写入的Hadoop集群的节点编号;
步骤6,将具体的实体对象写入相应的Hadoop节点,完成数据的存储;
步骤7,将新加入实体对象的索引信息更新到NameNode内存中的CIF-四叉树索引文件中,完成索引的构建会插入。
关于实体对象的删除操作,进一步地,在上述各实施例的基础上,所述将各方向子节点处的实体对象按照预设存储方式存储到预置的实体存储节点中的数据块内之后,还包括:
对任一待删除实体对象,从创建的至少一组区域划分线中,获取与所述任一待删除实体对象所在的区域相交的一组区域划分线,作为待处理组区域划分线;
从所述CIF-四叉树中确定被所述待处理组区域划分线划分的索引区域所对应的节点,作为待删除节点;
从所述待处理组区域划分线中的子线段中获取与所述任一待删除实体对象所在的区域相交的子线段,作为待处理子线段,根据所述待处理子线段,从对所述待删除节点增设的方向子节点中获取待删除方向子节点;
从所述待删除方向子节点处存储的实体对象中删除所述任一待删除实体对象。
进一步地,在上述各实施例的基础上,所述从所述待删除方向子节点出存储的实体对象中删除所述任一待删除实体对象,包括:
将待删除实体对象存储到预置的缓存数据块中,在所述缓存数据块中存储的待删除实体对象所占用的存储空间大于或等于预设存储空间后,从所述待删除方向子节点处存储的实体对象中删除所述任一待删除实体对象。
其中,预设存储空间可以设置为64MB。
需要说明的是,在所述待删除空间对象占用的存储量达到数据块的存储量阈值后执行删除操作,是为了方便Hadoop批处理。因为Hadoop按Block进行操作,一个Block一般是64MB。
本实施例根据方向子节点对空间对象执行删除操作,实现了对空间对象精准删除。
(8)空间对象及索引的删除方法
已有的方法只能做区域性的删除,无法做到只删除某些数据的精确删除方法。本方案针对这一问题,设计一种新的索引删除方法:本方案在Hadoop集群的客户端设置一个缓存,该缓存用来存放那些被删除的数据,缓存是key-vaule键值对形式的,其结构如下:
<划分线编码,删除数据>
其中key是划分线编码即本方案所设计的能表示每个方向子节点的编码,而Value则为需要删除的实体对象。之所以这样设计是因为:第一,只要索引区域确定、被删除的实体对象也确定,则可以直接计算出被删除实体对象所在的区域与哪条区域划分线相交,在缓存中可以直接根据key找到其插入位置,实现了Hash查询的效果,效率极高;第二,在进行数据查询时可以在查询结果返回之前将其与客户端缓存中的数据相比较,去除已删除的数据,保证结果的正确性和删除的实时性;第三,通过基于划分线的缓存,我们可以设置一个进程定期扫描,将那些删除数据已满一个Block即数据大小满64MB的数据进行删除操作,涉及的改动只有存储该方向子节点数据的Block,数据改动量小。
图14为本实施例提供的实体对象的删除流程示意图,参见图14,包括如下步骤:
步骤1,获取需要删除的实体对象,提取其实体对象所在的区域的坐标即最小包围矩形的坐标;
步骤2,根据索引区域的坐标范围和实体对象所在的区域的区域坐标,计算出每个实体对象相交的划分线,再计算出其所对应的方向子节点的划分线编码,从而得到其在缓存中的key;
步骤3,根据每个实体对象的划分线编码,将需要删除的数据放入缓存中相应的位置;
步骤4,后台进程定时扫描缓存,按一定的周期执行如下操作:如果缓存中有的key-value键值对所存储的数据已满64MB,则转步骤5,否则等待下个扫描周期;
步骤5,将那些存储数据量已满64MB的键值对,写入Hadoop中,并更新CIF-四叉树索引文件和方向子节点索引文件。
综上,本方案为了解决Hadoop环境下空间区域数据索引所存在的问题,有如下改进点:第一,本方案改进了CIF-四叉树的结构,使其在查询时不仅能够提升空间区域数据的剪枝效率,解决了查询负载不平衡的问题;第二,本方案设计的基于划分线的空间编码方法,可以有效表征子区域内数据的空间位置关系,为更细粒度的空间剪枝提供支撑;第三,本方案设计了面向Hadoop的索引存储结构,分为内存存储和Block存储,更好的利用了Hadoop的特性,提升了存储效果;第四,本方案在划分线编码的基础上提出一种新的数据存储方法,能够更好地实现实体对象的反聚集存储;第五,本方案提出一种新的索引构建方法,能够降低索引构建和插入的开销;第六,本方案提出一种基于缓存的索引删除方法,实现了细粒度数据的删除,并提供了删除数据实时性的支撑;第七,本方案设计了一种并行的实体对象查询方法,具有更好的查询性能。
相比于现有技术,本方案的优点包括:
第一,本方案设计的索引结构能够提升实体对象的剪枝效率,而且能够缓和四叉树不平衡的问题,降低查询负载倾斜的概率;第二,本方案所设计的划分线编码比Zorder编码粒度更细,更能表征子区域内的实体对象的位置关系,提供更准确的剪枝结果;第三,相比于现有技术,本方案设计的数据存储方法,能够将实体对象所在的区域相近的数据分散存储,避免集群中出现访问热点;第四,本方案设计的索引构建方法开销更低,而索引删除方法则实现了实体对象的精细删除;第五,本方案设计的并行查询算法具有更好的查询性能。
图15为本实施例提供的实体对象处理装置的结构框图,参见图15,该实体对象处理装置包括获取模块1501、确定模块1502和查询模块1503,其中,
获取模块1501,用于获取待查询区域,以及在包括所述待查询区域的索引区域内创建的至少一组区域划分线;其中,任一组区域划分线用于对所述索引区域进行划分或者用于对所述索引区域内通过其它任一组区域划分线形成的子索引区域进行划分;
确定模块1502,用于将与所述待查询区域相交的一组区域划分线,作为目标组区域划分线,从所述目标组区域划分线对应的子线段中,确定与所述待查询区域相交的目标子线段;其中,目标组区域划分线对应的子线段是根据所述目标组区域划分线中的区域划分线的交点对每一区域划分线进行划分后得到的线段;
查询模块1503,用于根据与所述待查询区域相交的目标子线段,从位于所述索引区域内的实体对象中获取目标实体对象,根据所述待查询区域的位置,从所述目标实体对象中查询位于所述待查询区域内的实体对象。
本实施例提供的实体对象处理装置适用于上述各实施例提供的实体对象处理方法,在此不再赘述。
本发明的实施例提供了一种实体对象处理装置,在对位于待查询区域中的实体对象进行查询时,先在包括待查询区域的索引区域内创建的至少一组区域划分线,然后获取与待查询区域相交的一组目标组区域划分线。从目标组区域划分线的各子线段中获取待查询区域相交的目标子线段,根据目标子线段从索引区域内所有的实体对象中筛选出目标实体对象,进而从目标实体对象中确定位于待查询区域的实体对象。仅从目标实体对象中查询位于待查询区域的实体对象,缩小了需要进行查询的实体对象的范围,降低了运算量,提高了查询效率。
可选地,所述根据与所述待查询区域相交的目标子线段,从位于所述索引区域内的实体对象中获取目标实体对象,包括:
若所述目标子线段唯一,且所述目标子线段为所述目标组区域划分线对应的子线段中的任一子线段,则将位于索引区域内的每一实体对象所在的区域中,与所述目标子线段相交的区域内的实体对象作为目标实体对象。
可选地,所述将位于索引区域内的每一实体对象所在的区域中,与所述目标子线段相交的区域内的实体对象作为目标实体对象,包括:
获取对CIF-四叉树中每一节点增设的至少一个方向子节点;所述CIF-四叉树根据被各组区域划分线划分的索引区域创建;任一节点的方向子节点,根据指定组区域划分线的各子线段中与实体对象所在的区域相交的子线段创建;所述指定组区域划分线用于对所述任一节点对应的索引区域进行划分;
从所述CIF-四叉树中获取被所述目标组区域划分线划分的索引区域对应的节点,作为目标节点,从对所述目标节点增设的至少一个方向子节点中,获取目标方向子节点;其中,所述目标方向子节点处存储的实体对象所在的区域与所述目标子线段相交;
将所述目标方向子节点处存储的实体对象作为所述目标实体对象。
可选地,所述将所述目标方向子节点处存储的实体对象作为所述目标实体对象,包括:
将用于存储所述目标方向子节点处的实体对象的实体存储节点,作为目标存储节点;
确定任一目标存储节点中用于存储所述目标方向子节点的实体对象的数据块,作为目标数据块;
根据每一所述目标数据块所在的实体存储节点,创建与所述任一目标存储节点对应的查询任务,以根据所述查询任务从所述任一目标存储节点中的目标数据块中读取所述目标实体对象。
可选地,所述将用于存储所述目标方向子节点处的实体对象的实体存储节点,作为目标存储节点之前,还包括:
将各方向子节点处的实体对象按照预设存储方式存储到预置的实体存储节点中的数据块内;
其中,所述预设存储方式包括如下至少一种:所述CIF-四叉树中同一节点的不同方向子节点处的实体对象存储到不同实体存储节点中的数据块内、所述CIF-四叉树中同一方向子节点处的实体对象存储到不同实体存储节点中的数据块内。
可选地,所述将各方向子节点处的实体对象按照预设存储方式存储到预置的实体存储节点中的数据块内,包括:
对任一待存储的实体对象,获取所述任一待存储的实体对象对应的方向子节点,作为待存储方向子节点;
根据所述待存储方向子节点对应的划分线编码、方向编码、所述待存储方向子节点在所述CIF-四叉树中的节点深度和所述待存储方向子节点处的实体对象已经占用的数据块的数量,确定用于存储所述任一待存储的实体对象的实体存储节点的节点编号,从所述节点编号对应的实体存储节点中分配用于存储所述任一待存储的实体对象的数据块;
其中,划分线编码用于区分所述CIF-四叉树中不同的节点;方向编码用于区分不同的方向子节点。
可选地,所述将各方向子节点处的实体对象按照预设存储方式存储到预置的实体存储节点中的数据块内之后,还包括:
对任一待删除实体对象,从创建的至少一组区域划分线中,获取与所述任一待删除实体对象所在的区域相交的一组区域划分线,作为待处理组区域划分线;
从所述CIF-四叉树中确定被所述待处理组区域划分线划分的索引区域所对应的节点,作为待删除节点;
从所述待处理组区域划分线中的子线段中获取与所述任一待删除实体对象所在的区域相交的子线段,作为待处理子线段,根据所述待处理子线段,从对所述待删除节点增设的方向子节点中获取待删除方向子节点;
从所述待删除方向子节点处存储的实体对象中删除所述任一待删除实体对象。
可选地,所述从所述待删除方向子节点出存储的实体对象中删除所述任一待删除实体对象,包括:
将待删除实体对象存储到预置的缓存数据块中,在所述缓存数据块中存储的待删除实体对象所占用的存储空间大于或等于预设存储空间后,从所述待删除方向子节点处存储的实体对象中删除所述任一待删除实体对象。
图16示例了一种电子设备的实体结构示意图,如图16所示,该电子设备可以包括:处理器(processor)1601、通信接口(Communications Interface)1602、存储器(memory)1603和通信总线1604,其中,处理器1601,通信接口1602,存储器1603通过通信总线1604完成相互间的通信。处理器1601可以调用存储器1603中的逻辑指令,以执行如下方法:获取待查询区域,以及在包括所述待查询区域的索引区域内创建的至少一组区域划分线;其中,任一组区域划分线用于对所述索引区域进行划分或者用于对所述索引区域内通过其它任一组区域划分线形成的子索引区域进行划分;将与所述待查询区域相交的一组区域划分线,作为目标组区域划分线,从所述目标组区域划分线对应的子线段中,确定与所述待查询区域相交的目标子线段;其中,目标组区域划分线对应的子线段是根据所述目标组区域划分线中的区域划分线的交点对每一区域划分线进行划分后得到的线段;根据与所述待查询区域相交的目标子线段,从位于所述索引区域内的实体对象中获取目标实体对象,根据所述待查询区域的位置,从所述目标实体对象中查询位于所述待查询区域内的实体对象。
此外,上述的存储器1603中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
进一步地,本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取待查询区域,以及在包括所述待查询区域的索引区域内创建的至少一组区域划分线;其中,任一组区域划分线用于对所述索引区域进行划分或者用于对所述索引区域内通过其它任一组区域划分线形成的子索引区域进行划分;将与所述待查询区域相交的一组区域划分线,作为目标组区域划分线,从所述目标组区域划分线对应的子线段中,确定与所述待查询区域相交的目标子线段;其中,目标组区域划分线对应的子线段是根据所述目标组区域划分线中的区域划分线的交点对每一区域划分线进行划分后得到的线段;根据与所述待查询区域相交的目标子线段,从位于所述索引区域内的实体对象中获取目标实体对象,根据所述待查询区域的位置,从所述目标实体对象中查询位于所述待查询区域内的实体对象。
另一方面,本发明实施例还提供一种非暂态可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的传输方法,例如包括:获取待查询区域,以及在包括所述待查询区域的索引区域内创建的至少一组区域划分线;其中,任一组区域划分线用于对所述索引区域进行划分或者用于对所述索引区域内通过其它任一组区域划分线形成的子索引区域进行划分;将与所述待查询区域相交的一组区域划分线,作为目标组区域划分线,从所述目标组区域划分线对应的子线段中,确定与所述待查询区域相交的目标子线段;其中,目标组区域划分线对应的子线段是根据所述目标组区域划分线中的区域划分线的交点对每一区域划分线进行划分后得到的线段;根据与所述待查询区域相交的目标子线段,从位于所述索引区域内的实体对象中获取目标实体对象,根据所述待查询区域的位置,从所述目标实体对象中查询位于所述待查询区域内的实体对象。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种实体对象处理方法,其特征在于,包括:
获取待查询区域,以及在包括所述待查询区域的索引区域内创建的至少一组区域划分线;其中,任一组区域划分线用于对所述索引区域进行划分或者用于对所述索引区域内通过其它任一组区域划分线形成的子索引区域进行划分;
将与所述待查询区域相交的一组区域划分线,作为目标组区域划分线,从所述目标组区域划分线对应的子线段中,确定与所述待查询区域相交的目标子线段;其中,目标组区域划分线对应的子线段是根据所述目标组区域划分线中的区域划分线的交点对每一区域划分线进行划分后得到的线段;
根据与所述待查询区域相交的目标子线段,从位于所述索引区域内的实体对象中获取目标实体对象,根据所述待查询区域的位置,从所述目标实体对象中查询位于所述待查询区域内的实体对象。
2.根据权利要求1所述的实体对象处理方法,其特征在于,所述根据与所述待查询区域相交的目标子线段,从位于所述索引区域内的实体对象中获取目标实体对象,包括:
若所述目标子线段唯一,且所述目标子线段为所述目标组区域划分线对应的子线段中的任一子线段,则将位于索引区域内的每一实体对象所在的区域中,与所述目标子线段相交的区域内的实体对象作为目标实体对象。
3.根据权利要求2所述的实体对象处理方法,其特征在于,所述将位于索引区域内的每一实体对象所在的区域中,与所述目标子线段相交的区域内的实体对象作为目标实体对象,包括:
获取对CIF-四叉树中每一节点增设的至少一个方向子节点;所述CIF-四叉树根据被各组区域划分线划分的索引区域创建;任一节点的方向子节点,根据指定组区域划分线的各子线段中与实体对象所在的区域相交的子线段创建;所述指定组区域划分线用于对所述任一节点对应的索引区域进行划分;
从所述CIF-四叉树中获取被所述目标组区域划分线划分的索引区域对应的节点,作为目标节点,从对所述目标节点增设的至少一个方向子节点中,获取目标方向子节点;其中,所述目标方向子节点处存储的实体对象所在的区域与所述目标子线段相交;
将所述目标方向子节点处存储的实体对象作为所述目标实体对象。
4.根据权利要求3所述的实体对象处理方法,其特征在于,所述将所述目标方向子节点处存储的实体对象作为所述目标实体对象,包括:
将用于存储所述目标方向子节点处的实体对象的实体存储节点,作为目标存储节点;
确定任一目标存储节点中用于存储所述目标方向子节点的实体对象的数据块,作为目标数据块;
根据每一所述目标数据块所在的实体存储节点,创建与所述任一目标存储节点对应的查询任务,以根据所述查询任务从所述任一目标存储节点中的目标数据块中读取所述目标实体对象。
5.根据权利要求4所述的实体对象处理方法,其特征在于,所述将用于存储所述目标方向子节点处的实体对象的实体存储节点,作为目标存储节点之前,还包括:
将各方向子节点处的实体对象按照预设存储方式存储到预置的实体存储节点中的数据块内;
其中,所述预设存储方式包括如下至少一种:所述CIF-四叉树中同一节点的不同方向子节点处的实体对象存储到不同实体存储节点中的数据块内、所述CIF-四叉树中同一方向子节点处的实体对象存储到不同实体存储节点中的数据块内。
6.根据权利要求5所述的实体对象处理方法,其特征在于,所述将各方向子节点处的实体对象按照预设存储方式存储到预置的实体存储节点中的数据块内,包括:
对任一待存储的实体对象,获取所述任一待存储的实体对象对应的方向子节点,作为待存储方向子节点;
根据所述待存储方向子节点对应的划分线编码、方向编码、所述待存储方向子节点在所述CIF-四叉树中的节点深度和所述待存储方向子节点处的实体对象已经占用的数据块的数量,确定用于存储所述任一待存储的实体对象的实体存储节点的节点编号,从所述节点编号对应的实体存储节点中分配用于存储所述任一待存储的实体对象的数据块;
其中,划分线编码用于区分所述CIF-四叉树中不同的节点;方向编码用于区分不同的方向子节点。
7.根据权利要求5所述的实体对象处理方法,其特征在于,所述将各方向子节点处的实体对象按照预设存储方式存储到预置的实体存储节点中的数据块内之后,还包括:
对任一待删除实体对象,从创建的至少一组区域划分线中,获取与所述任一待删除实体对象所在的区域相交的一组区域划分线,作为待处理组区域划分线;
从所述CIF-四叉树中确定被所述待处理组区域划分线划分的索引区域所对应的节点,作为待删除节点;
从所述待处理组区域划分线中的子线段中获取与所述任一待删除实体对象所在的区域相交的子线段,作为待处理子线段,根据所述待处理子线段,从对所述待删除节点增设的方向子节点中获取待删除方向子节点;
从所述待删除方向子节点处存储的实体对象中删除所述任一待删除实体对象。
8.根据权利要求7所述的实体对象处理方法,其特征在于,所述从所述待删除方向子节点出存储的实体对象中删除所述任一待删除实体对象,包括:
将待删除实体对象存储到预置的缓存数据块中,在所述缓存数据块中存储的待删除实体对象所占用的存储空间大于或等于预设存储空间后,从所述待删除方向子节点处存储的实体对象中删除所述任一待删除实体对象。
9.一种实体对象处理装置,其特征在于,包括:
获取模块,用于获取待查询区域,以及在包括所述待查询区域的索引区域内创建的至少一组区域划分线;其中,任一组区域划分线用于对所述索引区域进行划分或者用于对所述索引区域内通过其它任一组区域划分线形成的子索引区域进行划分;
确定模块,用于将与所述待查询区域相交的一组区域划分线,作为目标组区域划分线,从所述目标组区域划分线对应的子线段中,确定与所述待查询区域相交的目标子线段;其中,目标组区域划分线对应的子线段是根据所述目标组区域划分线中的区域划分线的交点对每一区域划分线进行划分后得到的线段;
查询模块,用于根据与所述待查询区域相交的目标子线段,从位于所述索引区域内的实体对象中获取目标实体对象,根据所述待查询区域的位置,从所述目标实体对象中查询位于所述待查询区域内的实体对象。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至8任一项所述的实体对象处理方法的步骤。
CN202010961798.1A 2020-09-14 实体对象处理方法、装置和电子设备 Active CN112328629B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010961798.1A CN112328629B (zh) 2020-09-14 实体对象处理方法、装置和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010961798.1A CN112328629B (zh) 2020-09-14 实体对象处理方法、装置和电子设备

Publications (2)

Publication Number Publication Date
CN112328629A true CN112328629A (zh) 2021-02-05
CN112328629B CN112328629B (zh) 2024-06-04

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104281701A (zh) * 2014-10-20 2015-01-14 北京农业信息技术研究中心 分布式多尺度空间数据查询方法及系统
CN105630968A (zh) * 2015-12-23 2016-06-01 华中师范大学 面向Cassandra的分布式可扩展四叉树索引机制及基于该机制的查询方法
US20160275148A1 (en) * 2015-03-20 2016-09-22 Huawei Technologies Co., Ltd. Database query method and device
WO2020108345A1 (zh) * 2018-11-27 2020-06-04 阿里巴巴集团控股有限公司 数据库索引以及数据库查询的处理方法、装置及设备
CN111241103A (zh) * 2020-01-13 2020-06-05 北京明略软件系统有限公司 数据存储方法、数据查询方法及相关装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104281701A (zh) * 2014-10-20 2015-01-14 北京农业信息技术研究中心 分布式多尺度空间数据查询方法及系统
US20160275148A1 (en) * 2015-03-20 2016-09-22 Huawei Technologies Co., Ltd. Database query method and device
CN105630968A (zh) * 2015-12-23 2016-06-01 华中师范大学 面向Cassandra的分布式可扩展四叉树索引机制及基于该机制的查询方法
WO2020108345A1 (zh) * 2018-11-27 2020-06-04 阿里巴巴集团控股有限公司 数据库索引以及数据库查询的处理方法、装置及设备
CN111241103A (zh) * 2020-01-13 2020-06-05 北京明略软件系统有限公司 数据存储方法、数据查询方法及相关装置

Similar Documents

Publication Publication Date Title
CN109165215B (zh) 一种云环境下时空索引的构建方法、装置及电子设备
Matsuyama et al. A file organization for geographic information systems based on spatial proximity
CN105138560A (zh) 基于多级空间索引技术的分布式空间矢量数据管理方法
CN112765405B (zh) 空间数据搜索结果的聚类和查询的方法及系统
CN112181991B (zh) 基于快速构建kd树的地球模拟系统网格重映射方法
CN111723096B (zh) 一种集成GeoHash和Quadtree的空间数据索引方法
CN112925789B (zh) 一种基于Spark的空间矢量数据内存存储查询方法及系统
CN113268557B (zh) 一种适应显示导向型可视化分析的快速的空间索引方法
CN111090712A (zh) 一种数据处理方法、装置、设备及计算机存储介质
CN110245135B (zh) 一种基于numa架构的大规模流式图数据更新方法
CN110175175A (zh) 一种基于spark的分布式空间二级索引与范围查询算法
CN108920105B (zh) 基于社区结构的图数据分布式存储方法及装置
Roumelis et al. New plane-sweep algorithms for distance-based join queries in spatial databases
CN112035586A (zh) 基于可扩展学习索引的空间范围查询方法
CN111552694A (zh) 一种自适应地理空间网格索引方法
CN115718819A (zh) 一种索引构建方法、数据读取方法及索引构建装置
CN113704248B (zh) 一种基于外置索引的区块链查询优化方法
CN110955656A (zh) 矢量数据拓扑运算索引优化机制与构建方法
Kocon et al. Point cloud indexing using Big Data technologies
CN111353012B (zh) 空间文本数据缓存处理方法、装置、电子设备及存储介质
KR102006283B1 (ko) 패스트맵을 이용한 데이터셋의 m-트리 적재방법
CN112328629B (zh) 实体对象处理方法、装置和电子设备
CN112328629A (zh) 实体对象处理方法、装置和电子设备
CN105740371A (zh) 一种基于密度的增量聚类数据挖掘方法及系统
CN113722415B (zh) 点云数据的处理方法、装置、电子设备及存储介质

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
GR01 Patent grant