NoSQL在学生电子履历信息管理系统中的应用

2014-12-15 06:36苗志锋
广西教育·C版 2014年10期

【摘 要】学生电子履历建设对于学习实习、职业规划、求职晋升等方面有着重要意义。通过分析现状,从web网站分布式技术架构中引入NoSQL数据库,与关系型数据库相结合,为结构化信息、非结构化数据的存取提供一个统一数据模型接口,便于应用。

【关键词】履历 非结构化数据 NoSQL 统一数据模型

【中图分类号】G 【文献标识码】A

【文章编号】0450-9889(2014)10C-0187-03

构建现代职业教育体系,推动进入终身教育社会,其中学生履历管理是保障条件之一。在学生经历普通教育、职业教育、继续教育的过程中,会产生大量有价值的教育培训、职业经历、工作业绩等信息,需要保存在履历中,用于求学、实习、求职、晋升等证明。

履历信息具有“碎片性”和“发展性”两个基本特性。其中“碎片”是信息具有零碎、繁杂、多样的横向特性。履历中使用类别项进行分类,主要分为:个人信息,专业信息,课程成绩,职业操行,培训认证,奖惩,实践创新与其他。“发展性”是指随着学生成长成才,发展进步,履历信息会逐步变迁,级别晋升,证书升级等。过程性信息需要保留,方便统计职业发展轨迹,研究成才规律。

一、当前研究现状

目前对履历信息管理研究集中在人力资源管理和档案管理。如陈哲娟研究了履历业绩评价在领导干部选拔任用的作用、业绩评价指标等。刘大卫论证履历深度分析法在高管人员甄选中的作用,并指出其使用的局限性。田瑞强等从履历研究的发展、数据源、分析方法及存在缺陷等方面进行了阐述,同时指出了履历研究的发展趋势,从理论上对科技人员履历及人才流失问题进行了分析探讨。同时,履历被引入产品管理范畴,对产品履历的研究也逐步成为热点。郝玲、陈勇等研究农情履历、现代信息采集手段在现代精准农业、农业信息管理中的应用。丁伟将电子履历应用于军队车辆装备管理,提高了车辆装备管理的效率和科学化水平。

现代履历信息管理系统信息存储环节,经历了从纸质履历到Excel表格文档,正逐步向关系型数据库迁移的阶段。在当前工程实践中,信息数据源主要有以下四种方式。

(一)文件系统方式

以文件格式作为数据源,管理传感器采集设备上传的非结构化数据,存放于服务器文件系统中。

优点是存取速度快,操作方便。

缺点是随着数据规模快速增长,目录结构混乱,难以管理;无法与应用层权限管理协同使用,存在安全隐患;数据难于迁移。

(二)关系型数据库方式

将非结构数据直接存放到数据库表的二进制字段中。优点是有较好的安全性,实现数据存取操作的一致性。缺点是数据库IO是整个系统的性能瓶颈,使得数据表规模快速增加,进一步降低性能。

(三)专用商业数据库

应用范围较窄,且代价昂贵。

(四)云计算平台

公用云计算平台提供了大数据解决方案,但由于行业特殊性,公有云的安全性还需要评估。

本文在文件、关系型数据库基础上,引入NoSQL数据库,综合使用三种数据源,提供一致的数据模型接口,实现结构化数据和非结构化数据同步管理,按照时间标签阶段性保存履历更新,从而优化履历的管理,提高信息共享与复用。

研究农情履历超文本信息规范存储管理的关键技术,构建一致的模型层,引入元数据、时间标签、NoSQL等技术,构建履历信息的存储系统原型。

二、系统设计

(一)系统功能设计

系统功能模块:学生个人信息管理;教学培训信息管理,包括课程成绩、考勤、培训认证活动管理;奖惩信息管理;实习实践活动管理;信息检索、排序、统计等。

(二)系统框架分析

系统按照MVC模式进行分层设计,系统构架如图1所示。具体功能如下:

1.视图层——提供用户UI,用于接收来自智能传感器上传的影像、图片或其它非结构化数据,记录传感器节点信息,并标记文件流的元数据。

2.控制器层——根据访问路径(如url)得到用户请求意图,处理请求,并调用Model层完成数据流的存储或读取。

3.Model层——根据Controller要求,完成具体的数据库操作。

4.数据源系统——由关系型数据库、非关系型数据库及扩展文件系统三部分组成。其中结构化信息和非结构化数据元信息存储在关系型数据库中,非结构化数据存放到非关系型数据库NoSQL及私有云计算平台上。

5.控制采集中心——对系统进行管理与维护,能实时监测系统的运行状态,查看监测对象的履历信息,进行分析与决策,并控制定时与队列模块运行管理,及时更新数据信息。

图1

(三)系统选型

表1 软件选型

软件名称 作用

Ubuntu 服务器操作系统

Python 程序语言,用于原型开发

Flask Web微框架

MongoDB NoSQL数据库

Pymongo python的MongoDB驱动

Pygridfs Python的GridFS驱动

Mysqldb Python的MySQL驱动

SQLAlchemy Python的ORM套件

数据源综合采用关系型数据库、NoSQL数据库及分布式文件系统,用于存取、检索学生电子履历信息。为增加可靠性,降低成本,在软件选型中,优先选择成熟、稳定的开源软件产品构建。

MongoDB 作为NoSQL 开源数据库的一种主流分布式数据库,基于对象/文档形式存储,提供BSON(Binary JSON) 数据结构形式存储,有便利的查询索引方式,提供分布式文件系统GridFS 来进行存储管理,使得定制信息变得灵活,扩展数据变得高效。

三、关键原型实现

(一)履历信息采集元数据字段约定

为便于生成索引,我们需要对文件命名进行约定。“类别”用两位数字表示采集信息所属的类别;“节点”是指个人、组织或机构,一般值为自己、院系办公室、授予机构等;“证明者”对于不同类别含义不同,如果是资格证,则表示授予单位,如果是校内活动证明等,则表示院内机构负责人;“审核者”是审核材料有效,允许上传的院系、教学团队负责人;“当前最新”是当有多项同类材料中,时间最新或级别最高的材料为当前,否则为历史;“时间”是指材料获取时间,为方便存储、检索需要,转化为整型。调用程序语言的uuid()生成随机唯一值,保留32bit。此外还有预留字段,用于保存不常用的信息属性。

表2 采集信息元数据约定字段示例

其中,上表中各项值作为结构化数据,在数据采集上传、协议解析后,按照协议生成元数据,及时存入关系型数据库MySQL数据表中。同时各项值用于生成非结构化数据文件名。将其或ObjectId值更新到MySQL数据表的履历表对应字段中。从而完成结构化数据和非结构化数据同时添加到数据源中。

(二)信息共享利用与导出归档

数字化信息需要及时归档。通过归档整理,把数据库动态数据转化生成为静态、只读属性的文件形式存放,供后续者查阅。由于网页是超文本信息的天然组织者,因此优先选择静态页面方式归档信息,批量结构化数据可以导出为Excel,政策文件、结果或结论性的信息按照模板格式生成PDF文档。

(三)一致数据模型实现

SQLAlchemy是Python实现的数据队形映射模型包,主要实现python对SQL数据库的跨平台操作。基于SQLAlchemy模型,使用pyMongo和mysqld驱动程序,对农情信息建立统一数据模型。而不是直接使用SQL与原生执行命令对数据进行管理。

限于篇幅,只给出GridFS上传关键代码示例:

// 导入必需的包

from sqlalchemy.ext.declarative

import declarative_base

from pymongo import Connection

from gridfs import *

#文件处理系统

class GFS:

#定义connection and fs

#初始化

def __init__(self):

#获得单件对象

@staticmethod

def getInstance(): pass

Def put(self,name,**args):

try:

data= StringIO.StringIO()

image.save(data,format)

gf = GFS.fs.open(name,"w")

gf.content_type = "%s/%s" % (mime,format)

gf.write(data.getvalue())

finally:

Base = declarative_base()

class HypertextModel(Base):

// 使用SQLAlchemy声明字段属性

__tablename__ = 'picking'

id = Column(Integer, primary_key=True)

// 对照表2字段,依次声明

//初始化方法,

def __init__(self, .....):

def write(data=[], params=[]):

dstfile = None

// 保存元素据

// 确定文件名

for x in data:

dstfile = dstfile + “_”+x

Session.add(HypertextMode(data))

Params[0] = dstfile

// 将文件上传到GridFS

GFS.put(params)

四、结果分析

经验证,MongoDB在百万条数据,单条数据低于5K时,性能低于纯文件系统50%左右。当单条数据逐渐增大时,两者差距逐渐减小。当数据规模处于大尺寸,如高清图片、视频时,MongoDB的性能稳定,并可轻松扩展成数据库集群。

随着新一代信息技术的发展,物联网、云计算等技术在电子履历各个环节中应用日趋深入。学生电子履历信息采集的数据具有横向“碎片化”,纵向发展性等特征明显,信息过载症状显现。通过引入MongoDB和MySQL混合数据库技术,结合分布式文件系统,构建统一数据模型接口,充分利用两者优势,实现了数据的有序、高效、安全地存储,有效降低成本,提高了项目效益。在后续的研究中,对数据格式、传输协议等规范,数据共享技术需进一步的研究。

【参考文献】

[1]陈哲娟. 履历业绩评价方法在领导干部竞争性选拔中的应用[J].中国人力资源开发,2012(3)

[2]田瑞强,姚长青,袁军鹏,等.基于科研履历的科技人才流动研究进展[J].图书与情报,2013(5)

[3]徐栋.基于MongoDB的SaaS数据层多租户关键技术研究与实现[D].上海:华东理工大学,2012

[4]潘凡. 从MySQL到MongoDB[J].程序员,2010 (6)

[5]王光磊. MongoDB数据库的应用研究和方案优化[J].中国信息科技,2011(20)

【基金项目】2012年度广西高等教育教学改革工程一般A类项目(2012JGA336)

【作者简介】苗志锋(1979- ),男,河北邯郸人,硕士,广西水利电力职业技术学院讲师,研究方向:形式化方法,网络分布式系统,职业教育。