CN107766355A - 层级数据管理方法、层级数据管理系统及即时通信系统 - Google Patents
层级数据管理方法、层级数据管理系统及即时通信系统 Download PDFInfo
- Publication number
- CN107766355A CN107766355A CN201610680284.2A CN201610680284A CN107766355A CN 107766355 A CN107766355 A CN 107766355A CN 201610680284 A CN201610680284 A CN 201610680284A CN 107766355 A CN107766355 A CN 107766355A
- Authority
- CN
- China
- Prior art keywords
- hierarchical data
- hierarchical
- data management
- caching
- interface
- 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
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/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/282—Hierarchical databases, e.g. IMS, LDAP data stores or Lotus Notes
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (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
技术领域
本发明涉及即时通信领域,具体涉及层级数据管理方法、层级数据管理系统及即时通信系统。
背景技术
即时通信领域主要基于两种架构进行通信:扁平化架构和多层级架构。扁平化架构用于在不存在上下级关系的用户之间进行通信,QQ群和微信群都基于扁平化架构进行通信;多层级通信架构用于在存在上下级关系的用户之间进行通信,钉钉和企业微信都基于多层级架构进行通信。由于基于扁平化架构的通信软件的数据模型不能处理用于表征多层级架构的呈树型结构的层级数据,因此基于扁平化架构的通信软件难以支持在存在上下级关系的用户之间的通信,从而限制了其使用范围。
此外,基于多层级架构通信的软件大多基于关系型数据库MySql进行层级数据的组织,而MySql使用硬盘作为存储器,读写效率较低,在进行层级数据的读写时需要使用SQL语句递归查询,进一步降低了MySql的读写效率,因此,现有的使用MySql的基于多层级架构通信的软件在读写速度上也有待提高。
发明内容
为了解决上述技术问题,本发明提出了层级数据管理方法、层级数据管理系统及即时通信系统。本发明提出的层级数据管理方法使用了读写速度更快的非关系数据库存储层级数据,并通过重构层级数据并对重构后的层级数据使用缓存淘汰算法进行管理的方式显著提升了对层级数据的读写效率。通过所述层级数据管理系统与基于扁平化架构的通信系统进行交互,使得基于扁平化架构的通信系统也能够支持多层级架构的通信。
本发明是以如下技术方案实现的,一种层级数据管理方法,包括:
以键值对的形式将第一层级数据存储于非关系型数据库中,所述第一层级数据为树型结构数据;
将所述第一层级数据读入内存,并在内存中对所述第一层级数据进行重新组织,生成第二层级数据;
在内存中创建缓存,将所述第二层级数据存储于所述缓存,并使用缓存淘汰算法对所述第二层级数据进行管理。
一种层级数据管理系统,包括:
第一层级数据管理模块,用于以键值对的形式将第一层级数据存储在非关系型数据库中;
第二层级数据构建模块,用于将所述第一层级数据读入内存,并在内存中对所述第一层级数据进行重新组织,生成第二层级数据;
缓存管理模块,用于在内存中创建缓存,将所述第二层级数据存储于所述缓存,并使用缓存淘汰算法对所述第二层级数据进行管理。
一种即时通信系统,包括上述的层级数据管理系统:
所述层级数据管理系统还包括接口模块,所述接口模块包括用于进行层级数据管理的相关接口;
还包括:
即时通信服务器和至少一个即时通信客户端;
所述即时通信客户端用于发出操作指令;
所述即时通信服务器用于接收所述操作指令,并通过调用所述接口模块的相关接口与所述层级数据管理系统进行交互。
本发明的有益效果是:
本发明提出了层级数据管理方法、层级数据管理系统及即时通信系统。本发明具有如下优点:
(1)层级数据管理方法使用双层结构组织呈树型结构的层级数据,使用读写速度更快的非关系数据库存储第一层级数据,并通过重构层级数据并对重构后的层级数据使用缓存淘汰算法进行管理的方式显著提升了对层级数据的读写效率。
(2)层级数据管理系统中与层级数据管理相关的算法逻辑和存储管理均以模块化的方式实现,从而使得所述层级数据管理系统与其它系统间的交互变得简单,增强了层级数据管理系统的适应性和可移植性。
(3)基于扁平化架构的即时通信系统通过与层级数据管理系统进行交互,也能够支持基于多层级架构的通信,并且层级数据管理系统的使用能够使得即时通信系统中与层级数据相关的操作指令的响应速度更快,从而提升即时通信系统的性能。
附图说明
图1是实施例1提供的一种层级数据管理方法流程图;
图2(a)是实施例1中层级数据的逻辑示意图;
图2(b)是实施例1中MySQL配合邻接表的方式存储层级数据的示意图;
图3是实施例2中提供的对第一层级数据进行交互的示意图;
图4是实施例2中提供的存在缓存的情况下对层级数据进行交互的示意图;
图5是实施例3中提供的一种对层级数据的查询方法的流程图;
图6是实施例4中提供的一种对层级数据的变更方法的流程图;
图7是实施例5中提供的一种层级数据管理系统的示意图;
图8是实施例6中提供的一种即时通信系统的示意图;
图9是实施例6中提供的插入操作的时序图;
图10是实施例6中提供的删除操作的时序图;
图11是实施例6中提供的查询操作的时序图;
图12是实施例6中提供的内部迁移操作的时序图;
图13是实施例6中提供的外部迁移操作的时序图。
具体实施方法
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1:
一种层级数据管理方法,如图1所示,包括:
S101.以键值对的形式将第一层级数据存储于非关系型数据库中,所述第一层级数据为树型结构数据。
第一层级数据存储与非关系型数据库中,非关系型数据库可以将数据存储于硬盘或,以内存和硬盘相结合的方式进行数据存储,对数据的读写速度要高于关系型数据库MySql。
S102.将所述第一层级数据读入内存,并在内存中对所述第一层级数据进行重新组织,生成第二层级数据。
按照数据库的组织方式组织的层级数据为第一层级数据,按照适用于内存查询的组织方式组织的层级数据为第二层级数据。第二层级数据作为第一层级数据的缓存被存储于内存。有别于将硬盘中的部分数据作为缓存拷贝至内存的现有技术,第一层级数据读入内存后,可以在内存中根据实际情况进行被任意重构以生成第二层级数据,而重构的目的在于,提升对于层级数据的查询效率。
S103.在内存中创建缓存,将所述第二层级数据存储于所述缓存,并使用缓存淘汰算法对所述第二层级数据进行管理。
使用缓存淘汰算法进行缓存管理,能够及时淘汰不常用的第二层级数据,在进行数据查询时提升待查询目标数据在缓存中被查询到的概率,从而从缓存管理的角度进一步地优化层级数据的读写效率。
在支持多层级架构的即时通信领域,企业微信和钉钉等主流即时通信软件均使用关系型数据库MySql配合邻接表的方式管理呈树型结构的层级数据。这种管理方式具有如下特点:
(1)关系型数据库MySql与非关系型数据库NoSql的功能对比如表1所示:
表1 MySQL与NoSql的功能对比表
功能特性 | 关系型数据库MySql | 非关系型数据库NoSql |
存储数据长度 | 无限制 | 64kb |
复杂的查询操作 | 支持 | 不支持 |
数据读取效率 | 较低 | 较高 |
数据存储方式 | 硬盘 | 内存和硬盘 |
自动备份 | 一主多备 | 一主多备 |
异地存储 | 支持 | 支持 |
自动扩容 | 不支持 | 支持 |
对于表1的分析结果如下:
在即时通信领域,MySql的数据长度无限制意义不大,但是异地存储和自动扩容却对于层级数据的管理具有实际意义。MySql不支持自动扩容,从而为即时通信软件中MySql的使用带来隐患。
MySql支持复杂的查询操作,因此使用MySql管理层级数据具有开发简单的优势,但是MySql数据读取效率较低,在即时通信领域,需要对层级数据执行较多的查询动作,显然,使用NoSql开发软件性能更佳。
NoSql依托内存和硬盘进行数据存储,相较于依托硬盘的MySql,显然具有更高的运行速度。
综上所述,在即时通信领域,非关系型数据库NoSql在管理层级数据方面相较于MySql具有突出的优势。
(2)邻接表作为树型结构数据的存储结构,占用空间小,修改效率高但是查询效率低。使用SQL语句对邻接表表示的树性结构的层级数据进行递归查询,不同的SQL语句效率差距很大,存在性能风险。
如图2所示,对图2(a)中为呈树型结构的层级数据,图2(b)中MySql中每行数据记录一个节点和一个关联节点,查询上级和子节点时均需要采用递归的方式,造成性能损耗,对于没有经验的DBA或开发人员,性能损失将更加严重。
综上所述,现有技术中使用关系型数据库MySql配合邻接表的方式管理呈树型结构的层级数据,其读写效率与查询速度都难以保证。
本实施例中基于非关系型数据库进行层级数据的存储与管理,因而具有读写性能好与查询效率高的显著优势;为了进一步提升层级数据的查询效率,本实施例通过在内存中进行层级数据的重构,生成查询效率高于数据库中使用的邻接表的第二层级数据,在“多查询、少修改”的层级数据的实际应用场景中也能够保证较高的查询性能;而缓存管理更提升了本实施例中第二层级数据在实际的查询过程中的命中率。本实施例从数据存储、数据组织以及缓存管理三个层面提升了对层级数据的管理效率。
实施例2:
一种层级数据管理方法,包括:
S201.以key-value键值对的形式将第一层级数据存储于非关系型数据库中,所述第一层级数据为树型结构数据。
所述非关系型数据库中,一个key-value键值对表示一棵树,树的根节点作为键(key),树的所有节点以及节点之间的层级关系以邻接表的方式存储于键对应的值(value)。对于2(a)中的层级数据,第一层级数据在非关系型数据库中的存储方式如表2所示。
表2第一层级数据的存储方式
key | value |
1 | [1,0][2,1][3,1][4,2][5,2][6,2][7,3][8,4][9,5][10,9] |
以非关系型数据库中的第一层级数据作为目标数据进行数据交互,在每次数据交互时仍然需要拉取目标数据所在的整棵树的数据,如图3所示,这种数据的全量拉取仍然会导致数据管理的性能损耗,为减少这种情况出现的概率,本实施例中对第一层级数据进行重构和缓存。
S202.将所述第一层级数据读入内存,并在内存中通过关联容器对所述第一层级数据进行重新组织,生成第二层级数据。
第二层级数据以提升查询效率为目的进行组织,并在内存中被缓存,在第二层级数据存在的前提下,对层级数据的操作流程如图4所示。数据交互包括查询和变更两种方式,在层级数据的应用场景中变更操作出现概率和频率均较低,而查询操作出现的概率和频率均较高。图4中通过缓存能够显著降低对第一层级数据查询的概率,从而进一步提升查询效率。
缓存目的是实现快速查询,现有技术中使用的邻接表记录了子节点到父节点的映射,可以通过递归查询查找祖先节点,然而查询后代节点的操作则不得不通过轮询处理,因而显著降低了查询效率。本实施例中,为同时保证对于祖先节点和后代节点的查询都能够具有较高的效率,使用无序映射表和无序多重映射表对于层级数据进行重构。
具体地,对于第一层级数据中的任意一棵树,在被读入内存后,生成用于表示所述树的两张映射表,分别为用于查询祖先节点的无序映射表(unordered_map)和用于查询后代节点的无序多重映射表(unordered_multimap)。无序映射表中存储逻辑如表3所示,存储的是子节点到父节点的映射关系,而无序多重映射表存储逻辑如表4所示,存储的是父节点到子节点的多重映射关系。
表3无序映射表
表4无序多重映射表
当前节点 | 子节点 |
1 | 2、3 |
2 | 4、5、6 |
3 | 7 |
4 | 8 |
5 | 9 |
9 | 10 |
无序映射表和无序多重映射表底层依托于散列表来存储数据,因而具有较高的查询效率。若需要查询某个节点的祖先,则在无序映射表中进行查询,若需要查询某个节点的后代,则在无序多重映射表中进行查询,从而保证对于祖先节点和后代节点的查询都能够具有较高的效率。
作为本实施例的另一种优选方式,还能够使用映射表和多重映射表对于第一层级数据进行重构,映射表和多重映射表底层依托于平衡树来存储数据,同样具有较高的查询效率。具体地,对于第一层级数据中的任意一棵树,在被读入内存后,生成用于表示所述树的两张映射表,分别为用于查询祖先节点的映射表(map)和用于查询后代节点的多重映射表(multimap)。映射表中存储的是子节点到父节点的映射关系,而多重映射表存储的是父节点到子节点的多重映射关系。若需要查询某个节点的祖先,则在映射表中进行查询,若需要查询某个节点的后代,则在多重映射表中进行查询,从而保证对于祖先节点和后代节点的查询都能够具有较高的效率。
本实施例提及的无序映射表、无序多重映射表、映射表和多重映射表相较于存储于非关系型数据库中的邻接表均占据较小的存储空间,因此适用于存储在空间有限的内存之中。
此外,作为另外的可选实施方式,无序映射表、无序多重映射表、映射表和多重映射表均可单独对第一层级数据进行重构,从而生成第二层级数据。若单独使用无序映射表或映射表对层级数据进行重构,则能只能够提升对于祖先节点的查询效率,对于后代节点的查询依然要依托非关系型数据库中的第一层级数据;若单独使用无序多重映射表或多重映射表对第一层级数据进行重构,则能只能够提升对于后代节点的查询效率,对于祖先节点的查询依然要依托非关系型数据库中的第一层级数据。
S203.在内存中创建缓存,将所述第二层级数据存储于所述缓存,并使用最近最久未使用算法对所述第二层级数据进行管理。
考虑到硬盘的低速和层级数据的应用场景,为提升与层级数据的交互速度,需要采取用优质的缓存管理算法以减少读取硬盘中第一层级数据的概率。
最近最久未使用算法(LRU)也被称之为近期最少使用算法,根据局部性原理进行工作,在每次调换缓存数据时,淘汰最少使用的那部分第二层级数据即可。
本实施例提出了一种层级数据管理方法,使用非关系型数据库配合邻接表,以及在内存中重构层级数据并进行缓存管理的方式,解决了现有技术中使用MySql配合邻接表难以保证双向查询的性能的问题,显著提升了对于层级数据的双向查询效率。
实施例3:
一种对层级数据的查询方法,所述层级数据由实施例1或实施例2中所述的层级数据管理方法进行管理,如图5所示,包括:
S301.对第二层级数据进行查询:
S302.若获得查询结果,则输出查询结果;
S303.若未获得查询结果,对第一层级数据进行查询:
S304.若获得查询结果,则输出查询结果,构建所述查询结果对应的第二层级数据,并根据构建的结果对缓存中的第二层级数据进行更新;
S305.若未获得查询结果,查询失败。
具体地,S304中根据构建的结果对缓存中的第二层级数据进行更新包括:若缓存容量充足,则在缓存中存储构建的结果;若缓存容量不足,则淘汰最少使用的那部分第二层级数据,存储所述构建的结果。
本实施例提供了一种对层级数据的查询方法,通过充分利用缓存减少对于第一层级数据查询的次数,从而显著提高层级数据查询的效率。
实施例4:
一种对层级数据的变更方法,所述层级数据由实施例1或实施例2中所述的的层级数据管理方法进行管理,如图6所示,包括:
S401.获取待变更的第一层级数据;
在对层级数据变更之前要先读取数据,这对于分布式数据系统而言是进行数据变更的先决条件,读取数据成功后,数据受到写保护,在对数据进行变更的过程中,其他程序均不得对数据进行写操作。
S402.对所述第一层级数据进行变更,并将变更后的第一层级数据写入所述非关系型数据库;
S403.对变更后的第一层级数据进行重新组织,构建与变更后的第一层级数据对应的第二层级数据;
S404.根据构建的结果对缓存中的第二层级数据进行更新。
具体地,对呈树型结构的层级数据的变更包括插入新节点和删除已有节点。
具体地,S404中根据构建的结果对缓存中的第二层级数据进行更新包括:若缓存容量充足,则在内存中存储构建的结果;若缓存容量不足,则淘汰最少使用的那部分第二层级数据,存储所述构建的结果。
本实施例提供了一种对层级数据的变更方法,通过对第一层级数据进行直接变更并将变更结果更新到缓存之中,既达到了变更的目的,又提高了后续的操作中查询变更结果的速度。
实施例5:
一种层级数据管理系统,如图7所示,包括:
第一层级数据管理模块501,用于以key-value键值对的形式将第一层级数据存储在非关系型数据库中;
第二层级数据构建模块502,用于将所述第一层级数据读入内存,并在内存中对所述第一层级数据进行重新组织,生成第二层级数据;
缓存管理模块503,用于在内存中创建缓存,将所述第二层级数据存储于所述缓存,并使用缓存淘汰算法对所述第二层级数据进行管理。
具体地,所述层级数据管理系统能够独立进行层级数据的管理,也能够接受其它系统的调用,从而支持所述其它系统进行层级数据的管理,所述其它系统可以为基于扁平化机构的即时通信系统或基于多层级架构的即时通信系统。作为一种优选的实施方式,为与其它系统进行交互,本实施例还包括接口模块504,所述接口模块用于向所述其它系统提供层级数据管理的相关接口。
具体地,所述接口模块包括查询接口、删除接口、插入接口、内部迁移接口和外部迁移接口。
所述内部迁移接口用于在具有相同的根节点的层级数据中,把一个或多个节点移动到另一个位置,若被移动的节点有多个,则移动前后被移动的节点间的层级关系保持不变,
所述外部迁移接口用于将第一组层级数据中的一个或多个节点移动到第二组层级数据中,所述第一组层级数据与所述第二组层级数据具有不同的根节点;若被移动的节点有多个,则移动前后被移动的节点间的层级关系保持不变。
本实施例中提供的一种层级数据管理系统,能够用于实现实施例1或实施例2中提供的层级数据管理方法,以及实施例3中提供的层级数据查询方法和实施例4中提供的层级数据变更方法。
实施例6:
一种即时通信系统,如图8所示,包括:
层级数据管理系统601,所述层级管理系统601通过实施例5中提供的层级数据管理系统实现,包括第一层级数据管理模块6011、第二层级数据构建模块6012、缓存管理模块6013和接口模块6014。
即时通信服务器602和至少一个即时通信客户端603,
所述即时通信客户端603用于发出操作指令;
所述即时通信服务器602用于接收所述操作指令,并通过调用接口模块6014的相关接口与所述层级数据管理系统601进行交互。
具体地,所述操作指令包括查询指令、删除指令、插入指令、内部迁移指令和外部迁移指令。相应的,所述接口模块包括查询接口、删除接口、插入接口、内部迁移接口和外部迁移接口。
所述内部迁移为在同一个呈多层级架构的组织机构中,把一个或多个的成员移动到另一个位置,若被移动的成员有多个,则移动前后被移动的成员间的层级关系保持不变;相应的,所述内部迁移接口用于在具有相同的根节点的层级数据中,把一个或多个节点移动到另一个位置,若被移动的节点有多个,则移动前后被移动的节点间的层级关系保持不变
所述外部迁移为将一个呈多层级架构的组织机构中的一个或多个的成员移动到另一个呈多层级架构的组织机构中,若被移动的成员有多个,则移动前后被移动的成员间的层级关系保持不变;相应的,所述外部迁移接口用于将第一组层级数据中的一个或多个节点移动到第二组层级数据中,所述第一组层级数据与所述第二组层级数据具有不同的根节点;若被移动的节点有多个,则移动前后被移动的节点间的层级关系保持不变。
扁平化架构为层级较少的一种结构,比如在公司中,所有部门都是平级的,不存在上下级关系,那么可以说这家公司的具有扁平化架构;多层级架构为存在充分的上下级关系的结构,比如5层结构的公司:总办/事业群/部门/小组,便是一种多层级架构。
所述即时通信服务器602用于独立支持扁平化架构的通信,通过与层级数据管理系统601的交互能够支持多层级架构的通信。作为另一种实施方式,所述即时通信服务器602也能够用于独立多层级架构的通信,通过与层级数据管理系统601的交互优化对层级数据管理,从而提升基于多层级架构的通信效率。通常情况下,支持扁平化架构的即时通信软件难以支持在多层级架构进行通信,而本实施例中即时通信服务器602通过与层级数据管理系统交互能够支持多层级架构的通信,进而拓展了支持扁平化架构的即时通信系统的功能,此外,本实施例还提供了多层级组织架构间的新增、删除、查询、转移等功能逻辑。
具体地,本实施例提供的即时通信系统中插入操作的时序图,如图9所示,即时通信客户端603发出插入指令,所述通信服务器602调用接口模块6014提供的插入接口完成所述插入指令。插入接口的运行逻辑与实施例4中提供的对层级数据的变更方法一致。具体地,在根据插入指令中携带的参数执行插入动作之前,还需要对所述参数进行合法性检查。比如,插入指令完成后,被插入的树的节点个数最大不能超过第一预设值,并且,被插入的树的每个节点的子节点数不能超过第二预设值。
具体地,本实施例提供的即时通信系统中删除操作的时序图,如图10所示。在即时通信系统中,层级关系数据只是表示群之间的隶属关系,而不涉及成员,因此,删除群操作被分为两步进行:
(1)由支持扁平化架构的即时通信服务器602删除群中的全部成员。
(2)通信服务器602调用接口模块6014提供的删除接口完成所述删除指令。删除接口的运行逻辑与实施例4中提供的对层级数据的变更方法一致。删除指令执行删除动作之前,要对待删除的群进行合法化检查。比如,待删除的群必须是实际存在的群,并且只能是层级数据中的叶子结点。
具体地,本实施例提供的即时通信系统中查询操作的时序图,如图11所示,即时通信客户端603发出查询指令,所述通信服务器602调用接口模块6014提供的查询接口完成所述查询指令。查询接口的运行逻辑与实施例3中提供的对层级数据的查询方法一致。
具体地,本实施例提供的即时通信系统中内部迁移操作的时序图,如图12所示,即时通信客户端603发出内部迁移指令,所述通信服务器602调用接口模块6014提供的内部迁移接口完成所述内部迁移指令。内部迁移接口的运行逻辑与实施例4中提供的对层级数据的变更方法一致。
具体地,本实施例提供的即时通信系统中外部迁移操作的时序图,如图13所示,即时通信客户端603发出外部迁移指令,所述通信服务器602调用接口模块6014提供的外部迁移接口完成所述外部迁移指令。外部迁移接口的运行逻辑包括源架构的变更操作和目的架构的变更操作,源架构的变更操作和目的架构的变更操作均与实施例4中提供的对层级数据的变更方法一致。
本发明中的技术方案中的各个模块均可通过计算机终端或其它设备实现。所述计算机终端包括处理器和存储器。所述存储器用于存储本发明中的程序指令/模块,所述处理器通过运行存储在存储器内的程序指令/模块,实现本发明相应功能。
本发明中的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
本发明中所述模块/单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。可以根据实际的需要选择其中的部分或者全部模块/单元来达到实现本发明方案的目的。
另外,在本发明各个实施例中的各模块/单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (14)
1.一种层级数据管理方法,其特征在于,包括:
以键值对的形式将第一层级数据存储于非关系型数据库中,所述第一层级数据为树型结构数据;
将所述第一层级数据读入内存,并在内存中对所述第一层级数据进行重新组织,生成第二层级数据;
在内存中创建缓存,将所述第二层级数据存储于所述缓存,并使用缓存淘汰算法对所述第二层级数据进行管理。
2.根据权利要求1所述的一种层级数据管理方法,其特征在于,在所述非关系型数据库中,一个键值对表示一棵树,树的根节点作为键,树的所有节点以及节点之间的层级关系作为所述键对应的值。
3.根据权利要求2所述的一种层级数据管理方法,其特征在于,在所述非关系型数据库中,通过邻接表表示树的所有节点以及节点之间的层级关系。
4.根据权利要求1所述的一种层级数据管理方法,其特征在于,通过关联容器对所述第二层级数据进行重新组织。
5.根据权利要求4所述的一种层级数据管理方法,其特征在于,通过映射表和多重映射表对所述第二层级数据进行组织。
6.根据权利要求4所述的一种层级数据管理方法,其特征在于,通过无序映射表和无序多重映射表对所述第二层级数据进行组织。
7.根据权利要求1所述的一种层级数据管理方法,其特征在于,通过最近最久未使用算法对缓存中的第二层级数据进行管理。
8.根据权利要求1-7中任意一项所述的一种层级数据管理方法,其特征在于,对所述层级数据的查询方法包括:
对第二层级数据进行查询:若获得查询结果,则输出查询结果;否则,
对第一层级数据进行查询:若获得查询结果,则输出查询结果,构建所述查询结果对应的第二层级数据,并根据构建的结果对缓存中的第二层级数据进行更新;否则,查询失败。
9.根据权利要求1-7中任意一项所述的一种层级数据管理方法,其特征在于,对所述层级数据的变更方法包括:
获取待变更的第一层级数据;
对所述第一层级数据进行变更,并将变更后的第一层级数据写入所述非关系型数据库;
对变更后的第一层级数据进行重新组织,构建与变更后的第一层级数据对应的第二层级数据,并根据构建的结果对缓存中的第二层级数据进行更新。
10.一种层级数据管理系统,其特征在于,包括:
第一层级数据管理模块,用于以键值对的形式将第一层级数据存储在非关系型数据库中;
第二层级数据构建模块,用于将所述第一层级数据读入内存,并在内存中对所述第一层级数据进行重新组织,生成第二层级数据;
缓存管理模块,用于在内存中创建缓存,将所述第二层级数据存储于所述缓存,并使用缓存淘汰算法对所述第二层级数据进行管理。
11.根据权利要求10所述的一种层级数据管理系统,其特征在于,还包括接口模块,所述接口模块包括用于进行层级数据管理的相关接口。
12.根据权利要求11所述的一种层级数据管理系统,其特征在于,所述接口模块包括查询接口、删除接口和/或插入接口。
13.根据权利要求11或12所述的一种层级数据管理系统,其特征在于,所述接口模块包括内部迁移接口和外部迁移接口,
所述内部迁移接口用于在具有相同的根节点的层级数据中,把一个或多个节点移动到另一个位置,若被移动的节点有多个,则移动前后被移动的节点间的层级关系保持不变,
所述外部迁移接口用于将第一组层级数据中的一个或多个节点移动到第二组层级数据中,所述第一组层级数据与所述第二组层级数据具有不同的根节点;若被移动的节点有多个,则移动前后被移动的节点间的层级关系保持不变。
14.一种即时通信系统,包括权利要求10所述的层级数据管理系统,其特征在于:
所述层级数据管理系统包括接口模块,所述接口模块包括用于进行层级数据管理的相关接口;
还包括:
即时通信服务器和至少一个即时通信客户端;
所述即时通信客户端用于发出操作指令;
所述即时通信服务器用于接收所述操作指令,并通过调用所述接口模块的相关接口与所述层级数据管理系统进行交互。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610680284.2A CN107766355B (zh) | 2016-08-17 | 2016-08-17 | 层级数据管理方法、层级数据管理系统及即时通信系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610680284.2A CN107766355B (zh) | 2016-08-17 | 2016-08-17 | 层级数据管理方法、层级数据管理系统及即时通信系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107766355A true CN107766355A (zh) | 2018-03-06 |
CN107766355B CN107766355B (zh) | 2021-07-16 |
Family
ID=61259792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610680284.2A Active CN107766355B (zh) | 2016-08-17 | 2016-08-17 | 层级数据管理方法、层级数据管理系统及即时通信系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107766355B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656950A (zh) * | 2018-12-12 | 2019-04-19 | 上海达梦数据库有限公司 | 递归查询方法、装置、服务器及存储介质 |
CN111177206A (zh) * | 2018-11-09 | 2020-05-19 | 阿里巴巴集团控股有限公司 | 数据透视表处理方法、装置及系统 |
CN111352915A (zh) * | 2018-12-20 | 2020-06-30 | 北京奇虎科技有限公司 | 一种机器学习系统、一种机器学习参数服务器及实现方法 |
CN114077619A (zh) * | 2020-08-20 | 2022-02-22 | 北京字节跳动网络技术有限公司 | 数据查询方法、装置、电子设备和存储介质 |
CN117828127A (zh) * | 2023-10-27 | 2024-04-05 | 北京大学 | 一种基于半结构化存储的树状层级集群用户管理方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102243660A (zh) * | 2011-07-18 | 2011-11-16 | 中兴通讯股份有限公司 | 一种数据访问方法及设备 |
US20120117067A1 (en) * | 2010-10-29 | 2012-05-10 | Navteq North America, Llc | Method and apparatus for providing a range ordered tree structure |
CN103336849A (zh) * | 2013-07-24 | 2013-10-02 | 昆明理工大学 | 一种数据库检索系统中提高检索速度的方法及装置 |
CN104239511A (zh) * | 2014-09-15 | 2014-12-24 | 西安交通大学 | 一种面向MongoDB的用户空间文件系统实现方法 |
CN105095237A (zh) * | 2014-04-30 | 2015-11-25 | 国际商业机器公司 | 用于生成非关系数据库的模式的方法和设备 |
-
2016
- 2016-08-17 CN CN201610680284.2A patent/CN107766355B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120117067A1 (en) * | 2010-10-29 | 2012-05-10 | Navteq North America, Llc | Method and apparatus for providing a range ordered tree structure |
CN102243660A (zh) * | 2011-07-18 | 2011-11-16 | 中兴通讯股份有限公司 | 一种数据访问方法及设备 |
CN103336849A (zh) * | 2013-07-24 | 2013-10-02 | 昆明理工大学 | 一种数据库检索系统中提高检索速度的方法及装置 |
CN105095237A (zh) * | 2014-04-30 | 2015-11-25 | 国际商业机器公司 | 用于生成非关系数据库的模式的方法和设备 |
CN104239511A (zh) * | 2014-09-15 | 2014-12-24 | 西安交通大学 | 一种面向MongoDB的用户空间文件系统实现方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111177206A (zh) * | 2018-11-09 | 2020-05-19 | 阿里巴巴集团控股有限公司 | 数据透视表处理方法、装置及系统 |
CN111177206B (zh) * | 2018-11-09 | 2023-07-11 | 盒马(中国)有限公司 | 数据透视表处理方法、装置及系统 |
CN109656950A (zh) * | 2018-12-12 | 2019-04-19 | 上海达梦数据库有限公司 | 递归查询方法、装置、服务器及存储介质 |
CN109656950B (zh) * | 2018-12-12 | 2020-08-07 | 上海达梦数据库有限公司 | 递归查询方法、装置、服务器及存储介质 |
CN111352915A (zh) * | 2018-12-20 | 2020-06-30 | 北京奇虎科技有限公司 | 一种机器学习系统、一种机器学习参数服务器及实现方法 |
CN114077619A (zh) * | 2020-08-20 | 2022-02-22 | 北京字节跳动网络技术有限公司 | 数据查询方法、装置、电子设备和存储介质 |
CN114077619B (zh) * | 2020-08-20 | 2024-08-02 | 北京字节跳动网络技术有限公司 | 数据查询方法、装置、电子设备和存储介质 |
CN117828127A (zh) * | 2023-10-27 | 2024-04-05 | 北京大学 | 一种基于半结构化存储的树状层级集群用户管理方法 |
CN117828127B (zh) * | 2023-10-27 | 2024-08-30 | 北京大学 | 一种基于半结构化存储的树状层级集群用户管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107766355B (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10296498B2 (en) | Coordinated hash table indexes to facilitate reducing database reconfiguration time | |
CN107766355A (zh) | 层级数据管理方法、层级数据管理系统及即时通信系统 | |
CN103902623B (zh) | 用于在存储系统上存取文件的方法和系统 | |
CN103345472B (zh) | 基于有限二叉树布隆过滤器的去冗文件系统及其构建方法 | |
KR20180055952A (ko) | 데이터베이스 관리 시스템에서의 데이터 복제 기법 | |
CN108600321A (zh) | 一种基于分布式内存云的图数据存储方法和系统 | |
CN103617199B (zh) | 一种操作数据的方法和系统 | |
US20120089566A1 (en) | Method for reorganizing or moving a database table | |
US20090012932A1 (en) | Method and System For Data Storage And Management | |
CN110058822A (zh) | 一种磁盘阵列横向拓展方法 | |
CN103885728A (zh) | 一种基于固态盘的磁盘缓存系统 | |
CN106021016A (zh) | 在快照之间的虚拟时间点访问 | |
CN107003935A (zh) | 优化数据库去重 | |
CN106687910A (zh) | 优化分段清除技术 | |
CN105701219B (zh) | 一种分布式缓存的实现方法 | |
CN107077479A (zh) | 使用分立数据库系统基于查询需求从行存储数据库自适性建立并更新列存储数据库的基于语句的迁移 | |
CN102682110A (zh) | 面向大规模空间信息的高性能缓存设计方法 | |
CN107807932A (zh) | 一种基于路径枚举的层级数据管理方法和系统 | |
CN103916459A (zh) | 一种大数据归档存储系统 | |
CN103365987B (zh) | 一种基于共享磁盘架构的集群数据库系统及数据处理方法 | |
CN101236564A (zh) | 一种海量数据高性能读取显示方法 | |
CN102355502B (zh) | 存储系统远程接入桌面操作系统的远程接入方法 | |
CN110399096A (zh) | 分布式文件系统元数据缓存重删的方法、装置以及设备 | |
JP2004524632A (ja) | 記憶データを再編成するシステム及び方法 | |
CN109710668A (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 | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230922 Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 2, 518000, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TR01 | Transfer of patent right |