CN113886433A - 一种层次结构区域检索方法 - Google Patents
一种层次结构区域检索方法 Download PDFInfo
- Publication number
- CN113886433A CN113886433A CN202111167007.9A CN202111167007A CN113886433A CN 113886433 A CN113886433 A CN 113886433A CN 202111167007 A CN202111167007 A CN 202111167007A CN 113886433 A CN113886433 A CN 113886433A
- Authority
- CN
- China
- Prior art keywords
- node
- codes
- child
- sub
- bit width
- 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
Images
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
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)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种层次结构区域检索方法,包括:一种检索后代与祖先辅助结构,所述辅助结构在关联设计的基础上增加一个编码字段来表示范围的包含关系,从而对区域范围检索提供数据库层面支持;本发明中在增加辅助编码字段后,对于业务需求中的祖先/后代检索不再需要进行程序逻辑上的迭代处理;也不需要考虑数据库层面的语法支持与兼容性问题;同时也可以对编码字段建立索引,提升范围检索的效率。
Description
技术领域
本发明属于计算机数据库技术领域,尤其涉及一种层次结构区域检索方法。
背景技术
在关系型数据库设计中层次结构是一种常见的业务结构,通常用来表达类似组织、地域、分类等业务的上下级关系。最常见的设计方法为id与parent_id自关联设计,也就是在数据库表中设计两个字段来表达记录之间的上下级关系。如果一条记录的id与另外一条记录的parent_id相等,这两条记录之间存在上下级关系,这种自关联的设计扩展性强、关系表达完备;但存在一个较大的缺陷是在进行后代与祖先检索十分不便,类似检索某个节点下的所有后代/或某种特征的后代、某个节点的祖先/或某种特征的祖先,这都是自关联结构不太擅长的领域。对于id与parent_id自关联设计这样的检索需求,某些数据库提供了数据库层面的底层支持;但是兼容性很差,如果在设计层面兼容就需要进行程序的迭代,这会造成检索的性能问题。
发明内容
本发明的目的在于针对现有技术中层次结构(多级组织、多级分类等具备树形结构特征的数据)自关联设计的不足,提供一种层次结构区域检索方法。
本发明的目的是通过以下技术方案来实现的:一种层次结构区域检索方法,在关联设计的基础上增加一个编码字段来表示范围的包含关系,从而对区域范围检索提供数据库层面支持。
所述编码字段,包括:
A、编码字符集合:用于编码的字符为0-9十个数字字符、A-Z 26个大写英文字符,总共36个编码字符。
B、字符顺序与大小:36个字符存在先后次序,规定字符先后顺序为0->1->2->3->4->5->6->7->8->9->A->B->C->...->X->Y->Z,位于前面的字符较小,位于后面的字符较大,其中0为最小字符,Z为最大字符。
C、编码进位制:编码方法采用36进位制。
D、编码位宽:编码位宽是指两个相邻层级之间编码长度的差值,编码的位宽决定了这种层级结构可以容纳的子级节点数量,位宽越大,一个节点可以容纳子级节点的数量就越大。
在关系型数据库中,使任意节点的子级编码都以当前节点的编码为前缀,使用LIKE筛检条件检索整个层次结构中某一个或某几个树形分支区域数据。
进一步地,主要的业务操作包括添加子节点、删除子节点、移动节点。
进一步地,所述添加子节点,包括:在指定的节点之下添加子节点,需要计算被添加子节点的编码。如果当前节点没有子节点,那么就取本子级最小的编码,本子级最小的编码与编码采用的位宽有关系。如果本子级已经存在子节点,那么添加的子节点编码为最大的子节点编码的后续编码,后续编码采用进位制方式。此时需要对编码进行压缩,最终被添加的子节点的编码为父节点编码+本子级编码。
进一步地,所述删除子节点,包括:删除指定节点必须删除此节点以及这个节点的所有后代。
进一步地,所述移动指定节点,包括:首先需要计算目标节点的子级节点中编码的最大值,如果此节点没有子节点,就获取固定位宽的编码最小值;当计算被移动节点的编码取值之后,则将被移动节点的所有后代节点编码的取值的前缀,替换为上级节点编码。
进一步地,子级的数量上限与编码的位宽有关系,如果位宽为m,则最大的子级数量为36m。
进一步地,通过匹配符能够检索任意位数的区域数据。
本发明的有益效果是:本发明中在增加辅助编码字段后,对于业务需求中的祖先/后代检索不再需要进行程序逻辑上的迭代处理;也不需要考虑数据库层面的语法支持与兼容性问题;同时也可以对编码字段建立索引,提升范围检索的效率。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细的说明:
图1是本发明增强功能实现的辅助结构示意图;
图2是添加子节点示意图;
图3是删除子节点示意图;
图4是移动子节点示意图。
具体实施方式
为了使本发明的目的和优点更加清楚明白,下面结合实施例对本发明作进一步描述;应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
下面参照附图来描述本发明的优选实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非在限制本发明的保护范围。
本发明一种层次结构区域检索方法,包括:一种检索后代与祖先辅助结构,如图1所示,所述辅助结构在关联设计的基础上增加一个编码字段来表示范围的包含关系,从而对区域范围检索提供数据库层面支持。所谓层次结构区域检索是指在树形结构中的某一个或某几个子树分支下筛检具有某些特征的节点数据。
所述编码字段,包括:
A、编码字符集合:用于编码的字符为0-9十个数字字符、A-Z 26个大写英文字符,总共36个编码字符。
B、字符顺序与大小:36个字符存在先后次序,规定字符先后顺序为0->1->2->3->4->5->6->7->8->9->A->B->C->D->E->F->G->H->I->G->K->L->M->N->O->P->Q->R->S->T->U->V->W->X->Y->Z,位于前面的字符较小,位于后面的字符较大,其中0为最小字符,Z为最大字符,最大字符Z后续顺序取值为最小字符0。
C、编码进位制:编码方法采用类似数字进位制(2、8、10、16等进位制),当前编码方法采用36进位制,进位逻辑具体如下:
a)1位编码(个位):0、1、...、9、A、...、Y、Z
当编码达到最大字符Z则需要向前进位,因此Z的后继则为10成为两位编码,由于只有1位编码,出现这种情况在进位制中称为溢出,此时需要更多的编码位数。
b)2位编码(十位):00、01、...、09、0A、...、0Y、0Z、10、11、...、19、1A、...、1Z、20...、ZZ
每当个位达到最大字符Z就向十位进一,同时个位变成最小字符0,最终十位会逐渐增大,与个位逐渐增大相似,如9Z到A0、AZ到B0,最终两位编码会达到最大编码ZZ,ZZ-100,此时继续编码就会产生两位编码的溢出,就需要更多的编码位数。
c)3位编码(百位):000、001、...、009、00A、...、00Y、00Z、010、...、ZZZ
每当个位达到最大字符Z就向十位进一,而每当十位达到最大字符Z就向百位进一,如0ZZ到100、9ZZ到A00、YZZ到Z00,最终百位也会逐渐增大达到最大字符Z,三位编码最终也会达到最大字符ZZZ,此时继续编码就会产生三为编码的溢出。
d)无限位编码:如此继续下去便会形成36进制的千位、万位……编码,始终保持每个编码位36个数就向前一位进一,如此便会形成无限位的编码方法。
D、编码位宽:编码位宽是指两个相邻层级之间编码长度的差值,编码的位宽决定了这种层级结构可以容纳的子级节点数量,位宽越大,一个节点可以容纳子级节点的数量就越大。
基于此编码方案,同时在逻辑设计上保证层次结构数据具有任意节点的子级编码都以当前节点的编码为前缀的特征,那么在关系型数据库中,可以使用LIKE筛检条件高效检索整个层次结构中某一个或某几个树形分支区域数据。通过匹配符能够高效检索任意位数或固定位数的区域数据,例如“00%”表示检索层级编码为以“00”开头的所有位数数据;“00__”表示检索层级编码为以“00”开头且层级编码位数为4位的所有数据。匹配符的制定规范符合SQL92的规范。
本发明主要是增强层次结构的范围检索功能,增加的辅助结构给检索带来巨大的便利,但是要维护这个编码辅助结构需要规范的逻辑算法。下面将根据层次结构中主要的业务操作,对编码辅助结构的计算逻辑进行详细说明,层次结构主要的业务操作包括添加子节点、删除子节点、移动节点。
如图2所示,在指定的节点之下添加子节点,需要计算被添加子节点的编码。如果当前节点没有子节点,那么就取本子级最小的编码,本子级最小的编码与编码采用的位宽有关系,如果位宽是2那么最小的编码为00。如果本子级已经存在子节点,那么添加的子节点编码为最大的子节点编码的后续编码,后续编码采用进位制方式,如果位宽为2,那么00的后续编码为01,09的后续编码为0A,0A的后续编码为0B,0Z的后续编码为10,10的后续编码为11,19的后续编码为1A......ZX的后续编码为ZY,ZY的后续编码为ZZ,最后ZZ的后续编码可以循环取00也可以认为是移除。此时需要对编码进行压缩,最终被添加的子节点的编码为父节点编码+本子级编码,例如与图1相比,图2在id=4的节点之下添加一个子节点,它的编码取值为00000101。
如图3所示,删除指定节点,层次结构是十分严谨的关系结构,如果删除一个节点,那么这个节点的后代节点也不可能存在,因此删除指定节点必须删除此节点以及这个节点的所有后代,如果要删除图1中id=5的节点,则id=5、6、7、8的所有节点都需要被删除,此时只需要使用条件code like‘00000100%’就可以满足条件,删除之后的节点形态可以参考图3。
如图4所示,移动指定节点,这种带有编码辅助字段的层次结构,对于节点的移动比较敏感,因为节点的移动之后如果要满足后代节点的编码取值,必须以上级节点编码为前缀,那么被移动节点以及这个节点的后代节点的编码字段取值都要进行调整。调整的逻辑与添加子节点比较相似,首先需要计算目标节点(移动到的节点)的子级节点中编码的最大值,如果此节点没有子节点,就获取固定位宽的编码最小值;当计算被移动节点的编码取值之后,则将被移动节点的所有后代节点编码的取值的前缀,全部由原来的前缀替换为新的前缀,具体可以参考图1和图4。
这种编码辅助结构的主要优势在范围检索,同时这种结构对于子级的数量存在上限,这个上限与编码的位宽有关系,如果位宽为m,则最大的子级数量为36m;正常情况使用位宽2基本就够用了。
至此,已经结合附图所示的优选实施方式描述了本发明的技术方法,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征做出等同的更改或替换,这些更改或替换之后的技术方法都将落入本发明的保护范围之内。
Claims (7)
1.一种层次结构区域检索方法,其特征在于,在关联设计的基础上增加一个编码字段来表示范围的包含关系,从而对区域范围检索提供数据库层面支持。
所述编码字段,包括:
A、编码字符集合:用于编码的字符为0-9十个数字字符、A-Z 26个大写英文字符,总共36个编码字符。
B、字符顺序与大小:36个字符存在先后次序,规定字符先后顺序为0->1->2->3->4->5->6->7->8->9->A->B->C->...->X->Y->Z,位于前面的字符较小,位于后面的字符较大,其中0为最小字符,Z为最大字符。
C、编码进位制:编码方法采用36进位制。
D、编码位宽:编码位宽是指两个相邻层级之间编码长度的差值,编码的位宽决定了这种层级结构可以容纳的子级节点数量,位宽越大,一个节点可以容纳子级节点的数量就越大。
在关系型数据库中,使任意节点的子级编码都以当前节点的编码为前缀,使用LIKE筛检条件检索整个层次结构中某一个或某几个树形分支区域数据。
2.根据权利要求1所述层次结构区域检索方法,其特征在于,主要的业务操作包括添加子节点、删除子节点、移动节点。
3.根据权利要求1所述层次结构区域检索方法,其特征在于,所述添加子节点,包括:在指定的节点之下添加子节点,需要计算被添加子节点的编码。如果当前节点没有子节点,那么就取本子级最小的编码,本子级最小的编码与编码采用的位宽有关系。如果本子级已经存在子节点,那么添加的子节点编码为最大的子节点编码的后续编码,后续编码采用进位制方式。此时需要对编码进行压缩,最终被添加的子节点的编码为父节点编码+本子级编码。
4.根据权利要求1所述层次结构区域检索方法,其特征在于,所述删除子节点,包括:删除指定节点必须删除此节点以及这个节点的所有后代。
5.根据权利要求1所述层次结构区域检索方法,其特征在于,所述移动指定节点,包括:首先需要计算目标节点的子级节点中编码的最大值,如果此节点没有子节点,就获取固定位宽的编码最小值;当计算被移动节点的编码取值之后,则将被移动节点的所有后代节点编码的取值的前缀,替换为上级节点编码。
6.根据权利要求1所述层次结构区域检索方法,其特征在于,子级的数量上限与编码的位宽有关系,如果位宽为m,则最大的子级数量为36m。
7.根据权利要求1所述层次结构区域检索方法,其特征在于,通过匹配符能够检索任意位数的区域数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111167007.9A CN113886433A (zh) | 2021-10-01 | 2021-10-01 | 一种层次结构区域检索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111167007.9A CN113886433A (zh) | 2021-10-01 | 2021-10-01 | 一种层次结构区域检索方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113886433A true CN113886433A (zh) | 2022-01-04 |
Family
ID=79005313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111167007.9A Pending CN113886433A (zh) | 2021-10-01 | 2021-10-01 | 一种层次结构区域检索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113886433A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1768480A (zh) * | 2003-02-03 | 2006-05-03 | 夏普株式会社 | 编码装置和方法、编码装置和方法、计算机程序以及记录介质 |
CN103314371A (zh) * | 2010-12-31 | 2013-09-18 | 肖岩 | 一种检索的方法和系统 |
CN103853773A (zh) * | 2012-12-04 | 2014-06-11 | 厦门亿联网络技术股份有限公司 | 一种Mysql数据库下树形数据结构的检索方法 |
CN107818427A (zh) * | 2017-11-24 | 2018-03-20 | 国网内蒙古东部电力有限公司 | 一种用于电网技改大修工程的工程量清单信息与wbs信息耦合方法及其系统 |
CN109684336A (zh) * | 2018-12-27 | 2019-04-26 | 普元信息技术股份有限公司 | 基于大数据应用实现树形数据表高效检索与排序功能的系统及方法 |
CN111339245A (zh) * | 2020-03-03 | 2020-06-26 | 腾讯云计算(北京)有限责任公司 | 数据存储方法、装置、存储介质及设备 |
CN112287642A (zh) * | 2020-12-30 | 2021-01-29 | 华南理工大学 | 树形结构自增数据节点id及其路径链二进制编码方法 |
-
2021
- 2021-10-01 CN CN202111167007.9A patent/CN113886433A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1768480A (zh) * | 2003-02-03 | 2006-05-03 | 夏普株式会社 | 编码装置和方法、编码装置和方法、计算机程序以及记录介质 |
CN103314371A (zh) * | 2010-12-31 | 2013-09-18 | 肖岩 | 一种检索的方法和系统 |
CN103853773A (zh) * | 2012-12-04 | 2014-06-11 | 厦门亿联网络技术股份有限公司 | 一种Mysql数据库下树形数据结构的检索方法 |
CN107818427A (zh) * | 2017-11-24 | 2018-03-20 | 国网内蒙古东部电力有限公司 | 一种用于电网技改大修工程的工程量清单信息与wbs信息耦合方法及其系统 |
CN109684336A (zh) * | 2018-12-27 | 2019-04-26 | 普元信息技术股份有限公司 | 基于大数据应用实现树形数据表高效检索与排序功能的系统及方法 |
CN111339245A (zh) * | 2020-03-03 | 2020-06-26 | 腾讯云计算(北京)有限责任公司 | 数据存储方法、装置、存储介质及设备 |
CN112287642A (zh) * | 2020-12-30 | 2021-01-29 | 华南理工大学 | 树形结构自增数据节点id及其路径链二进制编码方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109445834B (zh) | 基于抽象语法树的程序代码相似性快速比较方法 | |
KR100812378B1 (ko) | 지속적으로 발생되는 트랜잭션 데이터 집합인 데이터 스트림 환경에서 빈발항목집합 탐색을 위한 축약형 전위 트리를 이용한 빈발항목집합 탐색 방법 | |
KR101105363B1 (ko) | 롱 트랜잭션 데이터 스트림을 위한 빈발항목집합 탐색 방법 | |
Wang et al. | Top down fp-growth for association rule mining | |
CN107092659B (zh) | 一种通用的树形结构存储解析方法 | |
US20170255670A1 (en) | Method, apparatus, system, and computer program product for data compression | |
US20060248063A1 (en) | System and method for efficiently tracking and dating content in very large dynamic document spaces | |
Giancarlo | A generalization of the suffix tree to square matrices, with applications | |
CN106095762A (zh) | 一种基于本体模型库的新闻推荐方法及装置 | |
US20060036627A1 (en) | Method and apparatus for a restartable hash in a trie | |
CN101876979B (zh) | 查询扩展方法及查询扩展系统 | |
JP2009518718A (ja) | Xmlのための簡素インデックス構造 | |
CN111597371B (zh) | 外观专利的多模态图像检索方法及系统 | |
CN113961528A (zh) | 基于知识图谱的文件语义关联存储系统及方法 | |
CN111984732B (zh) | 在区块链上实现去中心化检索的方法、节点及区块链网络 | |
Sarawagi | Automation in information extraction and integration | |
CN113886433A (zh) | 一种层次结构区域检索方法 | |
Zhang et al. | Clustering in dynamic spatial databases | |
KR101070738B1 (ko) | 온톨로지를 이용한 문서의 다단계 군집화 방법 및 장치 | |
CN108563735B (zh) | 一种基于词语关联的数据分割搜索方法 | |
CN115563058A (zh) | 基于要素提取的相似案件检索方法 | |
CN108009153A (zh) | 一种基于搜索语句切词结果的搜索方法及系统 | |
CN107729351A (zh) | 基于音乐搜索引擎的多层查询纠正方法及系统 | |
KR20080008573A (ko) | Xml 데이터로부터 연관규칙을 추출하기 위한 방법 | |
CN113420219A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220104 |