NoSQL技术在数字资源共享平台中的应用

时间:2022-10-19 06:42:48

NoSQL技术在数字资源共享平台中的应用

摘 要 本文分析了云计算环境下现有数字资源共享平台的现状,提出了NoSQL技术的解决方案,并使用MongoDB来替代传统的关系型数据库进行数据库的设计。在对系统需求分析的基础上,介绍了系统部分关键功能的实现,并通过对基本插入和查询处理的测试,比较了MongoDB和 MySQL两种数据库在性能上的差别。

【关键词】云计算 NoSQL技术 MongoDB MySQL

1 云计算环境下数据管理技术存在的问题

网络教学作为一种重要的教学改革手段,在高校教学改革中越来越受到重视。随着教学工作的不断改进,各种数字化的教学资源出现在网络课件、网络实验平台、课程教学网站、数字媒体资源系统中,它们为学生的自主学习提供巨大的支持和帮助。随着云计算技术的广泛使用,用户需要通过如计算机、笔记本、手机等多种不同的手段来访问数字化的教学资源,加上数据量的增长,现有的系统暴露出了一些问题:

1.1 系统扩展问题

现有系统的数据存储层大多建立在诸如MySQL之类的关系型数据库上。由于关系型数据库在设计时需要满足一致性和可用性,所以它很难实现系统的水平扩展,这使得关系型数据库难以满足云计算环境中数据存储和管理的要求。

1.2 数据存储问题

现有系统数据采用关系模式进行建模。关系模式下数据之间的关联关系对查询的高效性存在着一定的制约,特别是关系模式数据库对多媒体信息的处理能力比较弱。当数据量快速增长是,难以满足数据的更新和查询性能上的需求。

1.3 系统可靠性问题

现有系统的数据主要存储单个服务器上。数据的备份、恢复和管理工作往往需要人工进行干预。当服务器出现故障时,造成数据的丢失或损坏的几率较大。

2 基于NOSQL技术的系统特征

NOSQL是非关系型数据库的统称,它不使用SQL语言作为基本的询语言。此外,NoSQL中的数据存储没有表结构,具有强大的水平扩展性。数字化教学资源一般包括文字、图片、音频、视频等形式,在实现资源的浏览和查询时并没有复杂的多表连接操作。NoSQL系统通常能支持很好的水平扩展性,当数据增长到一定规模时,可以通过简单的添加硬件或服务节点的方式来对系统进行扩展,这弥补了关系型数据库在扩展性上的不足。特别是NoSQL采用大规模集群的方式进行工作,系统可以运行在廉价的PC机上,并且允许单个或多个节点的故障,NoSQL系统可以使用复制的功能来实现数据的冗余和系统的容灾。由于NoSQL存在以上特性,因此它更适用于云计算环境下的数据管理。

3 NOSQL数据管理技术在数字资源共享平台中的应用

3.1 需求分析

设计一个云计算环境下的数字资源共享平台,将各种数字媒体资源共享给不同的用户,为学生的学习提供足够的帮助,为教师的授课提供支持,为企业与学校的合作提供渠道。数字资源共享平台下对数字资源的管理需要提供以下功能模块:资源浏览、资源检索、资源上传、资源下载、资源增删等。平台面向普通学生、教师、系统管理员、企业导师4种不同的用户,系统用例图如图1所示。

3.2 MongoDB数据库建模

MongoDB是一种面向文档的NoSQL数据库,它具有高可用性和高扩展性。针对现有资源管理系统存在的问题,使用MongoDB来替代传统的关系型数据库进行数据库的设计,能够有效地解决上述问题,并且为系统迁移到云计算环境奠定了基础。

根据需求分析,数字资源共享平台中的实体主要有资源source和用户user,内嵌文档是资源类型Type和内容来源Content。资源类型主要包含文本、图片和视频。内容来源与知识点、上传对象对应,便于检索[4]。具体设计如表1所示。

表1资源集合Source描述

字段 类型 说明

S_id String 唯一id

S_name String 资源名称(索引字段)

S_Provider 引用 资源提供者

S_Time long 资源创建时间

S_Count long 资源被访问的次数

S_Content 内嵌文档 文档资源内容

3.3 关键功能的实现

在系统的各个功能模块中,资源的上传和查询功能最为重要。由于文档资源数量众多且类型不同,资源写入和查询的效率对用户体验影响较大。现将资源上传和查询功能作为关键功能来处理。

3.3.1 资源上传功能

GridFS f=getGridFS();

try{

GridFS File mongofile=f.createFile(in, source_1_1);

mongofile.put("S_id",document.getS_id());

mongofile.put("S_name",document.getS_name());

mongofile.put("S_Provider",document.getS_Provider());

mongofile.put("S_Time"Jdocument.getS_Date());

mongofile.put("S_Type",document.getS_Type());

mongofile.save();

}catch(Exception e){

e.print StackTrace();

3.3.2 资源查询功能

BasicDBObject query=new BasicObject();

query.putAll(map);

List list=new ArrayList();

list=getGridFS().find(query);

3.4 基本的插入和查询处理的测试

假定保存用户ID和某个其他的数据,并通过用户ID读取这个数据。此时,需要创建user_id和value两个字段,读取数据的时候通过user_id进行查询,取得value值。若以每次完成20000次处理为标准进行比较,MySQL分别采用InnoDB和MyISAM两种类型的数据库引擎,处理的性能如下表2所示。

表2:三种数据库类型处理性能比较

插入处理性能 查询处理性能(未使用索引) 查询处理性能(使用索引)

InnoDB 46.545858 120.249837 10.034787

MyISAM 27.768782 73.425936 13.362680

MongoDB 11.360583 109.835533 16.645584

通过比较可以发现,采用不同的两种数据库进行处理时,MongoDB插入处理的能力要高于MySQL,大约是MySQL的2~3倍。查询处理时,MongoDB和MySQL均能获得非常高的处理速度,性能相当。

4 结束语

随着云数据管理技术的不断发展,NoSQL作为一项全新的数据库技术,在数字资源共享平台的使用上能弥补传统关系型数据库的不足。基于MongoDB数据库的解决方案,为系统的扩展提供便利,为系统迁移到云计算环境奠定了基础。

参考文献

[1]胡伏湘,基于云平台的网络资源开放课程建设方法研究[J],湖南行政学院学报,2013(2):28-32.

[2]杨洋,基于云计算的网络课程资源库建设[J].电脑开发与应用,2013(1):25-28.

[3]Klye Banker[美],MongoDB in Action [M].丁雪丰,译,北京:人民邮电出版社,2012.

[4]刘一梦,基于MongoDB的云数据管理技术的研究与应用[学位论文],北京交通人学,2012:22.

[5]佐佐木达也[日],NoSQL数据库入门[M].罗勇,译,北京:人民邮电出版社,2012.

作者简介

张永瑞(1979-),男,江苏省连云港人,南京理工大学工程硕士,连云港师范高等专科学校讲师,研究方向:网络技术与多媒体技术应用。

作者单位

1.连云港师范高等专科学校数学与信息工程学院 江苏省连云港市 222006

2.连云港师范高等专科学校图文信息中心 江苏省连云港市 222006

上一篇:云计算安全保障体系的研究与探索 下一篇:智能变电站系统中的高压设备智能化实现途径研...