CN113391916A - 组织架构数据处理方法、装置、计算机设备和存储介质 - Google Patents
组织架构数据处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113391916A CN113391916A CN202010171159.5A CN202010171159A CN113391916A CN 113391916 A CN113391916 A CN 113391916A CN 202010171159 A CN202010171159 A CN 202010171159A CN 113391916 A CN113391916 A CN 113391916A
- Authority
- CN
- China
- Prior art keywords
- organization
- memory
- information table
- data
- personnel
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Abstract
本申请涉及一种组织架构数据处理方法、装置、计算机设备和存储介质。方法包括:响应组织架构数据写入请求,将写入请求携带的组织信息表和人员信息表分别写入磁盘空间,组织信息表包括组织的组织标识及其所属上级组织的组织标识,人员信息表包括人员的基本信息及其所属组织的组织标识,将人员信息表中人员所属组织的组织标识标记为人员的基本信息的索引信息,并将组织信息表中的各组织的组织标识从磁盘空间分别加载至内存空间中的对应内存块,根据各组织所属的上级组织,标记各内存块之间的连接指针,根据携带连接指针的内存块,构建内存架构树,得到组织架构数据写入结果。采用本方法能够在后续的组织架构查询中减少内存资源占用,提高查询性能。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种组织架构数据处理方法、装置、计算机设备和存储介质。
背景技术
随着社会经济的飞速发展,对于属性层次结构分明的企业或组织来说,组织架构管理已经重要的人员管理方式。组织架构形式具有规模庞大、灵活多变、层次复杂的特点,因此保存和管理大型企业或组织的组织架构数据是比较重要的环节。为实现组织架构的管理,现有技术中采用邻接表或是采用字符串key记录组织架构层次结构的完整路径,诸如“/根部门/技术部/开发组”的形式,来进行组织架构数据的存储与管理。
但采用邻接表的形式存储数据,在组织架构数据查询过程中,需要多次调用查询数据库;保存完整路径的技术方法,大规模组织架构消耗不少存储空间,查询时移动节点开销比较大,这两种组织架构数据的存储方式都导致在查询过程中存在内存资源占用大的问题。
发明内容
基于此,有必要针对查询过程中存在内存资源占用大的技术问题,提供一种能够减小数据查询时内存的资源占用的组织架构数据处理方法、装置、计算机设备和存储介质。
一种组织架构数据处理方法,方法包括:
响应组织架构数据写入请求,将写入请求中携带的组织信息表和人员信息表分别写入磁盘空间;组织信息表包括组织的组织标识以及组织所属上级组织的组织标识;人员信息表包括人员的基本信息以及人员所属组织的组织标识;
将人员信息表中人员所属组织的组织标识标记为人员的基本信息的索引信息,并将组织信息表中的各组织的组织标识从磁盘空间分别加载至内存空间中的对应内存块;
根据各组织所属的上级组织,标记各内存块之间的连接指针;
根据携带连接指针的内存块,构建内存架构树,得到组织架构数据写入结果。
一种组织架构数据处理装置,装置包括:
写入请求响应模块,用于响应组织架构数据写入请求,将写入请求中携带的组织信息表和人员信息表分别写入磁盘空间;组织信息表包括组织的组织标识以及组织所属上级组织的组织标识;人员信息表包括人员的基本信息以及人员所属组织的组织标识;
信息表处理模块,用于将人员信息表中人员所属组织的组织标识标记为人员的基本信息的索引信息,并将组织信息表中的各组织的组织标识从磁盘空间分别加载至内存空间中的对应内存块;
连接指针确定模块,用于根据各组织所属的上级组织,标记各内存块之间的连接指针;
架构树构建模块,用于根据携带连接指针的内存块,构建内存架构树,得到组织架构数据写入结果。
一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
响应组织架构数据写入请求,将写入请求中携带的组织信息表和人员信息表分别写入磁盘空间;组织信息表包括组织的组织标识以及组织所属上级组织的组织标识;人员信息表包括人员的基本信息以及人员所属组织的组织标识;
将人员信息表中人员所属组织的组织标识标记为人员的基本信息的索引信息,并将组织信息表中的各组织的组织标识从磁盘空间分别加载至内存空间中的对应内存块;
根据各组织所属的上级组织,标记各内存块之间的连接指针;
根据携带连接指针的内存块,构建内存架构树,得到组织架构数据写入结果。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
响应组织架构数据写入请求,将写入请求中携带的组织信息表和人员信息表分别写入磁盘空间;组织信息表包括组织的组织标识以及组织所属上级组织的组织标识;人员信息表包括人员的基本信息以及人员所属组织的组织标识;
将人员信息表中人员所属组织的组织标识标记为人员的基本信息的索引信息,并将组织信息表中的各组织的组织标识从磁盘空间分别加载至内存空间中的对应内存块;
根据各组织所属的上级组织,标记各内存块之间的连接指针;
根据携带连接指针的内存块,构建内存架构树,得到组织架构数据写入结果。
上述组织架构数据处理方法、装置、计算机设备和存储介质,通过以组织信息表和人员信息表分离的形式写入组织架构数据,通过在磁盘空间中存储组织信息表,在内存空间中利用内存块之间的连接指针,构建与组织信息表对应的内存架构树,将人员信息表中的数据存储于磁盘空间中,通过以人员所属组织的组织标识为人员的基本信息索引,通过内存空间中的内存架构树和磁盘空间中的携带有索引的人员信息表的组织架构数据写入方式,便于在后续的组织架构查询中减少内存空间的资源占用,提高查询性能。
附图说明
图1为一个实施例中组织架构数据处理方法的应用环境图;
图2为一个实施例中组织架构数据处理方法的流程示意图;
图3(a)为一个实施例中组织架构数据处理方法中组织信息表的示意图;
图3(b)为一个实施例中组织架构数据处理方法中的人员信息表的示意图;
图4为一个实施例中组织架构数据处理方法中内存块的划分示意图;
图5为另一个实施例中组织架构数据处理方法的流程示意图;
图6为再一个实施例中组织架构数据处理方法的流程示意图;
图7为一个实施例中组织架构数据处理方法中的内存架构树的示意图;
图8为还一个实施例中组织架构数据处理方法的流程示意图;
图9为又一个实施例中组织架构数据处理方法的流程示意图;
图10为一个实施例中组织架构数据处理方法的终端界面示意图;
图11为其中一个实施例中组织架构数据处理方法的流程示意图;
图12为一个实施例中组织架构数据处理装置的结构框图;
图13为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的组织架构数据处理方法,可以应用于如图1所示的应用环境中。其中,终端102与服务器104通过网络进行通信。服务器104响应终端102的组织架构数据写入请求,将写入请求中携带的组织信息表和人员信息表分别写入磁盘空间;组织信息表包括组织的组织标识以及组织所属上级组织的组织标识;人员信息表包括人员的基本信息以及人员所属组织的组织标识;服务器104将人员信息表中人员所属组织的组织标识标记为人员的基本信息的索引信息,并将组织信息表中的各组织的组织标识从磁盘空间分别加载至内存空间中的对应内存块;根据各组织所属的上级组织,标记各内存块之间的连接指针;根据携带连接指针的内存块,构建内存架构树,得到组织架构数据写入结果,并反馈给终端102。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种组织架构数据处理方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤210至步骤240。
步骤210,响应组织架构数据写入请求,将写入请求中携带的组织信息表和人员信息表分别写入磁盘空间。
组织结构是一个组织整体的结构,是组织的流程运转、部门设置及职能规划等最基本的结构依据,组织架构数据包括企业或组织中各个层级的组织以及归属于各个组织的人员等信息。组织架构数据写入请求可以是终端发出的,例如用户在终端选定某个组织的组织架构数据之后,发送的请求,通过将组织架构数据写入服务器,便于其他具有查询权限的人员直接访问服务器,查询到完整或部分的组织架构数据。组织信息表包括组织的组织标识以及组织所属上级组织的组织标识。人员信息表包括人员的基本信息以及人员所属组织的组织标识。
举例来说,如图3(a)和图3(b)所示,某组织设置有6个部门,如图3(a)所示的部门表即为组织信息表,这6个部门的组织标识分别为部门1、部门2、部门3、部门4、部门5以及部门6。其中,部门1是层级最高的根部门,部门2和部门3是归属于部门1的子部门,部门4是归属于部门2的子部门,部门5和部门6是归属于部门3的子部门。如图3(b)所示的员工表即为人员信息表的示例,包括该组织的所有员工的身份标识以及每个员工所属的部门,员工的基本信息包括员工标识,例如员工ID分别为员工1、员工2以及员工3,各人员所属组织的组织标识具体可以如图3(b)所示,员工1和员工2所属组织的组织标识为部门1,员工3所属组织额度组织标识为部门5等。在大多数企业组织架构中,员工数据量要远多于部门数量,在此不一一例举说明。
磁盘空间是指计算机的外部存储器,具有其存储信息不受断电的影响的特性,通过将组织信息表和人员信息表分别写入磁盘空间,能实现组织架构数据的有效存储。
步骤220,将人员信息表中人员所属组织的组织标识标记为人员的基本信息的索引信息,并将组织信息表中的各组织的组织标识从磁盘空间分别加载至内存空间中的对应内存块。
索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。索引是针对表而建立的,它是由数据页面以外的索引页面组成的,每个索引页面中的行都会含有逻辑指针,以便加速检索物理数据。在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。当表中有大量记录时,若要对表进行查询,通过在表中建立索引,然后在索引中找到符合查询条件的索引值,快速找到表中对应的记录。通过将人员信息表中人员所属组织的组织标识标记为人员的基本信息的索引信息,便于根据索引信息查找到对应人员的基本信息,实现快速查询。
在一个实施例中,人员信息表中的人员基本信息在磁盘空间中以LSM Tree的形式保存起来,磁盘空间文件采用多层结构组织管理,根据索引信息可以快速查询到对应的人员的数据记录等基本信息,另外,以人员的所属组织的组织标识即父节点ID(部门ID)作为索引保存在LSM Tree中,可以根据部门ID查询到对应的人员列表,进一步查询到对应的人员基本信息。
计算机的存储器分为内部存储器和外部存储器两大类,内存具有存储信息速度快,但断电后存储内容会全部丢失的特点,外部存储器主要包括磁盘空间,其存储信息不受断电的影响,存储速度相对与内存比较慢。计算机在运行时,由于CPU运算速度非常快,数据通常由磁盘空间加载至内存空间中,CPU从内存空间中读取数据,处理成熟的数据再从内存空间调入磁盘空间保存,可以大大加快CPU读取数据的速度,也就是说,CPU并不直接访问磁盘空间,而是由内存空间中读取数据,如果内存空间中存储的数据比较少,CPU就要频繁访问内存,要不断的把磁盘空间中的数据调到内存空间,导致计算机内存资源占用大,处理速度较慢。
内存块的分配过程如下:首先在存储中建立预分配内存池,然后将分配的内存空间内部切分为多个的内存块,如图4所示,可以划分得到内存块1-内存块6,并用两个链表分别记录已分配内存块和空闲内存块,各个内存块对应内存架构树的节点。基于分配的内存块,将组织信息表中的各组织的组织标识从磁盘空间分别加载至分配的内存块,实现数据从磁盘空间到内存空间的加载。
步骤230,根据各组织所属的上级组织,标记各内存块之间的连接指针。
将组织信息表中的各组织的组织标识从磁盘空间分别加载至内存空间中的对应内存块后,各个内存块对应组织信息表中的各个组织,由于各个内存块之间没有明确的连接关系,在进行组织架构数据查询时,无法快速准确的按照组织架构进行向下递归查询。通过各组织所属的上级组织,标记各组织之间的上下级关系,构建内存块之间的连接指针。其中,内存块之间的连接指针用于表征组织的上下级关系。举例来说,以加载至内存块1的组织为部门2为例,基于组织信息表,部门2所属的上级组织为部门1,则建立部门2与部门1之间的连接指针。在一个实施例中,内存块之间的连接指针可以是由父部门指向子部门。在另一个实施例中,内存块之间的连接指针可以分为父部门指向子部门的第一类指针以及子部门指向父部门的第二类指针,用于区分两个用连接指针连接的内存块之间的上下级关系,实现双向数据查询。每个内存块为一个节点,每个节点有指向父节点和子节点的连接指针,因此可以方便地向上或向下查询节点,大幅提高了递归查询的性能。
步骤240,根据携带连接指针的内存块,构建内存架构树,得到组织架构数据写入结果。
内存架构树是指在内存空间中构建的用于表征一个组织或企业的各个组织之间的层级关系的架构树。基于各个内存块之间的连接指针,构建从根组织向下的架构树。由于在内存块中只加载有各组织的信息,故内存架构树中不包含人员信息。人员作为组织架构的叶子节点,在查询组织包含的人员信息时,由于人员信息本身不包含结构层次信息,无需在内存空间中维护其父节点即人员所属组织的信息,而是在磁盘空间中索引其父节点实现。
基于内存架构树上的各个节点,可以实现组织架构的向下递归查询,通过将人员信息表存储于磁盘空间,将组织信息表预先加载至内存空间中,实现了人员信息与组织信息的分离,在进行组织架构数据的查询时,可以直接基于预先加载至内存空间中的数据进行组织层级方面的查询,然后,基于磁盘空间中的人员信息表的索引信息,得到人员的基本信息。在实施例中,内存空间中以每一个企业或组织为维度,以企业或组织中的每一个部门为节点,构建对应的内存架构树,每一个内存架构树与该企业或组织相对应,具体来说,内存架构树可以以企业或组织的名称或其他形式的ID标识为标签进行标记,便于区分,实现服务器对多个企业或组织进行管理。
相对于现有技术而言,现有技术中采用邻接表的形式存储数据的方式,每个节点只有父节点信息,在需要递归向下查询业务场景中,需要多次调用查询数据库,查询性能差,无法满足大型树形组织架构的性能需求。现有技术中保存完整路径的技术方法,向下递归查询性能较好,但是节点冗余信息较多,大规模组织架构消耗不少存储空间,移动节点开销比较大,需要更新所有子节点的key,写性能较差,无法满足企业灵活修改组织架构的需要。本方案基于分离部门和员工的组织架构树解决方案,部门和员工分开两张表保存,数据库在内存空间中构建部门树,大幅提高递归查询性能,分离员工和部门可减少内存空间的资源占用,移动部门需要更改该节点的父部门标识,修改操作轻量快捷,提高了企业组织架构的使用体验。
上述组织架构数据处理方法,通过以组织信息表和人员信息表分离的形式写入组织架构数据,通过在磁盘空间中存储组织信息表,在内存空间中利用内存块之间的连接指针,构建与组织信息表对应的内存架构树,将人员信息表中的数据存储于磁盘空间中,通过以人员所属组织的组织标识为人员的基本信息索引,通过内存空间中的内存架构树和磁盘空间中的携带有索引的人员信息表的组织架构数据写入方式,便于在后续的组织架构查询中减少内存空间的资源占用,提高查询性能。
在一个实施例中,如图5所示,组织架构数据处理方法还包括组织架构查询过程,具体包括步骤510至步骤530。
步骤510,响应组织架构查询请求,提取组织架构查询请求对应的根组织标识。
步骤520,从内存空间中读取与根组织标识对应的内存块,并根据内存块所在的内存架构树,向下递归查询根组织的子组织。
步骤530,以子组织的组织标识为索引,从磁盘空间中查询子组织对应的人员的基本信息,得到组织架构数据查询结果。
服务器基于写入的组织架构数据,可以生成包括组织和人员的组织架构图并发送至终端。组织架构查询请求是指终端向服务器发送的数据查询请求,在一个实施例中,在终端的GUI界面显示有组织架构查询接口,例如在界面菜单栏点击“通讯录”,可以对获得该组织的组织架构数据,获得想要查询对象的基本信息。
根组织是指组织中层级最高的部门,组织架构查询请求对应的根组织标识是指在组织架构查询请求对应的组织中层级最高组织的组织标识。具体来说,服务器在接收到用户通过触发终端的查询接口,向服务器发携带有ID标识的组织架构查询请求,ID标识具体可以是组织名称,组织代码等,例如某企业的名称。通过ID标识,在内存空间中确定根组织对应的内存块,获取到对应的内存架构树,并基于内存架构树的层架结构,向下递归查询根组织的子组织。
具体来说,向下递归查询的过程包括:以根结点为查询起点,根据内存架构树的内存块间的连接指针,查询得到与该根组织通过连接指针直接关联的子组织,然后将该子组织作为父组织,通过相同的方式,获取该父组织的所有子组织,进而得到根组织的直接管理或间接管理的子组织。
通过内存架构树,可以获取到根组织的所有子组织的组织标识,完整的组织架构除了组织间的层级关系,还包括归属于每个组织的人员,在查询到根组织的每一个子组织之后,以该子组织的组织标识为索引,从磁盘空间中查询该子组织对应的人员的基本信息,基于每一个子组织的人员信息,得到完整的组织架构数据查询结果。
在一个实施例中,如图6所示,步骤520,从内存空间中读取与根组织标识对应的内存块,并根据内存块所在的内存架构树,向下递归查询根组织的子组织包括步骤610至步骤620。
步骤610,从内存空间中读取与根组织标识对应的内存块,获取内存块所在内存架构树的快照数据。
步骤620,根据内存块所在的内存架构树的快照数据,向下递归查询根组织的子组织。
快照是指关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。通过快照处理,为存储用户提供了另外一个数据访问通道,当原数据进行在线应用处理时,用户可以访问快照数据。如图7所示,在内存空间中保存了企业的完整组织组织架构树,存储为架构树每一个节点维护一个序列号1、2、3、4,该序列号企业内递增,终端的使用者作为调用方,可以在某个时间点如发送查询请求至服务器时申请一个快照,此时存储记录该快照时间点的序列号和调用方的引用计数,并把申请快照的快照ID返回给调用方。以便调用方基于快照ID获取到快照数据中的数据信息,其中调用方的引用计数是指调用方的数量。
通过进行快照处理,在快照时间点后对架构树的修改操作(更新和删除操作)都会额外复制该节点的数据到快照数据集,并更新该数据的序列号。调用方带上快照ID读取数据时,存储会查询该快照对应的数据集合,此快照数据集合是生成快照时刻的数据,包括未改动的数据和后续因改动而复制到快照数据集中的记录,存储合并这两份数据返回调用方,以确保调用方获得的数据不受到在快照时间后的更新和删除操作的影响,确保数据的准确性。
在一个实施例中,如图8所示,根据内存块所在的内存架构树的快照数据,向下递归查询根组织的子组织之前,还包括步骤810和步骤820。
步骤810,获取查询参数。
步骤820,基于查询参数,将快照数据划分为多个子快照数据。
步骤620,根据内存块所在的内存架构树的快照数据,向下递归查询根组织的子组织包括:
步骤830,根据各子快照数据,向下递归查询根组织的子组织,并归集基于各子快照数据查询得到的子组织。
其中,查询参数包括分批查询参数和分段并发查询参数中的任意一个。对于组织架构庞大的情况,可以通过分批拉取或分段并发拉取的方式获得组织架构树。分批查询参数可以是对于组织架构数据采用分多次的方式先后进行数据拉取时,每次拉取的数据量。分段并发查询参数可以是对于组织架构数据采用分多次的方式分段同步进行数据拉取时,每次拉取的数据量。基于查询参数,可以将快照数据划分为多个子快照数据,通过分批拉取或分段并发拉取的方式,减小内存空间的数据处理压力,提高数据处理效率。基于快照数据,无需考虑修改操作对内存架构树的修改产生的影响,通过归集对子快照数据查询得到的子组织,可以快速准确得到根组织对应的子组织,进而通过索引磁盘空间中的人员信息表得到组织架构数据。
在一个实施例中,在获取内存块所在内存架构树的快照数据的同时,还包括记录快照数据的留存时长,当各子快照数据均查询结束或快照数据的留存时长达到预设时长阈值时,释放快照数据占用的内存空间。
通过记录快照数据的留存时长,调用方不再使用该快照数据后,通知存储释放该快照,调用方不再使用该快照数据具体可以是各子快照数据均查询结束或快照数据的留存时长达到预设时长阈值。此时清理内存空间中的快照列表和因修改而拷贝的额外快照节点,释放其内存空间。通过限制了快照保留的时间,避免快照数据集膨胀占用较多内存空间,减小内存空间的资源占用。
在一次典型的组织架构查询流程中,读取内存空间中的组织架构部门树,向下递归遍历指定部门的所有子部门ID,然后再以这些部门ID在磁盘空间的LSM Tree中查询对应的人员基本信息,完成一次递归查询。
在一个实施例中,如图9所示,组织架构数据处理方法还包括组织架构修改过程,具体包括步骤910至步骤920。
步骤910,响应组织架构修改请求,将组织架构修改请求对应的修改数据更新至磁盘空间。
步骤920,当磁盘空间中的修改数据包括更新的组织信息表时,根据更新的组织信息表,更新内存空间中对应的内存架构树。
对于终端申请的组织架构的修改操作,首先服务器基于终端发送的组织架构修改请求,提取组织架构修改请求中携带的修改数据,修改数据具体可以是指定将数据A替换为数据B,也可以是对整个人员信息表或是组织信息表的全部替换,基于修改数据,生成一个批量写操作至磁盘空间,如果提交写成功即将修改数据更新至磁盘空间中,替换了原有的写入数据时,则基于磁盘空间中修改后的写入数据,当磁盘空间中的修改数据包括更新的组织信息表时,修改内存架构树,保证磁盘空间和内存空间中加载构建的内存架构树保持一致。当磁盘空间中的修改数据包括更新的组织信息表,例如仅对人员信息表进行修改时,直接修改磁盘空间的写入数据即可完成组织架构修改,修改操作轻量便捷,提高了企业组织架构的使用体验。
在一个实施例中,更新的组织信息表包括更新目标组织的所属上级组织。根据更新的组织信息表,更新内存空间中对应的内存架构树包括:在内存空间中查找目标组织对应的第一目标内存块、目标组织的初始上级组织对应的第二目标内存块、以及目标组织的更新上级组织对应的第三目标内存块;丢弃第一目标内存块与第二目标内存块之间的连接指针,并建立第一目标内存块与第三目标内存块之间的连接指针,得到更新的内存架构树。
具体来说,企业组织架构经常发生移动部门的操作,即把一个部门移动到另一个部门下,只需要修改磁盘空间中存储的部门的父节点标识,并且修改内存架构树,可完成一次移动部门的操作。对应的,内存架构树的修改具体为连接指针的修改,首先基于修改前的数据,确定原有的连接指针并丢弃,然后基于修改后的数据,建立新增的连接指针,完成连接指针的更新。
本申请还提供一种应用场景,该应用场景应用上述的组织架构数据处理方法。以应用场景为企业微信为例,具体地,该组织架构数据处理方法在该应用场景中的应用如下:
A公司的管理员可以通过登录企业微信的管理端,在管理端的终端界面查看和管理A公司的企业通讯录。如图10所示,A公司包括开发部、销售部、市场部等部门,管理员可以在企业微信的通讯录菜单对应的界面输入根部门的部门ID,例如公司名称:A公司,然后以A公司为根部门,在部门管理界面中写入A公司的子部门和部门成员,具体的写入方式可以是通过数据表的方式批量导入根部门的各子部门以及各个子部门的成员,也可以是按部门层级手动添加单个子部门进行单独设置,例如选定某部门,添加部门成员,设置该部门所属的上级部门、删除该部门、添加子部门以及修改部门名称等。批量导入数据是最为快捷高效的处理方式,管理员通过终端输入部门表和成员表,将部门表和成员表写入磁盘空间中进行存储,然后将成员表在磁盘空间中以LSM Tree的形式保存起来,并将磁盘空间中的部门表中的各部门ID加载至内存空间中的各内存块,基于各部门的上级部门,设定各内存块之间的连接指针,从而构建内存架构树,并将磁盘空间中的成员表中各成员的所属部门ID设置为该成员的索引信息,实现组织架构数据的写入。在组织架构信息写入完成之后,在企业微信的终端中,可以通过通讯录的触发操作,对应显示根部门的下属子部门的部门ID,通过触发显示的子部门,基于内存空间中的内存架构树的各内存块之间的连接指针,查找以该子部门为父部门的各下属子部门,并以该子部门的部门ID为索引信息,在磁盘空间中查找该子部门的成员信息,将下属子部门的部门ID以及成员信息反馈至终端,并在终端界面显示,从而实现A公司各部门的组织架构的向下递归查询。
在实施例中,服务器在响应用户通过终端对通讯录的触发操作时,即生成该时刻的快照数据,后续的进一步递归查询,在内存空间中的数据查找对象均为该快照数据,从而避免在查询过程中,由于管理员等具有通讯录更新权限的人,对组织架构数据进行更新导致的数据误差,确保每一次查询操作过程中,查询对象是完整的组织机构数据。当不再使用该快照数据后,释放该快照数据,清理快照列表和因快照时间点后对架构树的修改操作而拷贝的额外快照节点,释放其内存空间,限制了快照数据保留的时间,避免快照数据膨胀占用较多内存空间。
具体来说,在组织架构查询流程中,读取内存空间中的组织架构部门树,向下递归遍历指定部门的所有子部门ID,然后再以这些部门ID在LSM Tree中查询对应的员工记录,完成一次递归查询。
此外,对于组织架构的修改操作,首先基于修改操作生成一个批量写请求,若在磁盘空间中批量写成功,则根据修改内容修改内存架构树,保证磁盘空间和内存架构树保持一致。特别地,企业组织架构经常发生移动部门的操作,即把一个部门移动到另一个部门下,只需要修改存储中部门的父节点ID,并且修改内存架构树,可完成一次移动部门的操作。
在大多数企业组织架构中,员工数据量要远多于部门数量,基于部门和员工分离的企业组织架构树解决方法,既保证了优异的存储读写性能,又节省了运行内存空间的占用,有力支撑大规模组织架构的服务运行。
在其他实施例中,该方法还可以应用于家校通讯录等具有属性层次结构场景中,在家校通讯录中,组织信息表具体可以是A学校、X年级、Y班级等,人员信息表具体可以是每个班级的各个同学的基本信息等。其处理过程与上述在企业中的应用相同,在此不再赘述。
在一个实施例中,提供了一种组织架构数据处理方法,如图11所示,具体包括以下步骤1102至步骤1126。
步骤1102,响应组织架构数据写入请求,将写入请求中携带的组织信息表和人员信息表分别写入磁盘空间。
步骤1104,将人员信息表中人员所属组织的组织标识标记为人员的基本信息的索引信息,并将组织信息表中的各组织的组织标识从磁盘空间分别加载至内存空间中的对应内存块。
步骤1106,根据各组织所属的上级组织,标记各内存块之间的连接指针。
步骤1108,根据携带连接指针的内存块,构建内存架构树,得到组织架构数据写入结果。
步骤1110,响应组织架构查询请求,提取组织架构查询请求对应的根组织标识。
步骤1112,从内存空间中读取与根组织标识对应的内存块,获取内存块所在内存架构树的快照数据,并记录快照数据的留存时长。
步骤1114,获取查询参数,基于查询参数,将快照数据划分为多个子快照数据。
步骤1116,根据各子快照数据,向下递归查询根组织的子组织,并归集基于各子快照数据查询得到的子组织。
步骤1118,以子组织的组织标识为索引,从磁盘空间中查询子组织对应的人员的基本信息,得到组织架构数据查询结果。
步骤1120,当各子快照数据均查询结束或快照数据的留存时长达到预设时长阈值时,释放快照数据占用的内存空间。
步骤1122,响应组织架构修改请求,将组织架构修改请求对应的修改数据更新至磁盘空间。
步骤1124,当磁盘空间中的修改数据包括更新目标组织的所属上级组织时,在内存空间中查找目标组织对应的第一目标内存块、目标组织的初始上级组织对应的第二目标内存块、以及目标组织的更新上级组织对应的第三目标内存块。
步骤1126,丢弃第一目标内存块与第二目标内存块之间的连接指针,并建立第一目标内存块与第三目标内存块之间的连接指针,得到更新的内存架构树。
应该理解的是,虽然图2、图5-6、图8-9以及图11的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、图5-6、图8-9以及图11中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图12所示,提供了一种组织架构数据处理装置1200,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:写入请求响应模块1210、信息表处理模块1220、连接指针确定模块1230和架构树构建模块1240,其中:
写入请求响应模块1210,用于响应组织架构数据写入请求,将写入请求中携带的组织信息表和人员信息表分别写入磁盘空间;组织信息表包括组织的组织标识以及组织所属上级组织的组织标识;人员信息表包括人员的基本信息以及人员所属组织的组织标识。
信息表处理模块1220,用于将人员信息表中人员所属组织的组织标识标记为人员的基本信息的索引信息,并将组织信息表中的各组织的组织标识从磁盘空间分别加载至内存空间中的对应内存块。
连接指针确定模块1230,用于根据各组织所属的上级组织,标记各内存块之间的连接指针。
架构树构建模块1240,用于根据携带连接指针的内存块,构建内存架构树,得到组织架构数据写入结果。
在其中一个实施例中,组织架构数据处理装置还包括组织架构查询模块,组织架构查询模块用于响应组织架构查询请求,提取组织架构查询请求对应的根组织标识;从内存空间中读取与根组织标识对应的内存块,并根据内存块所在的内存架构树,向下递归查询根组织的子组织;以子组织的组织标识为索引,从磁盘空间中查询子组织对应的人员的基本信息,得到组织架构数据查询结果。
在其中一个实施例中,组织架构查询模块还用于从内存空间中读取与根组织标识对应的内存块,获取内存块所在内存架构树的快照数据;根据内存块所在的内存架构树的快照数据,向下递归查询根组织的子组织。
在其中一个实施例中,组织架构查询模块还用于获取查询参数,查询参数包括分批查询参数和分段并发查询参数中的任意一个;基于查询参数,将快照数据划分为多个子快照数据;根据各子快照数据,向下递归查询根组织的子组织,并归集基于各子快照数据查询得到的子组织。
在其中一个实施例中,组织架构查询模块还用于记录快照数据的留存时长;当各子快照数据均查询结束或快照数据的留存时长达到预设时长阈值时,释放快照数据占用的内存空间。
在其中一个实施例中,组织架构数据处理装置还包括组织架构修改模块,组织架构修改模块用于响应组织架构修改请求,将组织架构修改请求对应的修改数据更新至磁盘空间;当磁盘空间中的修改数据包括更新的组织信息表时,根据更新的组织信息表,更新内存空间中对应的内存架构树。
在其中一个实施例中,组织架构修改模块还用于在内存空间中查找目标组织对应的第一目标内存块、目标组织的初始上级组织对应的第二目标内存块、以及目标组织的更新上级组织对应的第三目标内存块;丢弃第一目标内存块与第二目标内存块之间的连接指针,并建立第一目标内存块与第三目标内存块之间的连接指针,得到更新的内存架构树。
上述组织架构数据处理装置,通过以组织信息表和人员信息表分离的形式写入组织架构数据,通过在磁盘空间中存储组织信息表,在内存空间中利用内存块之间的连接指针,构建与组织信息表对应的内存架构树,将人员信息表中的数据存储于磁盘空间中,通过以人员所属组织的组织标识为人员的基本信息索引,通过内存空间中的内存架构树和磁盘空间中的携带有索引的人员信息表的组织架构数据写入方式,便于在后续的组织架构查询中减少内存资源占用,提高查询性能。
关于组织架构数据处理装置的具体限定可以参见上文中对于组织架构数据处理方法的限定,在此不再赘述。上述组织架构数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图13所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储组织架构数据处理数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种组织架构数据处理方法。
本领域技术人员可以理解,图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种组织架构数据处理方法,所述方法包括:
响应组织架构数据写入请求,将所述写入请求中携带的组织信息表和人员信息表分别写入磁盘空间,所述组织信息表包括组织的组织标识以及组织所属上级组织的组织标识,所述人员信息表包括人员的基本信息以及人员所属组织的组织标识;
将所述人员信息表中人员所属组织的组织标识标记为人员的基本信息的索引信息,并将所述组织信息表中的各组织的组织标识从所述磁盘空间分别加载至内存空间中的对应内存块;
根据各组织所属的上级组织,标记各所述内存块之间的连接指针;
根据携带连接指针的内存块,构建内存架构树,得到组织架构数据写入结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应组织架构查询请求,提取所述组织架构查询请求对应的根组织标识;
从内存空间中读取与所述根组织标识对应的内存块,并根据所述内存块所在的内存架构树,向下递归查询所述根组织的子组织;
以所述子组织的组织标识为索引,从磁盘空间中查询所述子组织对应的人员的基本信息,得到组织架构数据查询结果。
3.根据权利要求2所述的方法,其特征在于,所述从内存空间中读取与所述根组织标识对应的内存块,并根据所述内存块所在的内存架构树,向下递归查询所述根组织的子组织包括:
从内存空间中读取与所述根组织标识对应的内存块,获取所述内存块所在内存架构树的快照数据;
根据所述内存块所在的内存架构树的快照数据,向下递归查询所述根组织的子组织。
4.根据权利要求3所述的方法,其特征在于,所述根据所述内存块所在的内存架构树的快照数据,向下递归查询所述根组织的子组织之前,还包括:
获取查询参数,所述查询参数包括分批查询参数和分段并发查询参数中的任意一个;
基于所述查询参数,将所述快照数据划分为多个子快照数据;
所述根据所述内存块所在的内存架构树的快照数据,向下递归查询所述根组织的子组织包括:
根据各所述子快照数据,向下递归查询所述根组织的子组织,并归集基于各所述子快照数据查询得到的子组织。
5.根据权利要求4所述的方法,其特征在于,在所述获取所述内存块所在内存架构树的快照数据的同时,还包括:
记录所述快照数据的留存时长;
当各所述子快照数据均查询结束或所述快照数据的留存时长达到预设时长阈值时,释放所述快照数据占用的内存空间。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应组织架构修改请求,将所述组织架构修改请求对应的修改数据更新至所述磁盘空间;
当所述磁盘空间中的修改数据包括更新的组织信息表时,根据更新的组织信息表,更新所述内存空间中对应的内存架构树。
7.根据权利要求6所述的方法,其特征在于,所述更新的组织信息表包括更新目标组织的所属上级组织;所述根据更新的组织信息表,更新所述内存空间中对应的内存架构树包括:
在内存空间中查找所述目标组织对应的第一目标内存块、所述目标组织的初始上级组织对应的第二目标内存块、以及所述目标组织的更新上级组织对应的第三目标内存块;
丢弃所述第一目标内存块与所述第二目标内存块之间的连接指针,并建立所述第一目标内存块与所述第三目标内存块之间的连接指针,得到更新的内存架构树。
8.一种组织架构数据处理装置,其特征在于,所述装置包括:
写入请求响应模块,用于响应组织架构数据写入请求,将所述写入请求中携带的组织信息表和人员信息表分别写入磁盘空间;所述组织信息表包括组织的组织标识以及组织所属上级组织的组织标识;所述人员信息表包括人员的基本信息以及人员所属组织的组织标识;
信息表处理模块,用于将所述人员信息表中人员所属组织的组织标识标记为人员的基本信息的索引信息,并将所述组织信息表中的各组织的组织标识从所述磁盘空间分别加载至内存空间中的对应内存块;
连接指针确定模块,用于根据各组织所属的上级组织,标记各所述内存块之间的连接指针;
架构树构建模块,用于根据携带连接指针的内存块,构建内存架构树,得到组织架构数据写入结果。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010171159.5A CN113391916A (zh) | 2020-03-12 | 2020-03-12 | 组织架构数据处理方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010171159.5A CN113391916A (zh) | 2020-03-12 | 2020-03-12 | 组织架构数据处理方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113391916A true CN113391916A (zh) | 2021-09-14 |
Family
ID=77615631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010171159.5A Pending CN113391916A (zh) | 2020-03-12 | 2020-03-12 | 组织架构数据处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113391916A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986824B (zh) * | 2021-10-27 | 2024-02-23 | 西安热工研究院有限公司 | 一种高效存储和检索时序数据的方法 |
-
2020
- 2020-03-12 CN CN202010171159.5A patent/CN113391916A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986824B (zh) * | 2021-10-27 | 2024-02-23 | 西安热工研究院有限公司 | 一种高效存储和检索时序数据的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110276002B (zh) | 搜索应用数据处理方法、装置、计算机设备和存储介质 | |
US10642515B2 (en) | Data storage method, electronic device, and computer non-volatile storage medium | |
US10180992B2 (en) | Atomic updating of graph database index structures | |
CN112036736A (zh) | 一种工作流创建方法及装置 | |
CN110287192B (zh) | 搜索应用数据处理方法、装置、计算机设备和存储介质 | |
US20140244606A1 (en) | Method, apparatus and system for storing, reading the directory index | |
US20170255708A1 (en) | Index structures for graph databases | |
US20180144061A1 (en) | Edge store designs for graph databases | |
CN107103011B (zh) | 终端数据搜索的实现方法和装置 | |
CN106446044B (zh) | 存储空间回收方法及装置 | |
CN104239377A (zh) | 跨平台的数据检索方法及装置 | |
CN103795811A (zh) | 一种基于元数据保存存储信息及统计管理数据的方法 | |
EP3788505B1 (en) | Storing data items and identifying stored data items | |
US10747786B2 (en) | Spontaneous networking | |
CN110851663B (zh) | 管理元数据的方法和装置 | |
CN110799961A (zh) | 在数据库中创建和删除租户的系统和方法 | |
CN106802928B (zh) | 电网历史数据管理方法及其系统 | |
CN115544183A (zh) | 数据可视化方法、装置、计算机设备和存储介质 | |
CN112785248B (zh) | 人力资源数据跨组织交互方法、装置、设备和存储介质 | |
CN110941629A (zh) | 元数据处理方法、装置、设备及计算机可读存储介质 | |
CN113282799B (zh) | 节点的操作方法、装置、计算机设备和存储介质 | |
CN113391916A (zh) | 组织架构数据处理方法、装置、计算机设备和存储介质 | |
KR20130053152A (ko) | 태그 기반 파일 관리 방법 및 그 시스템 | |
US20180144060A1 (en) | Processing deleted edges in graph databases | |
CN114895875B (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 |