CN104281686A - 快速批量处理树形结点的方法及系统 - Google Patents
快速批量处理树形结点的方法及系统 Download PDFInfo
- Publication number
- CN104281686A CN104281686A CN201410530710.5A CN201410530710A CN104281686A CN 104281686 A CN104281686 A CN 104281686A CN 201410530710 A CN201410530710 A CN 201410530710A CN 104281686 A CN104281686 A CN 104281686A
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- pending
- descendants
- ancestors
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明适用于数据库结构技术领域,提供了一种快速批量处理树形结点的方法:待处理结点信息的获取:接收用户输入的待处理结点信息;子孙结点的查找:查找出祖先结点中包含所述待处理结点信息的所有结点,作为待处理结点的子结点;所述祖先结点作为每一结点的字段属性信息,用于表征各结点所直接和间接隶属的结点。本发明利用祖先结点的概念,可快速定位到所要查找的子孙结点,然后利用待处理结点的祖先结点修改后的内容,直接删除、移动其子孙结点的祖先结点的内容,以达到快速高效处理结点的目的。
Description
技术领域
本发明属于数据库结构技术领域,尤其涉及一种高效快速地批量处理树形结点的方法及系统。
背景技术
树形结构用途广泛,不可避免地需要对树形结点进行查找、移动、删除等处理操作。如果按照数据库规范来设计的话,对于批量查找、删除、移动结点时,对所要查找结点可以很快地查询到,进而进行相关的删除或者移动(更新)操作。但是如果要查找某结点的所有子孙结点时,这种设计在性能上就很难满足,通常要用递归才能完成,但递归的速度慢,效率低,从而也影响到批量处理(更新)操作的效率。
发明内容
本发明所要解决的第一个技术问题在于提供一种快速批量处理树形结点的方法,旨在提高批量处理树形结点的效率。
本发明是这样实现的,一种快速批量处理树形结点的方法,包括下述步骤:
待处理结点信息的获取:接收用户输入的待处理结点信息;
子孙结点的查找:查找出祖先结点中包含所述待处理结点信息的所有结点,作为待处理结点的子孙结点;所述祖先结点作为每一结点的字段属性信息,用于表征各结点所直接和间接隶属的结点。
进一步地,在子孙结点的查找步骤之后,所述方法还包括下述步骤:子孙结点的删除:将查找到的待处理结点的子孙结点予以删除。
进一步地,在子孙结点的查找步骤之后,所述方法还包括下述步骤:
待处理结点的移动:将待处理结点i的父结点修改为目标结点j,并将待处理结点i的祖先结点修改为待处理结点i在根节点A至目标结点j形成的结点链路上、所直接和间接隶属的所有结点;其中,父节点为某一结点所直接隶属的上一级结点;
子孙结点的移动:将待处理结点i的所有子孙结点的祖先结点位于待处理结点i之前的部分,替换为与待处理结点i修改后的祖先结点相一致。
本发明所要解决的第二个技术问题在于提供一种快速批量处理树形结点的系统,包括:
待处理结点信息获取模块,用于接收用户输入的待处理结点信息;
子孙结点查找模块,用于查找出祖先结点中包含所述待处理结点信息的所有结点,作为待处理结点的子孙结点;所述祖先结点作为每一结点的字段属性信息,用于表征各结点所直接和间接隶属的结点。
进一步地,所述系统还包括:子孙结点删除模块,用于将查找到的待处理结点的子孙结点予以删除。
进一步地,所述系统还包括:
待处理结点移动模块,用于将待处理结点i的父结点修改为目标结点j,并将待处理结点i的祖先结点修改为待处理结点i在根节点A至目标结点j形成的结点链路上、所直接和间接隶属的所有结点;其中,父节点为某一结点所直接隶属的上一级结点;
子孙结点移动模块,用于将待处理结点i的所有子孙结点的祖先结点位于待处理结点i之前的部分,替换为与待处理结点i修改后的祖先结点相一致。
本发明与现有技术相比,有益效果在于:本发明利用祖先结点的概念,可快速定位到所要查找的子孙结点,然后利用待处理结点的祖先结点修改后的内容,直接删除或移动其子孙结点的祖先结点的内容,以达到快速高效处理结点的目的。
附图说明
图1是本发明提供的快速批量处理树形结点的方法的实现流程图;
图2是本发明实施例提供的一种树形结点的示意图;
图3是对图2所示树形结点的进行子结点删除后的结构示意图;
图4是对图2所示树形结点的进行结点移动后的结构示意图;
图5是本发明提供的快速批量处理树形结点的系统的结构原理图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明中,首先添加一个字段用于存放所有结点的祖先结点,利用该祖先结点可快速定位到所要查找的子孙结点,然后再根据需要进行后续删除、移动等处理。
图1示出了本发明提供的批量处理树形结点的方法的实现流程,详述如下。
步骤S101为待处理结点信息获取的步骤,即,接收用户输入的待处理结点信息。
本发明中,父节点为某一结点所直接隶属的上一级结点,祖先结点为某一结点所直接和间接隶属的所有结点,而待处理结点i表示从结点i及其所有子孙结点都将被处理。以图2中的树形结点为例,其存储结构如下表一所示:
表一
列名 | 类型 | 备注 |
Tree_Id | Int(4) | 主键 |
Tree_AncestorsId | Varchar(4000) | 祖先结点Id, |
... |
其中,结点A为整个树形结构的根节点,而结点B为结点D和E的父节点,结点E为结点G和H的父节点,依此类推。图2中各结点的祖先结点则具体如下表二所示:
表二
Tree_Id | Tree_AncestorsId |
A | / |
B | /A/ |
E | /A/B/ |
G | /A/B/E/ |
H | /A/B/E/ |
I | /A/B/E/H/ |
J | /A/B/E/H/I/ |
C | /A/ |
D | /A/B/ |
F | /A/B/D/ |
... |
根据表一的存储结构及表二的数据看出,数据表结构添加了一个字段Tree_AncestorsId,用于存储当前结点的所有祖先结点Id。
在步骤S102中,查找出祖先结点中包含所述待处理结点信息的所有结点,作为待处理结点的子孙结点。
查找E结点的所有子结点时,只要在查找Tree_AncestorsId中存在/E/内容的结点,就是所要查找的结点。即G、H、I、J结点,查找结果如表三所示。
表三
Tree_Id | Tree_AncestorsId |
G | /A/B/E/ |
H | /A/B/E/ |
I | /A/B/E/H/ |
J | /A/B/E/H/I/ |
子孙结点查找之后,还可以进一步进行快速删除、移动等处理。
对于子孙结点的删除。在删除的过滤条件中,查找Tree_AncestorsId中存在/E/内容的结点,就是所要删除的结点。即G、H、I、J结点,删除后的树形结点结构参照图3,各结点字段数据如表四所示。
表四
Tree_Id | Tree_AncestorsId |
A | / |
B | /A/ |
E | /A/B/ |
C | /A/ |
D | /A/B/ |
F | /A/B/D/ |
... |
对于待处理结点及其子孙结点的移动。首先,将待处理结点i的父结点修改为目标结点j,并将待处理结点i的祖先结点修改为待处理结点i在根节点A至目标结点j形成的结点链路上、所直接和间接隶属的所有结点。然后,将待处理结点i的所有子孙结点的祖先结点位于待处理结点i之前的部分,替换为与待处理结点i修改后的祖先结点相一致。
假定当前需要移动图2中的结点E及其子孙结点,移动后的树形结点如图3所示,此时,结点E的父节点和祖先结点要修改,具体地,结点E以结点F为父节点,以“/A/B/D/F”为祖先结点。另外E结点的所有子孙结点(G,H,I,J)的祖先结点也都要修改。移动后的树形结点结构参照图4,各结点字段数据如表五所示。
表五
Tree_Id | Tree_AncestorsId |
... | |
A | / |
B | /A/ |
E | /A/B/D/F/ |
G | /A/B/D/F/E/ |
H | /A/B/D/F/E/ |
I | /A/B/D/F/E/H/ |
J | /A/B/D/F/E/H/I/ |
C | /A/ |
D | /A/B/ |
F | /A/B/D/ |
对比表二和表五,对于结点E、G、H、I、J的祖先结点,/A/B/D/F/部分表示结点处理后,祖先结点的内容发生了改变,其余部分表示结点处理后祖先结点内容没有变化的部分,没有变化的内容就是要待处理结点E以下的子孙结点。
简单来说,移动E结点到F结点下时,将E结点的祖先结点修改为“/A/B/D/F/”,对于E结点的子孙结点(G,H,I,J),只需将祖先结点字段中,把等于移动前E结点的祖先结点的内容“/A/B/”替换为移动后E结点的祖先结点内容“/A/B/D/F/”。
图5示出了本发明提供的批量处理树形结点的系统的结构原理,为例便于描述,仅示出了与本发明相关的部分。
参照图5,该系统包括待处理结点信息获取模块51和子孙结点查找模块52,其中,待处理结点信息获取模块51用于接收用户输入的待处理结点信息,子孙结点查找模块52用于查找出祖先结点中包含所述待处理结点信息的所有结点,作为待处理结点的子孙结点。其中,父节点、祖先结点、待处理结点的定义如上文所述,此处不再一一赘述。
为满足子孙结点的删除操作,还可包括子孙结点删除模块53,用于将查找到的待处理结点的子孙结点予以删除。
同理,为满足结点的移动操作,还可包括待处理结点移动模块541和子孙结点移动模块542,其中,待处理结点移动模块541用于将待处理结点i的父结点修改为目标结点j,并将待处理结点i的祖先结点修改为待处理结点i在根节点A至目标结点j形成的结点链路上、所直接和间接隶属的所有结点。然后,子孙结点移动模块542将待处理结点i的所有子孙结点的祖先结点位于待处理结点i之前的部分,替换为与待处理结点i修改后的祖先结点相一致。
综上所述,相对于现有的速度慢、效率低的采用递归方法遍历的处理操作,本发明可以更快速的查找到要处理的结点及其它子孙结点,并且使用替换内容的方法快速更新结点的祖先点内容,以达到快速、高效的处理效果。本发明可应用于诸多采用树形结构表达的菜单中,如商品分类:家电>电视>类型>…,行政区域划分:省>市>区…,人事组织结构:总经理>副总经理>总监>主管…等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种快速批量处理树形结点的方法,其特征在于,包括下述步骤:
待处理结点信息的获取:接收用户输入的待处理结点信息;
子孙结点的查找:查找出祖先结点中包含所述待处理结点信息的所有结点,作为待处理结点的子孙结点;所述祖先结点作为每一结点的字段属性信息,用于表征各结点所直接和间接隶属的结点。
2.如权利要求1所述的方法,其特征在于,在子孙结点的查找步骤之后,所述方法还包括下述步骤:
子孙结点的删除:将查找到的待处理结点的子孙结点予以删除。
3.如权利要求1所述的方法,其特征在于,在子孙结点的查找步骤之后,所述方法还包括下述步骤:
待处理结点的移动:将待处理结点i的父结点修改为目标结点j,并将待处理结点i的祖先结点修改为待处理结点i在根节点A至目标结点j形成的结点链路上、所直接和间接隶属的所有结点;其中,父节点为某一结点所直接隶属的上一级结点;
子孙结点的移动:将待处理结点i的所有子孙结点的祖先结点位于待处理结点i之前的部分,替换为与待处理结点i修改后的祖先结点相一致。
4.一种快速批量处理树形结点的系统,其特征在于,包括:
待处理结点信息获取模块,用于接收用户输入的待处理结点信息;
子孙结点查找模块,用于查找出祖先结点中包含所述待处理结点信息的所有结点,作为待处理结点的子孙结点;所述祖先结点作为每一结点的字段属性信息,用于表征各结点所直接和间接隶属的结点。
5.如权利要求4所述的系统,其特征在于,所述系统还包括:
子孙结点删除模块,用于将查找到的待处理结点的子孙结点予以删除。
6.如权利要求4所述的系统,其特征在于,所述系统还包括:
待处理结点移动模块,用于将待处理结点i的父结点修改为目标结点j,并将待处理结点i的祖先结点修改为待处理结点i在根节点A至目标结点j形成的结点链路上、所直接和间接隶属的所有结点;其中,父节点为某一结点所直接隶属的上一级结点;
子孙结点移动模块,用于将待处理结点i的所有子孙结点的祖先结点位于待处理结点i之前的部分,替换为与待处理结点i修改后的祖先结点相一致。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410530710.5A CN104281686A (zh) | 2014-10-10 | 2014-10-10 | 快速批量处理树形结点的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410530710.5A CN104281686A (zh) | 2014-10-10 | 2014-10-10 | 快速批量处理树形结点的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104281686A true CN104281686A (zh) | 2015-01-14 |
Family
ID=52256559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410530710.5A Pending CN104281686A (zh) | 2014-10-10 | 2014-10-10 | 快速批量处理树形结点的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104281686A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107679049A (zh) * | 2016-08-02 | 2018-02-09 | 北京京东尚科信息技术有限公司 | 获取树形结构数据两节点间路径的方法、装置及系统 |
CN110889022A (zh) * | 2018-08-17 | 2020-03-17 | 迈普通信技术股份有限公司 | 数据查询方法、装置及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060036633A1 (en) * | 2004-08-11 | 2006-02-16 | Oracle International Corporation | System for indexing ontology-based semantic matching operators in a relational database system |
CN102867059A (zh) * | 2012-09-19 | 2013-01-09 | 浪潮(北京)电子信息产业有限公司 | 一种树形结构中数据的处理方法和系统 |
-
2014
- 2014-10-10 CN CN201410530710.5A patent/CN104281686A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060036633A1 (en) * | 2004-08-11 | 2006-02-16 | Oracle International Corporation | System for indexing ontology-based semantic matching operators in a relational database system |
CN102867059A (zh) * | 2012-09-19 | 2013-01-09 | 浪潮(北京)电子信息产业有限公司 | 一种树形结构中数据的处理方法和系统 |
Non-Patent Citations (2)
Title |
---|
夏秀峰等: "基于NoSQL的PDM产品结构数据组织", 《沈阳航空航天大学学报》 * |
谭振林等: "《SQL反模式》", 30 September 2011, 人民邮电出版社 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107679049A (zh) * | 2016-08-02 | 2018-02-09 | 北京京东尚科信息技术有限公司 | 获取树形结构数据两节点间路径的方法、装置及系统 |
CN110889022A (zh) * | 2018-08-17 | 2020-03-17 | 迈普通信技术股份有限公司 | 数据查询方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109299102B (zh) | 一种基于Elastcisearch的HBase二级索引系统及方法 | |
US9996581B2 (en) | Real-time saved-query updates for a large graph | |
CN106970936B (zh) | 数据处理方法及装置、数据查询方法及装置 | |
CN107291807B (zh) | 一种基于图遍历的sparql查询优化方法 | |
US20150120775A1 (en) | Answering relational database queries using graph exploration | |
CN105138661A (zh) | 一种基于Hadoop的网络安全日志k-means聚类分析系统及方法 | |
CN110059264B (zh) | 基于知识图谱的地点检索方法、设备及计算机存储介质 | |
CN104239511B (zh) | 一种面向MongoDB的用户空间文件系统实现方法 | |
CN104391730A (zh) | 一种软件源码语言翻译系统及方法 | |
CN105335479A (zh) | 一种基于sql的文本数据统计实现方法 | |
US20140089338A1 (en) | Query translation for searching complex structures of objects | |
CN108681603B (zh) | 数据库中快速搜索树形结构数据的方法、存储介质 | |
CN102915382A (zh) | 一种基于索引的数据库的数据查询方法和装置 | |
CN106777343A (zh) | 增量分布式索引系统和方法 | |
CN104408171A (zh) | 单据子表行关联查询装置和方法 | |
CN104620241A (zh) | 多语言文档聚类 | |
CN104346331A (zh) | Xml数据库的检索方法及系统 | |
CN104462429A (zh) | 数据库查询语句的生成方法及装置 | |
CN102819600A (zh) | 面向电力生产管理系统关系数据库的关键词搜索方法 | |
CN104239470A (zh) | 一种面向分布式环境的空间数据复合处理系统和方法 | |
CN108241709B (zh) | 一种数据集成方法、装置和系统 | |
CN104462095A (zh) | 一种查询语句公共部分的提取方法及装置 | |
CN104281686A (zh) | 快速批量处理树形结点的方法及系统 | |
CN108959330B (zh) | 一种数据库的处理、数据查询方法及设备 | |
CN113704248A (zh) | 一种基于外置索引的区块链查询优化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150114 |