设为首页添加收藏
档案学会
 
学会章程
学会动态
山东档案
学术之窗
档案学优秀成果
专业委员会
专业期刊
 
首页 >> 档案学会 >> 学术之窗
浅谈索引技术在事业单位人事档案管理中的应用与发展
发布时间: 2016-03-25信息来源: 山东省档案局点击率:

 

随着中央对事业单位改革力度的不断增大,事业单位内部有关机制体制与以往相比也出现了许多新情况、新问题,如职工传统身份被打破、聘用人员流动性强、人员流动受市场影响增大等等。人事档案管理工作作为人事管理工作中重要一环,要积极应对这一情况,以为整个单位提供更加完善的人事信息支撑,就必需建立起一个全面、动态、准确、高效的人员档案信息数据库。这项工作涉及数据量庞大,数据的收集、整理、制作、管理、检索、维护等都存在众多难点。如何对这样大量的数据进行快速准确检索和维护,是关系到人员档案便捷管理和为领导提供辅助决策能否顺利实施的关键所在,也是目前信息领域的重要课题之一。实现从海量职工信息档案数据中快速检索出特定个体信息,是衡量信息化档案管理系统是否正常运行的重要指标。本文中,作者结合自己的工作实际,就上述问题进行了阐述和探讨,重点通过实例对目前主流索引技术在人事档案管理工作的应用与发展进行了研究。

一、目前主流索引技术分析

(一)B*树索引技术

B*树索引技术也可以称之为“传统索引”,是数据库系统中最觉的一种索引结构。其实现机制与二叉树配搭相似,其目标是尽可能养活配搭数据所花费的时间。比如,如果职工信息系统中在工号(假定职工的工号为(0~∞))字段上有一B*索引,则这个索引结构可能如图1所示:

span style='mso-ignore:vglayout;;z-index:-3;left:0px;margin-left:71px;margin-top:14px;width:423px; height:306px'图1 典型B树索引布局.jpg

这个树最底层的块为叶子节点(leaf node)或叶子块(leaf block),其中分别包含各个索引键以及一个rowid(指向索引行的唯一标识)。叶子节点之上的内部模块为分支块(branch block)。这些节点用于在结构中实现快速导航以便迅速定位。例如我们要查找工号为18的员工基本信息,就需要从树根节点开始,找到左分支。检查这块的内容,识别出我们要找的范围在“11..19”这个子块,将目标锁定在这一子块后,我们很容易找到18的叶子块。这个叶子块中包含了我们所要查找的对象18所在行的唯一标识rowid,这样通过这个标识就可以找到我们所需的相关信息。

但是,B*树索引不同于常见的二叉树结构,它的叶子节点为双向链表结构,在已经定位到某一位置的前提下,如果要查找的内容是同一个区间,那么这种结构可以为我们带来方便的遍历查找,也就是可以进行有序扫描(也可以称之为敬意扫描),我们不再需要在索引结构中导航查找,而是可以直接通过叶子节点向前或者身后扫描就可以了,因此在这种索引的机制下查找某一范围区间的相关内容相当方便。

因此,我们可以得出这样的结论,即,B*树索引的特点之一是所有的叶子块都应该在树的同一层上,也称为索引高度,这说明从索引的根到相应的叶子块的遍历都会访问相同数目的块,也就是说在同一数量级的表记录中,我们实际查询职工信息时,无论查找条件如何变化,执行搜索所花费的时间接近一个定量;然而另一方面,我们在录入新的数据时,就需要执行一些相应额外运算开销,来重新平衡索引结构,使索引的左右趋于平衡,从而优化查询花费。

(二)组合索引

当我们在表中的某一字段上建立索引后,发现仅仅建立该字段的值并不能满足我们业务的查询需求时,我们就需要在查询的时候使用多个字段值同时匹配查询条件,如果我们还是使用常规索引的话,将查询语句扩展开的话就需要多次扫描结果集。但如果我们将多个字段合并到一起建立索引,就可以实现跳跃式扫描,从而优化查询效率,这种在一个索引中集合多个字段信息的方法就称为组合索引。

组合索引可以帮助我们提高数据库的搜索效率。如以下SQL(数据库)查询语句:

SELECT empNO,empName,empAddress,job Title(选择工号、姓名、地址、职称)

  FROM employee(表示搜索的区域为employee

  WHERE jobTitle=Associate Professor’(表示匹配条件为副教授、上海,总数小于500人)

  AND city=Shanghai

  AND total Pur<500;

查询的执行结果通常情况下为职工信息表employee的一个较小的子集,一般上述查询结果多于一条记录。如果我们还使用基于单一字段查询,然后主次匹配将对整个信息表进行多次全面扫描,花费代价将成倍增大,在职工人数较多的单位中甚至出现查询定位失败的情况。但是,如果我们对B*树索引进行扩展,使之包含多个字段,就可以满足多个字段匹配的查询条件。

在唯一索引情况下,非叶子节点值匹配我们容易查找的主键的值;在非唯一索引中,非叶子节点值匹配我们查找的相关信息的组合条件的相关属性的值。这样我们创建一个非唯一索引包含“jobTitle(职称),city(城市),totalPur(总数)”的组合信息,如图2所示:

span style='mso-ignore:vglayout;;z-index:-1;left:0px;margin-left:45px;margin-top:3px;width:554px; height:307px'图2 组合索引.jpg

在叶子节点中,存放具有相同属性的一些记录行的信息,这样我们就可以通过组合索引快速查找相应的记录。

组织索引的劣势在于,一它们趋于较长的索引键,如前文提到的B*树,如果不进行压缩,那么组合索引方式会造成B*树结构变得非常大,而且树冠层数会变得更多,虽然我们可以使用哈希结构来实现组合索引结构的缩小问题,但哈希结构无法支持前缘匹配查询或者范围查询;二由于综合索引包含多个属性,所以无论组合索引中任何属性的更新都会引导整个索引的更新。

二、人事档案中常用的几种索引方法

索引是用于在数据集中定位某种特殊部分的数据结构,例如,传统的图书上当索引,可以通过词来检索图书;关系数据库管理系统的索引,可以有效的查找某条记录而不需要遍历整个表,因此能否根据人事档案的业务规则编制出高效的索引,对健全和完善人事档案部门的检索系统具有重要意义。在我们实际工作中主要有以下几种索引方法。

(一)工号索引

工号索引是以档案中所包含的职工编号作为条目的标目,一般来说是按照工号递增顺序排列而成的一种检索工龄。工号索引可以唯一指定一名职工的基本信息,经常用来作为对职工档案进行维护的依据,同时工号索引还有利于进行区间扫描,例如如果在2005年至2008年入职的人员查找一名名叫“张三”的职工,因该职工在2014年的职称评定中,由“中级”技术职务晋升为“副高级”技术职务,需要在人事档案中对其记录信息进行相应更新,我们可以直接通过该人的工号索引唯一定位到他的基本信息,然后进行信息更新同步处理,可以避免同名同姓造成的信息错误。但如果不知道工号,我们就必须通过其他方法(如所属部门、年龄、入职时间、政治面貌等多种条件)获取该人的准确定位,才能进行更新存档。

(二)人名索引

人名索引是以档案中所包含人物的姓名作为条目的标目,通过按照姓氏进行升序排列而形成一种有效的检索工龄,从其录入范围来看,可以分为综合性人名索引和专题性人名索引两种。前者是将档案中所包含到的全部人名编制成索引,后者则选择若干比较常用的利用角度(如奖惩、任免、离退、职称等)作为专题编制人名索引。一般来讲,专题性人名索引的利用率较高,并且编制工作量较小,可以适应大多数档案管理工作中需从人名入手查找档案的要求;而综合性人名索引编制工作量较大,对普通档案管理不太适宜。但由于现代计算机技术广泛应用,高速运算、快速检索等技术的有力支撑,目前综合性人名索引数据库的逐步得到建立完善,大大提高了此类方法的查询效率。

但是在实际工作中,由于可能出现的人名重复情况,人名索引方法往往并不能保证档案的唯一确定性,因此大多数情况下还需要附加除人名条件之外的其他属性进行确认,以满足检索内容的准确性。

(三)职称索引

职称索引是以档案中所包含的职工职称作为条目的标目上,按照职称的级别进行编排而形成的一种检索工具。职称索引一般用来对本单位职工整体层次结构进行统计分析,为人才引进、干部队伍结构优化、岗位设置等方面提供决策支持。

(四)机构索引

机构索引是以职工所属的部门名称作为条目的标目,按字顺排列而成的一种检索工具。以在同一部门工作的人员作为一个类区,可以给出一个部门的人员信息,也可以对该部门人员的人事档案信息内容进行排序检索,筛选查询、比较汇总、分析统计,从而及时准确的掌握人员结构、层次分布等情况,为人才预测、人才引进等提供数据依据。

三、不同索引的性能比较分析

某单位某一部门有

span style='mso-ignore:vglayout;;z-index:-2;left:0px;margin-left:60px;margin-top:6px;width:425px; height:234px'表1   职工信息结构.jpg

Char(x)表示该键的类型,x表示该键值的长度,为了便于检索我们在此表基础上建立两条索引,唯一索引位于工号empNo和一般索引部门编号(empDepID)上面,这里检索部门AID为(00000011)以下的所有人员,就可以使用部门编号索引来对emplyee(职工信息表)进行检索,如:使用命令Select*from employee where empDepID=00000011,但是,如果该部门职工较多,将会造成部门编号在这张表时的重复率相当高,造成查询的效率变低下。解决这一问题可以采用数据库自带的dynexpln工具分析得到类似语句在执行中的耗费,如在执行上一命令中的耗费为Estimated Cost=3489.15625,这里我们如果在工号的命名规则中使用工号=入职年份+部门编码+内部编码的方法,在工号索引上同时建立B*树索引,就能够有效支持区间扫描,从而变通的使用工号区间查询得出某部门的所有人员,命令语句为:select*from employee where empNo>=XX0000001100000AND empNo<=XX0000001199999’(表示从职工信息表中选择该区间所有职工信息,选择区间为:XX0000001100000XX0000001199999),我们再使用dynexpln工具分析该语句的Estimated Cost=30.26673,明显优于前一语句,因此我们可以得出结论,在给定索引的情况下合理变通使用多种索引方法,可以极大提高人员信息查询效率。

本文结合作者从事档案管理的工作实际,阐述了常见索引方式B*树索引、组合索引的优缺点,分析了人事档案常用索引方法的特点、实现方法,重点对如何优化索引结构提出了自己的看法。应该说,人事档案的信息化是一个庞大而复杂的工程,它涉及到了网络技术、安全防护、制度规范等多个方面,都需要我们在今后的工作不断进行探索研究。

参考文献:

1SAM S.LJGHTSTONE,TOBY j.Teorey and Tom Nadeau.Physical Database DesignM.Morgan Kaufmann,2007

2THOMAS KYTE.Oracle  编程艺术【M】。北京:人民邮电出版社,2006

3】洪漪,档案信息组织与检索【M】。武汉:武汉大学出版社,1999

4】冯惠玲,档案文献检索【M】。北京:高等教育出版社,2000

5】张琪玉,档案信息检索【M】。北京:解放军出版社,2004

(作者:廖晓霞   单位:山东广播电视台)

责任编辑:网站管理员

版权所有:山东省档案局(馆) 鲁ICP备06011360号
地址:济南市经十东路11619号 邮编:250014 电话:0531-67988012 68609141(查档) 邮箱:sdsdaj@126.com
技术支持:山东旗帜软件股份有限公司

Produced By CMS 网站群内容管理系统 publishdate:2016/03/25 17:28:01