专利名称:一种系统管理数据的分布式缓存方法及文件管理系统的制作方法
技术领域:
本申请涉及基于大容量存储设备的文件管理系统,尤其涉及一种系统管理数据的分布式缓存方法及系统。
背景技术:
随着信息科技的发展,企业或机构组织中的信息量越来越大。各种各样的电子文件成为信息的主要载体。随着计算机技术以及存储技术的发展,越来越多的企业或机构组织选择大容量的存储设备来保存企业或机构组织在日常运转中产生的文件,并借助相关的文件管理系统来管理文件,以提高文件的安全性、文件存储和访问的高效性。传统的文件管理系统大都采用客户端服务器(C/S)结构:客户端主要提供文件系统的访问;而服务器端则通过一个文件系统集中管理文件,并通过数据库来管理一些系统管理数据。在一个传统的文件管理系统中,通常需要按照企业本身的一些特征信息(例如:企业组织结构、员工的职责等)来组织文件目录结构以及制定相应的权限,来辅助文件的管理。这些数据被称为系统管理数据。通常,系统管理数据存放在文件管理系统服务器端的数据库中。在传统的文件管理系统中,在客户端需要通过这些系统管理数据来做出权限设置、计算或者一些访问动作的选择的时候,往往是直接通过访问服务器端的数据库来获取系统管理数据。由于客户端对系统管理数据的访问比较频繁,所以这些系统管理数据的访问效率,很大程度上影响着整个文件系统的访问效率。通常情况下,通过网络访问服务器端的数据库的时间开销比较大,而且也受限于网络环境、数据库性能等因素,导致访问时间长,对客户端文件访问涉及的一些频繁的操作,带来了很大的延迟,用户体验比较差。要解决这个问题,现有技术中主要采取如下几种方式:方式一:提高网络本身的性能或者提高服务器端数据库系统本身的性能。这种方法会导致系统的部署难度及客户的拥有成本,而且性能的提升很有限,因此不是一种很好的选择。方式二:在服务器端将数据库中的系统管理数据进行缓存。这样可以提升数据访问速度,但客户端还是每次需要通过网络来获取数据,因此网络上的时间开销还是比较大。
发明内容
本申请提供了 一种文件管理系统中的系统管理数据的分布式缓存方法及系统,可以有效地提升对系统管理数据的访问效率,从而缩短客户端文件访问的时间,提升用户体验。本申请实施例提供一种系统管理数据的分布式缓存方法,包括:A、在服务器和客户端的内存中分别保存一张节点关系网状图,该节点关系网状图中的每一个节点对应系统管理数据中的一个对象;节点间的连接代表系统管理数据之间的关系;服务器缓存的节点关系网状图和客户端缓存的节点关系网状图的结构完全相同;
B、客户端和服务器对客户端本地缓存的节点关系网状图与服务器缓存的节点关系网状图进行同步;C、客户端在本地缓存的节点关系网状图中对系统管理数据进行访问。较佳地,在客户端缓存的节点关系网状图中,每个对象只保存该客户端必须的信
肩、O较佳地,预先建立一张哈希表,所述哈希表中以系统管理数据中的对象标识作为键值,定位到节点关系网状图中的相应节点的地址;步骤C所述客户端在本地缓存的节点关系网状图中对系统管理数据进行访问包括:根据所要访问的对象标识查询所述哈希表得到相应的键值,根据所述键值定位到客户端本地缓存的节点关系网状图中的相应节点。较佳地,步骤C进一步包括:通过所访问的节点中保存的关联指针,查询与其存在连接的其他节点的信息。较佳地,步骤B之前进一步包括:服务器端维护数据变化日志,用于记录系统管理数据的变化信息;步骤B所述客户端和服务器对客户端本地缓存的节点关系网状图与服务器缓存的节点关系网状图进行同步为:根据服务器维护的所述数据变化日志,将服务器本地缓存的节点关系网状图进行增量式同步至客户端本地缓存的节点关系网状图。较佳地,步骤B包括:B1、在客户端初始化时,如果是首次登录服务器,则从服务器获取所有该客户端所需的系统管理数据;如果不是首次登录,则从服务器获取自从上次更新后所有发生变更的系统管理数据;B2、在更新完成后,服务器将系统当前的时间点发送给客户端;B3、客户端将所述时间点保存起来作为最近一次更新的系统时间点。较佳地,步骤B进一步包括:客户端向服务器发起数据同步请求,所述数据同步请求中携带最近一次更新时服务器返回给客户端的时间点;服务器接收到客户端的数据同步请求后,根据其中携带的时间点查询数据变化日志,逐条解析从上次更新到当前时间为止的数据变化日志,将变化的数据发送给客户端。本申请实施例还提供一种文件管理系统,包括服务器以及一个以上的客户端,所述服务器包括:服务器缓存模块,用于在服务器的内存中保存一张节点关系网状图,该节点关系网状图中的每一个节点对应系统管理数据中的一个对象;节点间的连接代表系统管理数据之间的关系;服务器同步模块,用于与客户端进行交互,实现客户端本地缓存的节点关系网状图与服务器缓存模块所缓存的节点关系网状图进行同步;所述客户端包括:客户端缓存模块,用于在客户端的内存中保存一张节点关系网状图,该节点关系网状图中的每一个节点对应系统管理数据中的一个对象;节点间的连接代表系统管理数据之间的关系;客户端缓存的节点关系网状图和服务器缓存的节点关系网状图的结构完全相同;客户端同步模块,用于与服务器进行交互,实现客户端缓存模块所缓存的节点关系网状图与服务器缓存模块所缓存的节点关系网状图进行同步;数据访问模块,用于在所述客户端缓存模块所缓存的节点关系网状图中对系统管理数据进行访问。较佳地,所述客户端缓存模块所缓存的节点关系网状图中,每个对象只保存该客户端必须的信息。较佳地,所述服务器进一步包括:日志维护模块,用于维护数据变化日志,所述数据变化日志用于记录系统管理数据的变化信息;所述服务器同步模块和客户端同步模块用于根据所述日志维护模块所维护的数据变化日志,将服务器本地缓存的节点关系网状图进行增量式同步至客户端本地缓存的节点关系网状图。从以上技术方案可以看出,通过客户端分布式缓存系统管理数据,极大地提高客户端管理数据查询的速度,从而提高客户端的文件操作的效率;采用增量式同步方式,.降低数据客户端和服务器端数据同步的频率及数据交互的数量,从而减少网络的开销,降低系统的负载。
图1为按照本申请实施例提供的方式生成的一个典型的企业组织关系图;图2为图1所不的节点关系网状图对应的哈希表的不意图;图3为本申请实施例中客户端对系统管理数据的访问流程图;图4为本申请实施例中客户端和服务器端依据数据变化日志的增量式同步流程图;图5为本申请实施例中客户端在首次登录时系统管理数据的增量式同步过程中的信令交互流程示意图;图6为本申请实施例中客户端运行过程中的系统管理数据的增量式同步的信令流程示意图。
具体实施例方式申请技术方案的基本思想在于,在客户端及服务器端均对系统管理数据在内存中进行分布式缓存。对于服务器来说,从内存获取数据的速率远高于从数据库中获取数据的效率,因此提高了服务器获取系统管理数据的效率;对于客户端来说,客户端对数据的获取不再需要每次都通过服务器端去获取,从而提高了客户端获取系统管理数据的效率。在此基础上,本申请方案还对缓存机制进行改进,不再如同传统的数据库数据缓存方式那样,将数据库中的表的数据按照关系型数据库的形式进行缓存;而是将系统管理数据中的实体抽象成对象,按照对象在特定语义环境下的关联,将其组织成一张网状图,这样极大地提高了数据查询的效率。
进一步地,为了保证客户端以及服务器端缓存的数据的一致性,通过增量式同步机制来进行数据的更新,这样避免了大数据量更新时网络上的开销。为使本申请技术方案的技术原理、特点以及技术效果更加清楚,以下结合具体实施例对本申请技术方案进行详细阐述。本申请实施例提供的系统管理数据的分布式缓存方法主要包括:A、在服务器和客户端的内存中分别保存一张节点关系网状图,该网状图中的每一个节点对应系统管理数据中的一个对象;节点间的连接代表系统管理数据之间的关系。月艮务器端和客户端的节点关系网状图的结构完全相同。较佳地,为控制客户端对内存的占用量,在客户端缓存的节点关系网状图中,每个对象只保存该客户端必须的信息。B、客户端和服务器端依据所述数据变化日志对本地缓存的节点关系网状图进行同步;C、客户端在本地缓存的节点关系网状图中对系统管理数据进行访问。步骤B之前进一步包括:服务器端维护数据变化日志,用于记录系统管理数据的变化信息;步骤B所述同步为根据所述数据变化日志进行增量式同步,即将服务器本地缓存的节点关系网状图进行增量式同步至客户端本地缓存的节点关系网状图,从而节约服务器与客户端之间同步时的网络传输数据量。较佳地,为了保证访问迅速,预先建立一张哈希表,所述哈希表中以系统管理数据中的对象标识作为键值,定位到节点关系网状图中的相应节点的地址;根据所要访问的系统管理数据查询所述哈希表得到相应的键值,根据所述键值定位到客户端本地缓存的节点关系网状图中的相应节点。本申请实施例提供的系统管理数据的分布式缓存方法中,系统管理数据集中存放在服务器的关系型数据库中,为提高访问效率,在服务器端的内存中,将系统管理数据抽象成对象,并按照对象间的关系,组织成一张节点关系网状图,图中每个节点分别代表一个对象,而节点间的连接代表它们之间的关系。以企业的组织结构数据为例,对于一个企业,生成一个企业对象来缓存该企业相关的一些信息;该企业下有多个部门,每个部门对象用来缓存对应部门相关的一些信息;同时企业和部门之间产生I对多的父子关系,一个企业节点关联多个部门节点;而每个部门下也会有多个用户,用户对象用来缓存部门成员相关的一些信息,一个部门节点关联多个用户节点;一个部门下可能有多个子部门,所以一个部门节点可以关联多个子部门节点。用户按照职责可以扮演不同的角色,角色对象用来缓存角色相关的信息,一个用户可以有多个角色,一个角色也可以由多个用户扮演,用户节点和角色节点间是多对多的关系。如果节点A与节点B之间存在关系,则这两个节点分别保存指向对方节点地址的指针。这样,整个企业的组织就构成了一张网状图。图1为按照上述方式生成的一个典型的企业组织关系图。为保证快速地定位到要访问的节点,建立了一张哈希(hash)表,能够通过特定的键值迅速定位到该节点。每次对服务器端数据库的操作(增、删、改)都会同时更新到内存中的这张网状图上,如图2所示。本申请实施例方案中,在客户端的内存中也维护同服务器端结构一致的一张节点关系网状图。为控制客户端对内存的占用量,每个对象只保存该客户端必须的信息。同时,为保证快速地定位到要访问的节点,建立了一张hash表,能够通过特定的键值迅速定位到该节点。在建立好前述节点关系网状图之后,客户端对系统管理数据的访问都在本地缓存的网状图中进行。访问的过程如图3所示,包括如下步骤:步骤301:在客户端输入所要访问的对象标识;步骤302:以该对象标识为Hash键值,查找Hash表,获得该对象对应的网状图中的节点的地址;步骤303:从节点地址获取该对象的信息;步骤304:如果需要获取和该节点有关联的其它节点的信息,则通过该节点中保存的关联指针,查询与其存在连接的其他节点的信息。例如,客户端需要查询到某个部门的所有成员,它首先会通过部门的标识通过h a s h表找到给部门节点在内存中的地址,然后遍历该部门节点下的所有子节点,如果该子节点是部门成员则直接返回成员信息,如果该子节点是子部门,那么需要重复上述过程。该遍历算法同树的遍历算法。在服务器端需要维护数据变化日志,用于记录系统管理数据的变化信息。记录的内容包括:变化发生的时间;变化对应的操作;变化对应的关键数据对象类型;变化对应的关键数据对象的ID ;变化对应的相关数据对象类型;变化对应的相关数据对象ID。变化发生的时间用来记录该次变化发生时服务器端的时间。变化对应的关键数据对象指该操作直接针对的对象,而变化对应的相关对象是指该操作相关联的数据对象。变化对应的动作是指针对数据库的操作,包括:增加、删除、修改。例如:将某个用户增加到某个部门,则变化对应的关键数据对象为该用户,而变化对应的相关对象为增加到的部门。对象的类型和应用密切关联,例如:企业、部门、用户、角色等。系统管理数据变化日志的格式表I所示:
权利要求
1.一种系统管理数据的分布式缓存方法,其特征在于,包括: A、在服务器和客户端的内存中分别保存一张节点关系网状图,该节点关系网状图中的每一个节点对应系统管理数据中的一个对象;节点间的连接代表系统管理数据之间的关系;服务器缓存的节点关系网状图和客户端缓存的节点关系网状图的结构完全相同; B、客户端和服务器对客户端本地缓存的节点关系网状图与服务器缓存的节点关系网状图进行同步; C、客户端在本地缓存的节点关系网状图中对系统管理数据进行访问。
2.根据权利要求1所述的方法,其特征在于,在客户端缓存的节点关系网状图中,每个对象只保存该客户端必须的信息。
3.根据权利要求1所述的方法,其特征在于,预先建立一张哈希表,所述哈希表中以系统管理数据中的对象标识作为键值,定位到节点关系网状图中的相应节点的地址; 步骤C所述客户端在本地缓存的节点关系网状图中对系统管理数据进行访问包括: 根据所要访问的对象标识查询所述哈希表得到相应的键值,根据所述键值定位到客户端本地缓存的节点关系网状图中的相应节点。
4.根据权利要求3所述的方法,其特征在于,步骤C进一步包括:通过所访问的节点中保存的关联指针,查询与其存在连接的其他节点的信息。
5.根据权利要求1所述的方法,其特征在于,步骤B之前进一步包括:服务器端维护数据变化日志,用于记录系统管理数据的变化信息; 步骤B所述客户端和服务器对客户端本地缓存的节点关系网状图与服务器缓存的节点关系网状图进行同步为:根据服务器维护的所述数据变化日志,将服务器本地缓存的节点关系网状图进行增量式同步至客户端本地缓存的节点关系网状图。
6.根据权利要求5所述的方法,其特征在于,步骤B包括: B1、在客户端初始化时,如果是首次登录服务器,则从服务器获取所有该客户端所需的系统管理数据;如果不是首次登录,则从服务器获取自从上次更新后所有发生变更的系统管理数据; B2、在更新完成后,服务器将系统当前的时间点发送给客户端; B3、客户端将所述时间点保存起来作为最近一次更新的系统时间点。
7.根据权利要求6所述的方法,其特征在于,步骤B进一步包括: 客户端向服务器发起数据同步请求,所述数据同步请求中携带最近一次更新时服务器返回给客户端的时间点; 服务器接收到客户端的数据同步请求后,根据其中携带的时间点查询数据变化日志,逐条解析从上次更新到当前时间为止的数据变化日志,将变化的数据发送给客户端。
8.一种文件管理系统,包括服务器以及一个以上的客户端,其特征在于,所述服务器包括: 服务器缓存模块,用于在服务器的内存中保存一张节点关系网状图,该节点关系网状图中的每一个节点对应系统管理数据中的一个对象;节点间的连接代表系统管理数据之间的关系; 服务器同步模块,用于与客户端进行交互, 实现客户端本地缓存的节点关系网状图与服务器缓存模块所缓存的节点关系网状图进行同步;所述客户端包括: 客户端缓存模块,用于在客户端的内存中保存一张节点关系网状图,该节点关系网状图中的每一个节点对应系统管理数据中的一个对象;节点间的连接代表系统管理数据之间的关系;客户端缓存的节点关系网状图和服务器缓存的节点关系网状图的结构完全相同; 客户端同步模块,用于与服务器进行交互,实现客户端缓存模块所缓存的节点关系网状图与服务器缓存模块所缓存的节点关系网状图进行同步; 数据访问模块,用于在所述客户端缓存模块所缓存的节点关系网状图中对系统管理数据进行访问。
9.根据权利要求8所述的文件管理系统,其特征在于,所述客户端缓存模块所缓存的节点关系网状图中,每个对象只保存该客户端必须的信息。
10.根据权利要求8所述的文件管理系统,其特征在于,所述服务器进一步包括: 日志维护模块,用于维护数据变化日志,所述数据变化日志用于记录系统管理数据的变化信息; 所述服务器同步模块和客户端同步模块用于根据所述日志维护模块所维护的数据变化日志,将服务器本地缓存的节点关系网状图进行增量式同步至客户端本地缓存的节点关系网状图。
全文摘要
本发明公开了一种系统管理数据的分布式缓存方法,包括A、在服务器和客户端的内存中分别保存一张节点关系网状图,该节点关系网状图中的每一个节点对应系统管理数据中的一个对象;节点间的连接代表系统管理数据之间的关系;服务器缓存的节点关系网状图和客户端缓存的节点关系网状图的结构完全相同;B、客户端和服务器对客户端本地缓存的节点关系网状图与服务器缓存的节点关系网状图进行同步;C、客户端在本地缓存的节点关系网状图中对系统管理数据进行访问。本发明还公开了一种文件管理系统。通过应用本发明技术方案,可以有效地提升对系统管理数据的访问效率,从而缩短客户端文件访问的时间,提升用户体验。
文档编号H04L29/08GK103209215SQ20131013071
公开日2013年7月17日 申请日期2013年4月16日 优先权日2013年4月16日
发明者黄君洲 申请人:上海爱数软件有限公司