NoSQL数据库原理与应用(含实验)教学大纲(2018版)2018年10月前言一、大纲编写依据NoSQL泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。本课程系统全面地介绍NoSQL数据库系统的基本原理和实现技术,充分反映该领域的最新研究成果。主要内容包括:NoSQL数据库所用的基本原理、结构特点、重要的算法,及部分系统的实际实现技巧等。二、课程目的1、知识目标掌握NoSQL数据库系统的概念、结构、功能;掌握NoSQL数据库系统设计的原理、方法和技术;掌握NoSQL数据库的优化、可靠性、安全性等知识;掌握设计NoSQL数据库系统的方法,为学生后继课程及实践打下基础。2、能力目标(1)实践能力通过本课程的学习,努力培养学生良好的NoSQL数据库程序设计风格和严密的逻辑思维能力,提高NoSQL数据库程序设计与实现能力、创新思维和创新能力。为后续课程的学习和今后研制、开发各种计算机软件打下坚实的基础。(2)创新能力通过使用NoSQL数据库语言进行数据库程序设计,从编程能力、软件开发能力等方面,使学生具备一定的NoSQL数据库开发的能力。三、教学方法1、课堂教学(1)讲授本课程的教学内容以讲授为主,讲授的主要内容有NoSQL数据库的基本概念、基本原理、NoSQL数据库的分类、Hbase的基本原理、Hbase的基本组件、Hbase的管理与编程、MongoDB基础、MongoDB进阶、其他非关系型数据库技术。根据教学大纲的要求,突出重点和难点。(2)教师指导下的学生自学指导学生自主学习其他非关系型数据库的程序设计技术。教师通过给出一些相关的实例程序帮助学生理解和进行程序设计,并布置相应的上机习题让学生进行练习。(3)其它教学方法采用多媒体辅助教学手段,结合传统教学方法,解决好教学内容多、信息量大与学时少的矛盾;充分利用学校的图书馆的资源优势,查阅与课程相关的资料;通过布置课程设计来提高学生的综合处理问题的能力和软件开发的能力。2、课外学习作业1:课外练习。作业2:上机实验报告。四、适用对象计算机科学、软件工程及信息安全专业。五、先修课程及后续课程(或相关课程)(一)先修课程:《数据库原理》;(二)后续课程:《NoSQL数据库程序开发》六、课程性质必修。七、总课时及各章的分配授课总课时数为64学时,各章的学时具体安排如下:章节教学内容理论授课学时实验课时第一章绪论440第二章认识HBase440第三章HBase基本原理444第四章HBase管理与编程440第五章MongoDB基础4410第六章MongoDB进阶440第七章其他非关系型数据库简介220第八章NewSQL数据库220第九章NoSQL应用案例实战(综合实验)2218第十章总结220合计3232八、使用教材及主要参考书目(一)选用教材自编。(二)主要参考书目1.厄兹叙(M.TamerOzsu)/PatrickValduriez:《NoSQL数据库系统原理》(第3版),清华大学出版社,2014.5。九、考核方式及成绩评定标准1、考核内容与形式(1)知识类考核本课程采用闭卷考试形式。重点考试内容:NoSQL数据库的基本原理、Hbase的基本操作、mongodb的基本操作。(2)能力类考核利用学生平时作业、课堂提问与讨论考查学生的学习能力,理解和掌握相关知识的程度以及实际应用能力。利用课程设计考查学生的实践动手能力、软件开发能力,促进学生自主性学习和研究性学习,启迪学生的创新思维。2、课程成绩构成(1)平时成绩占百分比平时成绩(包括平时考勤、作业情况和上机实验情况)占总分40%(2)考试成绩占百分比期末考试成绩占总分60%第一章绪论第一节数据库原理理解关系型数据库的基本原理。第二节NoSQL数据库的数据管理了解NoSQL数据库的系统任务、数据处理。理解CAP理论。第三节ACID与BASE理解关系型数据的ACID原则和非关系型数据库的BASE原则。第四节NoSQL分类了解基本的NoSQL数据库分类。第二章认识HBase第一节HBase简介了解HBase的发展过程、特性。第二节HDFS原理理解HDFS的基本架构、工作原理、HDFS的分块机制和副本机制、读写特点、HDFS的特点和适用场景等。第三节HBase的组件了解HBase的基本组件及常用功能。第四节HBase的使用场景及案例重点掌握存HBase的常用场景。第三章HBase基本原理式第一节HBase数据模型重点掌握HBase的数据模型及相关概念。第二节HBase模式设计了解HBase表类型设计、复合键设计、列族定义。第三节HBase工作原理重点掌握HBase的Region定位、数据存储与读取(store,memstore,storeFile等的定义,以及读写工作流程)以及WAL机制(预写机制)。第四章HBase管理与编程第一节HBaseRegion管理重点掌握Region拆分和Region合并。第二节HBase集群管理重点掌握运维管理、数据管理、故障处理。第三节HBase编程方法重点掌握基于Java的编程方法、基于Thrift协议的编程方法、基于MapReduceNoSQL处理、结合Hive的数据处理。第五章MongoDB基础第一节文档数据库基本概念重点掌握文档、集合、数据库、数据类型等相关概念。第二节MongoDB基本操作重点掌握插入并保存文档、删除文档、更新文档等操作第三节MongoDB查询重点掌握find操作、查询条件、特定类型查询、游标。第四节索引了解索引、唯一索引、索引管理。第六章MongoDB进阶第一节核心组件了解mongodb的核心组件。第二节分片机制重点掌握分片概念、分片的工作原理、分片管理次。第三节复制重点掌握复制的目标、复制基础、实现复制集。第七章其他非关系型数据库简介第一节内存数据库了解非关系型数据库Memcache、Redis。第二节图数据库了解非关系型数据库Neo4J。第八章NewSQL数据库第一节TiDB数据库了解TiDB架构、TiDB的存储机制、TiDB的查询机制。第二节OceanBase了解OceanBase特性、OceanBase系统架构。第九章NoSQL应用案例实战(综合实验)重点掌握NoSQL的综合实验。附:《NoSQL数据库原理与应用》课程实验教学大纲课程名称:NoSQL数据库原理与应用实验学时:32适用专业:计算机科学、软件工程、信息安全课程性质:必修一、课程实验简介所有实验都是与《NoSQL数据库原理与应用》课程内容相配套的,共分为三个部分:第一部分HBase的基本实验;第二部分为mongodb的基本实验;第三部分为NoSQL的综合实验。二、教学目的“NoSQL数据库原理与应用”是计算机各专业一门重要的专业核心课,是必修的核心课程之一,是一门实践性很强的课程。在学习NoSQL数据库原理与应用的过程中,只有多阅读程序、多编写程序、多上机,才能真正掌握NoSQL数据库的方法和技巧。三、考核方式及成绩评定标准平时上机的考勤占总分的10%,课程设计占总分的10%。四、实验指导书及主要参考书1.厄兹叙(M.TamerOzsu)/PatrickValduriez:《NoSQL数据库系统原理》(第3版),清华大学出版社,2014.5。。五、实验项目实验项目一览表序号实验项目名称实验类型实验学时必做/选做实验一HBase的安装与部署演示性0选做实验二HBase的基本操作验证性4必做实验三MongoDB数据库的安装与卸载演示性0选做实验四MongoDB数据库的基本概念及数据库基本操作验证性2必做实验五MongoDB数据库的文档基本操作1验证性4必做实验六MongoDB数据库的文档基本操作2验证性4必做实验七MongoDB数据库的副本集操作演示性0选做实验八MongoDB数据库的分片技术演示性0选做实验九综合实验综合性18必做合计32实验类型:演示性、验证性、综合性、设计性、其它实验一、HBase的安装与部署(0课时)实验类型:演示性实验目的:实现HBase的安装和部署。实验内容:在linux环境下完成HBase的安装和部署工作。实验环境:实验环境:(1)OS:CentOS-6.7(2)JDK:v1.8、Hadoop:v2.7.6、Hbase:v1.2.6实验二、HBase的基本操作(4课时)实验类型:验证性实验目的:掌握HBase程序的基本使用方法,为以后的实验打下基础。实验内容:使用HBase命令完成Hbase创建数据库表及删除数据库表工作;掌握Hbase对数据库表数据的增、删、改、查等命令实验环境:实验环境:OS:CentOS-6.7JDK:v1.8、Hadoop:v2.7.6、Hbase:v1.2.6实验三、MongoDB数据库的安装与卸载(0课时)实验类型:验证性实验目的:完成完成MongoDB的安装、卸载。实验内容:在linux环境下完成mongodb的安装和卸载工作。实验环境:OS:Ubuntu16.04MongoDB:v3.6。实验四、MongoDB数据库的基本概念及数据库基本操作(4课时)实验类型:验证性实验目的:掌握mongodb的基本用法,为后面的复杂的程序设计打下基础。实验内容:使用mongodb命令完成数据库的创建和删除工作。实验环境:OS:Ubuntu16.04MongoDB:v3.6fromI9000。实验五、MongoDB数据库的文档基本操作1(4课时)实验类型:验证性实验目的:掌握MongoDBCRUD基本操作。实验内容:使用mongodb基本语法命令完成表的创建、删除;表的增删改查工作。实验环境:OS:Ubuntu16.04MongoDB:v3.6fromI9000。实验六、MongoDB数据库的文档基本操作2(2课时)实验类型:验证性实验目的:掌握MongoDBCRUD基本操作。实验内容:使用mongodb基本语法命令完成表的增删改查工作;表的聚合操作。实验环境:OS:Ubuntu16.04MongoDB:v3.6fromI9000。实验七、MongoDB数据库的副本集操作(0课时)实验类型:演示性实验目的:完成MongoDB副本集复制实验内容:完成MongoDB副本集复制。实验环境:OS:Ubuntu16.04MongoDB:v3.6fromI9000DBeaver:v4.1.2。实验八、MongoDB数据库的分片技术(2课时)实验类型:演示性实验目的:(1)掌握MongoDB分片。实验内容:使用mongodb命令完成分片功能。实验环境:OS:Ubuntu16.04MongoDB:v3.6fromI9000DBeaver:v4.1.2。实验九、综合实验(20课时)实验类型:综合性实验目的:(1)掌握MongoDB增删改查。(2)掌握MongoDB聚合功能。(3)掌握python操作MongoDB数据库实验内容:使用python操作mongodb数据库,并完成增删改查和聚合操作。实验环境:OS:Ubuntu16.04MongoDB:v3.6fromI9000DBeaver:v4.1.2。