基于互联网+云图书馆信息系统的设计与实现
2016-09-03张国祥舒玉坤
张国祥,舒玉坤
1.湖北师范大学 物理与电子科学学院,湖北 黄石 435002;2.湖北师范大学 数学与统计学院,湖北 黄石 435002)
基于互联网+云图书馆信息系统的设计与实现
张国祥1,舒玉坤2
1.湖北师范大学 物理与电子科学学院,湖北 黄石435002;2.湖北师范大学 数学与统计学院,湖北 黄石435002)
针对云计算的特点,通过对用户需求进行分析,提出了云图书馆的五层模型,并通过Android平台,以JAVA编程,调用JDBC驱动SQL Server数据库,设计并实现了云图书馆信息系统(CLMIS),实现了资源推介、馆藏查询、我的书馆、数字资源等功能,使任何用户能够在任何时候、任何地点获得任何图书馆拥有的任何信息资源,从而,提供无所不在的以用户为中心的开放式、深层次的知识服务,为互联网+移动图书馆的发展起到一定的促进作用。
Android;JAVA;云计算;数字图书馆
0 引言
国务院关于积极推进“互联网+”行动的指导意见指出,“互联网+”是把互联网的创新成果与经济社会各领域深度融合,推动技术进步、效率提升和组织变革,提升实体经济创新力和生产力,形成更广泛的以互联网为基础设施和创新要素的经济社会发展新形态。随着大数据时代的到来,图书馆文献信息资源共享的内容与形式发生了巨大的变化,且逐步改变用户获取信息的习惯,纵观图书馆的发展,文献资源共享出现过以下几种形式: 图书馆合作、合作馆藏发展、图书馆网络、图书馆联盟、数字图书馆联盟等[1]。尤其是图书馆联盟成了高校文献信息资源共享的主要组织形式,它从单一的功能、有限的范围、松散的组织形式,发展为正式的、相对稳定的、图书馆协作组织,并将从边缘的、有限的资源共享发展成为集成的、系统的、正式的资源共享,从区域合作走向国际化,超级联盟也是指日可待;同时,随着网络技术的飞速发展,文献信息资源共享的形式也从过去的物理实体转向电子资源,“数字时代资源共享的形式是图书馆电子联盟”,数字图书馆联盟赋予馆际互借、文献传递服务以崭新的内容,并催生数字图书馆一步一步走向成熟。
云计算的出现拓展了数字图书馆的发展空间,数字图书馆正从“以资源为中心”、“以服务为中心”到“以用户为中心”的演变,我国早已提出了CALIS基于云计算的发展目标,并构建数字图书馆云服务平台的模型[2]。图书馆与云计算的深度融合将成为必然趋势,研究和开发云图书馆信息系统(CLMIS)势在必行。
1 CLMIS需求分析
数字图书馆在经历了互联网、WEB、网格和WEB2.0后,进入了云计算时代,在此环境下,用户的需求发生了新的变化,具有开放性、专业性、动态性、集成性的特点,在云计算环境下,图书馆除了传统的读者外,还包括各种利用网络终端上网的读者用户,“图书馆是一个生长着的有机体”,作为一种机构的图书馆就是一个生长着的有机体,图书馆正是由藏书、读者和馆员三个生长着的有机部分构成的结合体[3]。因此,研发CLMIS在面向用户需求和图书馆管理时,应综合考虑以下几个方面的内容:资源推介、馆藏查询、我的书馆、数字资源等功能模块,如图1所示。
2 CLMIS需求分析
构建CLMIS平台,将主要采取集群技术、虚拟化技术、分布式技术来进行数据和资源的调度与整合,“后数字图书馆的未来”提出并定位于“泛在知识环境”,旨在创建一个人类共用的知识环境,提供无所不在、触手可及的移动信息服务;5A模式图书馆的理想是任何用户在任何时候、任何地点均可以获得任何图书馆拥有的任何信息资源。两者意在突破时域、空域的限制,以用户为中心,提供无所不在的,开放式深层次的知识服务。CLMIS包括数字资源建设、存储空间、计算资源、应用系统、操作界面等。根据云计算的特点,以及用户的需求,可将CLMIS自上而下划分为用户层、应用层、管理层、数据层、物理层。
图1 CLMIS的需求模块
物理层是整个架构的基础,基础设施即服务(IaaS),也被称为硬件即服务(HaaS),它决定了CLMIS的服务及能力,提供虚拟硬件资源,既可以由第三方服务商提供,也可以是自己的云服务平台提供,它包括主机、存储器、网络等等。
数据层利用中间件技术将分散节点云数据资源进行统一调度和分配,同时,进行云数据的采集、更新、调度、分发、数据备份、安全容灾等处理。
管理层负责用户的增删、进程调度、服务质量、分布式计算集群、并行程序设计、海量数据存储、并发控制等等。
应用层提供用户登录、验证、注销、资源推介等相关服务。
用户层是CLMIS的主体,在系统中其活动主要包括登录,首次登录时要求输入密码,密码采用64位DES算法加密传送,并与云端数据库账号、密码进行比较,验证通过,则可进入系统,执行相关的操作,否则无法得到相关的服务。
2.1系统目标
以Android系统为平台,借助于JAVA的强大功能,构建云图书馆信息系统,实现分布式资源管理、超大规模海量存储管理、智能检索管理,使广大用户随时随地得到服务,不再拘泥于时间、空间的限制[4~6]。
本系统遵循软件工程的方法,从需求分析、系统分析、概要设计、详细设计到测试等一系列的开发过程。在整个设计中采用JAVA编程,通过JDBC连接SQL Server2005数据库,实现云图书馆的资源推介、馆藏查询、我的书馆、数字资源云存储与访问[7~9]。
2.2适用范围
云图书馆信息系统客户端适用于3G、4G手机或通过WIFI上网的各种Android设备与终端。
2.3系统特点
1) 友好的操作界面,简单易用,使用户能在最短的时间内熟悉本系统的操作;
2) 不再拘泥于时间、空间的限制,只要有3G、4G、WIFI信号就可访问云端数据资源;
3) 安全性强,设置九宫格密码解锁与读者用户密码双重验证;
4) 运行稳定、速度快;
5) 智能升级。
3 CLMIS数据库设计
CLMIS数据库设计充分满足范式的要求,只有满足范式的数据库才不会发生插入(insert)、删除(delete)和更新(update)等操作异常[10]。CLMIS表的设计规范为第三范式3NF,基本特征是非主键属性只依赖于主键属性,即不存在非关键字段对任意候选关键字段的传递函数依赖。它具有以下优点:一是有良好的数据完整性限制;二是消除了冗余数据,节省了磁盘存储空间;三是对大多数事务而言,运行性能好;四是数据的可逆性好,查询或合并表时不遗漏、也不重复;五是能满足日益增长的用户需求。
CLMIS的一个表有一个主键,索引的大小与主键的长短有关,因此CLMIS主键的长短将改变索引页的大小及磁盘I/O;CLMIS外键是建立表之间的关系,CLMIS主键只能从独立的实体迁移到非独立的实体,成为后者的一个属性。索引有利于优化CLMIS性能,对可能用于查询中的Where子句的列和可能用于排序的列创建索引,可在不改变表的物理结构的情况下,直接访问特定的数据列,减少数据存取时间。
锁是并行处理的重要机制,能保持数据并发的一致性,即按事务进行处理;CLMIS利用锁,保证数据完整性。但在设计时应充分考虑如何避免长事务,减少排它锁时间,减少在事务中与用户的交互,避免批量数据同时执行,以免出现死锁[11~12]。
CLMIS查询优化规则应该满足以下要求:一是避免在Where子句中使用复杂的表达式;二是避免排序或为尽可能少的行排序,若要对大量数据排序,最好将相关数据放在临时表中,用简单的键(列)排序;三是利用临时数据库,在查询多表可以建临时表(索引)以减少I/O;四是避免表内的相关子查询。CLMIS所需的数据库实体主要有读者信息实体、电子图书信息实体、图书管理员信息实体、数字资源信息实体等。以数字资源信息实体为例,主要包括视频公开课、动漫、教育类的电影、电视、音乐、纪录片等。其用例模型如图2所示。
图2 数字资源用例图
视频公开课的类图如图3所示,根据此类图即可得到对应的表。
4 CLMIS的实现
本系统由多个子模块组成,限于篇幅,只介绍其中几个模块的实现过程。
4.1用户登录子模块的实现
为确保系统的安全,可以设置图形密码解锁,如果已经设置了九宫格图形密码,则此时需要触摸图形密码解锁,九宫格图形密码解锁成功后,接下来输入个人的图书证号与密码,密码正确方可进入系统,否则,退出。如果累计两次输入个人的图书证号与密码正确,则将此密码与账号记录,以后可免去此项操作,不再提示输入图书证号与密码了,从而大大提高了进入系统的效率。
图3 视频公开课实体类图
4.2我的书馆子模块的实现
我的书馆包括“TXT悦读吧”和“PDF悦读吧”,可打开本地或云端的TXT文档或PDF文档,阅读该电子图书。以“TXT悦读吧”为例,用户可以可从云服务器下载TXT电子书,也可导入SD卡的TXT电子书,然后打开阅读, 如图4所示。在阅读过程中,用户可随时根据自己的习惯修改字体的大小、屏幕的亮度、还可根据自己的需要添加标签,方便再次阅读时快速从上次停止处阅读,当然,也可以删除指定的书签或全部书签,用户还可以通过跳转在页面中快速定位到指定的页面[13]。朗读功能提供男、女声多样化音库,并继承了科大讯飞的优良音质,用户可根据需要选择最适合的语音风格,适应不同应用场景,增强表现力,语音合成效果更自然,能自动识别并表现出合成文本中包含的疑问、感叹句式,合成效果更富表现力。智能文本分析与预处理通过对分词和多音字、特殊符号、韵律短语、未登录词(如地名、人名)等进行分析、处理得十分准确;数字数值朗读更加准确、节奏感更强、发音准确、清晰、饱满。使用时,当然,用户还可以点击"设置"按钮,对音色、音调、语速、音量根据自己的要求重新设置。
为了实现仿真的翻页效果,在翻页的过程中要求看到下一页的内容,在翻页之前须准备三张页面,一张是当前页(mCurPageBitmap),另一张是下一页(mNextPageBitmap),此外,还有书页翻起来后的背面区域页(mBackPageBitmap)。CLMIS利用贝塞尔曲线,在面板上设置锚点,根据锚点的路径和描绘的先后顺序,产生直线或者是曲线的效果。在曲线段上,每个选中的锚点显示一条或两条方向线,方向线以方向点结束,方向线和方向点的位置确定曲线段的大小和形状,移动这些元素将改变路径中曲线的形状。
对于点P0、P1、…、Pn,其n阶贝塞尔曲线为:
当n=2:
B(t)=(1-t)2P0+2t(1-t)P1+t2P2,t∈[0,1]
递归用Bp0p1Lpn表示由点P0,P1,L,Pn所决定的贝塞尔曲线,则
B(t)=Bp0p1Lpn(t)=(1-t)Bp0p1Lpn-1(t)+tBp1p2Lpn(t)
n阶的贝塞尔曲线为n-1阶贝塞尔曲线之间的插值[14]。
点Pi为贝塞尔曲线的控制点,多边形为有线的贝塞尔点连接而成,起始于P0并以Pn终止,为贝塞尔多边形,定义:
private int mCornerX = 1; //拖拽点对应的页脚
private int mCornerY = 1;
PointF mTouch = new PointF(); //拖拽点
PointF mBezierStart1 = new PointF(); //贝塞尔曲线起始点
PointF mBezierControl1 = new PointF();//贝塞尔曲线控制点
PointF mBeziervertex1 = new PointF(); //贝塞尔曲线顶点
PointF mBezierEnd1 = new PointF(); //贝塞尔曲线结束点
直线P1P2和直线P3P4的交点坐标(x,y):
a1=(P2·y-P1·y)/(P2·x-P1·x);
b1=((P1·x*P2·y)-(P2·x*P1·y))/(P1x-P2·x)
a2=(P4·y-P3·y)/(P4·x-P3·x);
b2=((P3·x*P4·y)-(P4·x*P3·y))/(P3·x-P4·x)
x=(b2-b1)/(a1-a2)
y=a1*x+b1
拖拽点对应的拖拽脚(x,y):
如果x不大于屏幕宽度的一半, 则mCornerX 为0,否则mCornerX为屏幕宽度;如果y不大于屏幕高度的一半, 则mCornerY 为0, 否则mCornerX为屏幕高度。
翻页的过程就是对这三张页面的剪切与组合的过程,调用贝塞尔曲线的方法,通过Path类里面的quadTo(x1, y1, x2, y2) 真实的翻页效果就出来了。
4.3数字资源子模块的实现
数字资源子模块调用了Android MediaPlayer,MediaPlayer在底层是基于OpenCore的库libopencoreplayer.so,为了构建MediaPlayer,上层还包含了进程间通讯等内容,进程间通讯的基础是Android基本库中的Binder机制。在各个库中,libmedia.so位于核心的位置,它对上层提供的接口是MediaPlayer类,libmedia_jni.so通过调用 MediaPlayer类提供对JAVA的接口[4~6]。数字资源子模块允许访问云端数字资源,也可遍历本地数字资源,支持MPEG-1(mpg、dat、mp3)、MPEG-4(avi、asf、wmv)、REAL(rm、rmvb)、MKV等众多主流媒体,支持亮度、进度、声音的拖放等。
图4 TXT悦读吧
5 结 语
通过对云图书馆信息系统的关键技术、需求分析、系统架构、系统目标、数据库和功能模块进行科学的分析,设计并实现了一个界面友好、操作方便、安全稳定、功能齐全、智能升级的数字图书馆。它具有以下特点:利用云计算技术,解决了现有图书馆文献资源共建、共享不足的问题;开放式Android系统,与平台无关的JAVA开发语言,使本系统具有很好的移植性;面向读者,以用户为中心,将现代信息技术与图书馆深度融合,提供了一个无所不在的云图书馆电子联盟,最大程序满足读者对文献信息资源的更高要求。CLMIS V1.0已注册中华人民共和国计算机软件著作权(登记号:2014SR080828),经过近一年的试用,用户反映良好。
[1]刘兹恒.国外高等教育文献信息资源共享的发展趋势[J].中国教育网络,2014,107 (4):72~75.
[2]王文清,陈凌.CALIS数字图书馆云服务平台模型[J].大学图书馆学报,2009,23 (4):13~18.
[3]阮冈纳赞.图书馆学五定律[M]. 夏云,译. 北京:书目文献出版社, 1988.
[4]James Steele.Android开发秘籍[M]. 李青,王瑜,译. 北京: 人民邮电出版社,2011.
[5]Wei-Meng Lee.Android4编程入门经典[M]. 何晨光,李洪刚,译. 北京:清华大学出版社,2012.
[6]Sayed Y,Hashimi,Satya Komatineni.精通Android2[M]. 杨越,译. 北京:人民邮电出版社, 2010.
[7]王立福. 软件工程(第二版)[M]. 北京:北京大学出版社, 2002.
[8]明日科技. Java从入门到精通(第3版) [M]. 北京: 清华大学出版社, 2012.
[9]舒玉坤,张国祥. 云图书馆信息系统模型的构建[J]. 图书情报工作,2014, 增刊 (2): 171~176.
[10]萨师煊, 王珊. 数据库系统概论[M].北京:高等教育出版社,1991.
[11]张国祥. 一个由多项自由软件构成的动态网站的设计与实现 [J].计算机应用与软件,2004,21 (12): 108~110.
[12]张国祥. 基于Client、Server结构的远程电脑考勤系统[J].计算机工程与应用,2002,38 (22): 235~238.
[13]吴亚峰,苏亚光. Android应用案例开发大全[M].北京:人民邮电出版社, 2011.
[14]潘云鹤.计算机图形学原理、方法及应用[M].北京:高等教育出版社, 2001.
Design and implementation of cloud library information system based on the internet plus
ZHANG Guo-xiang1,SHU Yu-kun2
(1.College of Physics and Electronic Science,Hubei Normal University,Huangshi435002,China;2.College of Mathematics and Statistics,Hubei Normal University,Huangshi435002,China)
According to the characteristics of cloud computing and the analysis of users' needs,in this paper,five layers model of Cloud Library was put forward,and through the Android platform,using JAVA programming,calling JDBC to driver SQL Server database,the Cloud Library Information System was designed and implemented,realizing resource recommendation,library catalog search,my library,digital resources and other functions,making any user can get any information for any library in anywhere at anytime,thus providing ubiquitous,user-centered,open and deep knowledge service to promote the development of Internet plus Mobile Library.
Android;JAVA;cloud computing;digital library
2016—02—18
张国祥(1964—),男,湖北仙桃人,教授,硕士生导师,研究方向为计算机网络安全与应用研究.
G250
A
1009-2714(2016)02- 0001- 06
10.3969/j.issn.1009-2714.2016.02.001