浅析NoSQL技术与数据库教学的关系

2013-02-20 05:37娄颖
计算机时代 2013年2期
关键词:关系数据库教学

娄颖

摘 要: 关系数据库在数据库领域长期占有主导地位,一直是高等院校数据库课程的主要内容。而随着Web2.0的兴起,在海量数据的环境下,NoSQL(非关系型的数据库)技术得到了广泛的应用,它对数据库技术的发展产生了强烈的影响,同时也对当前数据库课程教学产生了深远的影响。探讨了NoSQL技术及其主要特点,分析了NoSQL技术对数据库教学的挑战,将关系数据库和NoSQL进行对比,指明了使用NoSQL的原因,并提出有关NoSQL的启发式教学方法。

关键词: 关系数据库; NoSQL; 海量数据; 教学

中图分类号:TP311.13 文献标志码:A 文章编号:1006-8228(2013)02-47-03

Analyzing the relationship between NoSQL and teaching database

Lou Ying

(Electronic Information Engineering College, Henan University of Science and Technology, Luoyang, Henan 471003, China)

Abstract: Because of the dominant position in database, the relational database has been always the main content in database curriculum of university. With the rise of Web2.0, in the huge data environment, NoSQL (not relational database) technology is used widely and the current database course teaching has been impacted deeply. NoSQL technology is introduced in this paper and then the challenges of NoSQL database technology to teaching database are analyzed. Finally, the teaching methods of database course are proposed.

Key words: relational database; NoSQL; massive data; teaching

0 引言

NoSQL指的是非关系型的数据库。随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的社交网络类型的Web2.0纯动态网站已经显得力不从心,暴露出了很多难以克服的问题。例如:关系数据库为了降低数据冗余,保证数据约束性,在数据查询时不得不使用多个数据表之间的连接操作,这极大地降低了查询效率,不能够满足当前Internet的高实时性的要求。而非关系型数据库对并发的大规模访问有着效率上的优势,因此,非关系数据库是在具体应用背景下得到了迅速的发展。

其实,NoSQL概念最早出现在1998年,当时的含义是反SQL技术革命运动,但并未引起太多的关注。直到2009年,NoSQL概念被来自Rackspace的Eric Evans再次提出,这时的NoSQL已经不是单纯的反SQL运动,指的主要是非关系型的分布式数据库,并且不支持原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)的数据库设计模式[1]。在亚特兰大举行的有关NoSQL的讨论会上,学者给出了NoSQL较为普遍的解释,即“非关系型的”。并且指出Key-Value存储和文档数据库是NoSQL的主要特点,本文认为NoSQL是一项新的与传统关系数据库有显著区别的新技术。

1 NoSQL的主要特点

1.1 Key-Value存储

Key-Value本身是一种数据结构的模式,其基本思想为:一个主键下有相应的值,在实现上可以通过哈希表或B树等不同的数据结构完成。Key-Value存储是以键值对的数据模型存储数据,并能提供持久化分布式存储系统,查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询机制和数据同步等功能[2]。

现有非关系型数据库采用不同的方式实现了Key-Value存储,并且拥有各自的优缺点。然而,性能优良的Key-Value存储需要满足下列条件:高可用性,即在Key-Value存储模式下可以提供不间断的服务;可扩展性,海量数据的处理要求存储模式能够具有可扩展性;故障恢复,要求该存储模式下能够对故障自动感知并能自动恢复。

在具体的实现上,多数非关系数据库采用单文件进行存储,虽然单个文件操作具有一定的方便性,但在数据量不断增大时,会遇到存储瓶颈。为了提高响应速度,Key-Value存储一般只支持数据的添加操作,而不是支持数据更新操作。为了实现故障可恢复,需要对数据进行备份,数据备份操作即从主端向从端的数据复制,应用系统的性能在备份过程中会受到影响,备份策略决定了影响程度。然而,数据可靠性和性能是一对平衡关系,越是可靠性高的数据保障,其性能相对会下降。

1.2 最终一致性

一致性是关系数据库中主要特点[3],关系数据库为了保证一致性需要使用约束条件,从而影响了数据的读写效率。而非关系数据库只要求保证数据的最终一致性,基本思想是:在数据的读写过程中,对一致性的要求是松散的,而最终完成操作后的结果是一致的。

假设A为对数据库的写操作,而B和C都代表对数据库的读操作,且A,B和C之间是相互独立的。当执行了A,即向数据库中写入数据,若数据库系统能够保证随后B和C的读操作都能够读到最新的数据,则说明该数据库系统具有强一致性,关系数据库能够保证强一致性;当执行了A,B和C不能够立即读到最新的数据,而是需要经过一段时间才能获取更新的数据,则说明该数据库系统具备弱一致性,这段时间也叫做不一致性时间窗口;最终一致性属于弱一致性的特例,当执行了A,在该数据没有再被更新的条件下,B和C最终都读取到最新的数据,这就是最终一致性。

最终一致性是在高数据量(十几亿条记录、数TB数据)和高访问量(数千TPS、数万QPS)需求下的选择,在缺乏种种约束的情况下,最终一致性在一致性要求不高的应用场景下能够极大提高数据访问效率。

1.3 可扩展

这里的扩展性主要指的是水平扩展性,应用无关和容错性。关系数据通常通过读写分离,更换高性能的服务器来提高性能[4],而在海量数据的环境下,这些方法仍然无法满足某些应用需求。非关系数据库具有水平扩展性的特点。

尽管现有的非关系型数据库采用不同的技术实现可扩展性,但其基本的目标是:在应用不间断的情况下,增加或删除数据节点,实现水平扩展;利用分布式计算的技术,通过节点之间的通讯,实现数据分布式处理,满足海量数据的读写性能要求。

2 NoSQL技术对数据库教学的影响

长期以来,普通高校计算机专业的数据库课程以关系数据库为讲授内容。作为当前数据库领域不可忽视的力量,NoSQL技术已经引起了许多高校的关注,它给传统的数据库教学带来了以下几个方面的挑战:

挑战一,教师的认知和讲授能力。长期以来,在讲授数据库课程时,往往认为关系数据库占主导和统治地位,忽略了对其他数据库的研究。当前高校与市场的联系远远不如想象的那样紧密,因此,当前高校教师面对着对NoSQL技术的认知能力,这里不仅包含对技术的掌握和熟悉,而更重要的是对该新兴技术的认可。

在授课的过程中,如何把握NoSQL技术和关系数据库的之间的关系,巧妙地融合两种技术,使学生有个全面和清晰的认识是数据库课程教师的重要工作之一。

挑战二,学生的接受水平。对于刚刚接触专业课程的学生,同时掌握两种具有对立性质的技术也是学生学习过程中的一个难点。

挑战三,学校的实验环境。实验一直是数据库课程教学的重要环节,现有大多数学校的实验条件和环境能够基本满足关系数据库技术的教学需要,对于NoSQL技术所在大规模数据处理下的优势,如何构建实验环境也是教学的一个重要挑战。

为了应对这些挑战,我们至少需要弄清楚两个方面的问题:①为什么要使用NoSQL;②NoSQL技术和关系数据库的联系和区别。

2.1 为什么要使用NoSQL技术

NoSQL技术不是实验室的产物,而是以实际需求推动的,这里的推动主要指的是互联网的发展在推动。Web2.0时代,用户每天使用网络的同时也在制造网络的内容。例如:用户在浏览微博网站的同时也会发布自己的信息。这种特点改变了对网站后台数据库的访问方式,从原先频繁的读操作变成了频繁的读写操作,这时,往往要达到每秒上万次读写请求,关系数据库还能同时勉强应付上万次的SQL查询,但是要同时应付上万次的SQL写数据请求,关系数据库系统就已经无法承受了,对数据读写操作需求的变化推动了新技术的发展。

社交网络是Web2.0的一个重要产物,近年来,社交网络用户的规模日渐增长,2011年8月,Facebook的活跃用户已经接近7亿,用户对Web的要求也逐步的提高,缩短用户操作的响应时间已成为提高网络质量的基本要求。关系数据库在保证数据的一致性方面有优势,而在大规模的用户操作下,严格的一致性对现实的需求来说并不是必须的,高效的数据响应才是最重要的,NoSQL在保证最终一致性的情况下能够实现高效的数据访问。

对于一个Web应用系统,在用户量和访问量不断增加的时候,该应用系统需要增加新的服务节点来提高性能和负载能力,在增加服务节点时,可以通过增加硬件设施在满足Web服务器和应用服务器的需求,而对于数据服务器,关系数据库模式下很难进行类似增加节点的水平扩展。因此,在关系数据库的模式下,进行节点增加时需要停机维护和数据迁移,这对于很多需要提供24小时不间断服务的网站来说是不方便的。可以看出,关系数据库无法满足应用的可扩展性和高可用性,而NoSQL技术具有水平扩展性的特点,可满足需求。

从上述分析可知,在互联网环境下处理海量数据时,关系数据库无法满足实际需求。一方面,关系数据库技术中的种种约束(事务管理、完整性约束等)对实际需求来说是没有必要的;另一方面,这种约束的保证影响了数据处理性能。在这种情况下,NoSQL技术就自然而然地成为了人们的选择并取得了快速的发展。

2.2 NoSQL与关系数据库的对比

通过上述分析可以看出,NoSQL数据库和关系数据库是根本不同的,两种数据库分别适应不同的需求。

关系数据库是以表来存储数据的,表的组织形式严格,表中的每一行代表一条数据记录,每一列代表特定方面的信息。在设计好表结构(表的列信息)后,修改的代价巨大,数据库表之间存在着联系和某种约束关系。所设计的数据操作(查询,添加,修改,删除)通常涉及对单张表和多个表,在对多个表的操作时需要使用到表之间定义的范式,消除数据冗余和保证数据一致性是关系数据库的基本要求。长期以来,关系数据库一直以简洁、规范和灵活占据着数据库领域的统治地位,现有关系数据库的产品主要有SQL Server,DB2,Oracle,MySqL等,这些产品都属于关系数据库管理系统,虽然功能有所不同,但基本思想都属于关系数据库的范畴。正是由于关系数据库的主导地位,在高校计算机学科数据库教学中,关系数据库也一直是该课程讲授的重点内容。

NoSQL数据主要有三种主流的数据模型,除了上面介绍的Key-Value以外,还有列式和文档两种。列式也主要使用Table这样的模型,但是它并不支持关系数据库中的多表连接操作,其主要特点是在存储数据时,主要围绕着“列”,而不是像关系型数据库那样根据“行”进行存储;在结构上,文档模式与Key-Value模式想象,不同的是,这里的Value对应的往往是一个文档。在查询时,NoSQL数据库往往只支持主键或者是单个列查询,不支持关系数据库多表复杂查询。在写操作时,NoSQL数据库对数据一致的要求并不是那么高。现有的NoSQL产品很多,主要有Cassandra,HBase,Memcached,Voldemort等。这些数据库的侧重点不同,虽然都具备NoSQL的特点,但一些也兼具关系数据库的功能。其中,许多产品是开源的,开源虽然能够使更多用户采用,但其可靠性和后期的维护也受到了用户的质疑。

关系数据库是否能被NoSQL数据库取代呢?答案是否定的。虽然关系数据库在处理Web2.0数据时明显遇到了瓶颈,但不代表它就能被NoSQL技术完全取代。不同的应用背景可有不同的选择,例如,在金融和电信领域,用户无法接受数据的不一致,因此,关系数据库的一致性对数据处理来说就尤为重要。而对一些非核心数据的处理,日志的管理和外部数据的集成来说,NoSQL技术就更能胜任。因此,应该根据实际的需求选择NoSQL技术或者是关系数据库。NoSQL技术是在新的需求下对关系数据库的补充和扩展。这就需要将NoSQL技术和关系数据库进行结合使用,各取所长,需要使用关系特性的时候使用关系数据库,需要使用NoSQL特性的时候使用NoSQL数据库。

2.3 采用启发式教学法

启发式教学的基本思想是:教师在根据教学任务和学习的客观规律,从实际出发,以启发学生的思维为核心,采用多种方式,调动学生的学习主动性和积极性,促使他们生动活泼地学习的一种教学指导思想。

由于NoSQL技术是从实际应用需求产生而来的,具备实际的推动力。因此,教师在讲授时,可以首先介绍关系数据库的基本知识,在介绍关系数据库的性能指标,例如:每秒读写数据的次数,数据处理能力的极限等概念时,再描述现实需求。从现实中,学生可以发现关系数据库的不足,当它的某些优点不是必须时,就引出了NoSQL技术。启发学生从需求出发研究技术的思想,真正做到学以致用。

3 结束语

NoSQL技术的应用已经给市场带来了巨大的影响。本文总结了NoSQL的特点,对比了NoSQL与关系数据之间的区别,提出了NoSQL技术给高校计算机教学带来的挑战。面对计算机技术高速发展的时代,高校计算机的教学模式是否能够适应当前教育的需要,在数据库教学方面,如果仍然按照固定的教学模式,将关系数据库不可动摇地位的思想传递给学生,显然是不合理的。因此,我们需要在重视理论教育的同时,研究技术发展的动态,以更客观和合理的方法讲授课程。T技术是一项发展迅速的技术,在未来的教学工作中,知识的传播已经不是高等教育的主要任务,而启发式的引导才能丰富高校的教学成果。

参考文献:

[1] Thomas, R. H. A majority consensus approach to concurrencycontrol for multiple copy databases. ACM Transactions on Database Systems,1979.4(2):180-209

[2] Chris Bunch, NavrajChohan, Chandra Krintz, JovanChohan,Jonathan Kupferman, Puneet-Lakhina, YimingLi, Yoshihide Nomura. Key-Value Data stores Comparison in App Scale. February 17, 2010 UCSB Tech Report,2010.3.

[3] 孟小峰,周龙骧,王珊.数据库技术发展趋势[J].软件学报, 2004.

[4] Andrew Pavlo, Erik Paulson, Alexander Rasin, Daniel J.Abadi,David J. DeWitt, Samuel Madden and Michael Stonebraker. A Comparison of Approaches to Large-Scale Data Analysis.

猜你喜欢
关系数据库教学
关系数据库在高炉数据采集系统中的应用
微课让高中数学教学更高效
如何让高中生物教学变得生动有趣
关系数据库技术在计算机网络设计中的应用
“自我诊断表”在高中数学教学中的应用
对外汉语教学中“想”和“要”的比较
基于索引结构的关系数据库关键词检索
一种基于数据图划分的关系数据库关键词检索方法
跨越式跳高的教学绝招
初中50米迎面接力跑教学心得