NoSQL数据库的安装和使用

(一)完成Redis的安装和使用。完成数据库的插入,删除,以及查询。

  Redis是一个键值(key-value)存储系统,即键值对非关系型数据库,和Memcached类似,目前正在被越来越多的互联网公司采用。Redis作为一个高性能的键值数据库,不仅在很大程度上弥补了memcached这类键值存储的不足,而且在部分场合下可以对关系数据库起到很好的补充作用。Redis提供了PythonRubyErlangPHP客户端,使用很方便。

①使用hadoop用户登录ubuntu kylin,在windows系统使用FileZilla将压缩格式的文件redis-5.0.5.tar.gz传输保存在“/home/hadoop/下载”目录下,现在解压包装包至路径 /usr/local下。
在这里插入图片描述

②将redis-5.0.5.tar.gz文件解压保存至“/usr/local/”目录下。 在这里插入图片描述
③将redis-5.0.5重命名为redis,并把redis目录的权限赋予hadoop用户。
在这里插入图片描述
④进入“/usr/local/redis”目录,输入编译和安装Redis
在这里插入图片描述
在这里插入图片描述
⑤已经完成Redis的安装,现在开启Redis服务器。
在这里插入图片描述
⑥新建终端,启动Redis客户端。客户端连上服务器之后,会显示“127.0.0.1:6379>”的命令提示符信息,表示服务器的IP地址为127.0.0.1,端口为6379。现在可以执行简单的操作,比如,设置键为”hello”,值为”world”,并且取出键为”hello”时对应的值。至此Redis安装和运行成功,接下来即可操作Redis数据库。
在这里插入图片描述
Redis数据库是以<key,value>的形式存储数据,把表的数据存入Redis数据库时,keyvalue的确定方法如下:

* key=表名:主键值:列名
* value=列值 

⑦插入数据:向Redis插入一条数据,只需要先设计好keyvalue,然后用set命令插入数据即可。例如,在Course表中插入一门新的课程“大数据”,4学分,操作命令和结果如下图所示。
在这里插入图片描述
⑧删除数据: Redis有专门删除数据的命令——del命令,命令格式为“del 键”。所以,如果要删除之前新增的课程“大数据”,只需输入命令“del Course:8:Cname”,如下图所示,当输入“del Course:8:Cname”时,返回“1”,说明成功删除一条数据。
在这里插入图片描述
⑨查询数据:Redis最简单的查询方式是使用get命令。输入get命令查询,输出为空,说明数据删除成功。
在这里插入图片描述

(二)MongoDB的安装和使用。

   完成MongoDB的基本的shell命令。 MongoDB 是一个基于分布式文件存储的数据库,介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似jsonbson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
①使用apt-get命令进行在线安装MongoDB,可以避免很多莫名其妙的问题。
命令行sudo apt-get install mongodb可下载安装MongoDB,默认安装的版本是MongoDB 2.6.10,但目前MongoDB已经升级到3.2.8,可以通过添加软件源的方式来安装3.2.8版本。

a.首先打开终端,导入公共key到包管理器
在这里插入图片描述
b.创建MongoDB的文件列表。
在这里插入图片描述
c.更新包管理器,安装MongoDB
在这里插入图片描述
在这里插入图片描述
d.安装完成MongoDB以后,在终端输入以下命令查看MongoDB版本。
在这里插入图片描述
MongoDB的启动和关闭。

在这里插入图片描述
③进入MongoDBshell命令模式。默认连接的数据库是test数据库,在此之前一定要确保已经启动了MongoDB,否则会出现错误,启动之后运行成功情况如下。
在这里插入图片描述
④常用操作命令
数据库相关
show dbs:显示数据库列表
show collections:显示当前数据库中的集合(类似关系数据库中的表table
show users:显示所有用户
use yourDB:切换当前数据库至yourDB
db.help() :显示数据库操作命令
db.yourCollection.help() :显示集合操作命令,yourCollection是集合名
在这里插入图片描述

MongoDB没有创建数据库的命令,如果想创建一个“School”的数据库,先运行use School命令,之后做一些操作(如:创建聚集集合db.createCollection('teacher')),这样就可以创建一个名叫“School”的数据库。
在这里插入图片描述
⑤以一个School数据库为例,在School数据库中创建两个集合teacherstudent,并对student集合中的数据进行增删改查基本操作(集合Collection相当于关系型数据库中的表table)。
a. 切换到School数据库(切换到School数据库。MongoDB 无需预创建School数据库,在使用时会自动创建)
在这里插入图片描述
b. 创建Collection(创建一个聚集集合。MongoDB 其实在插入数据的时候,也会自动创建对应的集合,无需预定义集合)
在这里插入图片描述
c.与数据库创建类似,MongoDB插入数据时也会自动创建集合。 插入数据有两种方式:insertsave
在这里插入图片描述
插入数据成功
在这里插入图片描述

_id相同,更新数据
在这里插入图片描述

_id相同,插入失败,不做操作。

d.添加的数据其结构是松散的,只要是json格式均可,列属性均不固定,根据添加的数据为准。先定义数据再插入,就可以一次性插入多条数据。
在这里插入图片描述

e. 运行完以上例子,student 已自动创建,说明 MongoDB 不需要预先定义 collection ,在第一次插入数据后,collection 会自动的创建。
在这里插入图片描述

⑥查找数据
a. db.student.find() 查询所有记录。相当于:select * from student
在这里插入图片描述

b. db.student.find({sname: 'zhangsan'}) 查询sname='zhangsan'的记录。相当于: select * from student where sname='zhangsan'
在这里插入图片描述

c. db.student.find({},{sname:1, sage:1}) 查询指定列snamesage数据。相当于:select sname,sage from student

sname:1表示返回sname列,默认_id字段也是返回的,可以添加_id:0(意为不返回_id)写成{sname: 1, sage: 1,_id:0},就不会返回默认的_id字段了
在这里插入图片描述

d. db.student.find({sname: 'zhangsan', sage: 22})
and与条件查询。相当于:select * from student where sname = 'zhangsan' and sage = 22
在这里插入图片描述

e. db.student.find({$or: [{sage: 22}, {sage: 25}]})
or条件查询。相当于:select * from student where sage = 22 or sage = 25
在这里插入图片描述

f. db.youCollection.find(criteria, filterDisplay) criteria
查询条件,可选filterDisplay:筛选显示部分数据,如显示指定列数据,可选(当选择时,第一个参数不可省略,若查询条件为空,可用{}做占位符)
在这里插入图片描述

⑦修改数据 db.youCollection.update(criteria, objNew, upsert, multi )

criteria: update的查询条件,类似sql update查询内where后面的 objNew : update的对象和一些更新的操作符(如$set)等,也可以理解为sql update查询内set后面的。

upsert : 如果不存在update的记录,是否插入objNewtrue为插入,默认是false,不插入。
multi: mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。默认false,只修改匹配到的第一条数据。

其中criteriaobjNew是必选参数,upsertmulti可选参数。 db.student.update({sname: 'lisi'}, {$set: {sage: 30}}, false, true)
相当于:update student set sage =30 where sname = 'lisi';
在这里插入图片描述

⑧删除数据 db.student.remove({sname: 'chenliu'}) 相当于:delete from student where sname='chenliu'
在这里插入图片描述

⑨删除集合
在这里插入图片描述

⑩退出shell命令模式
输入exit或者Ctrl+C退出shell命令模式
在这里插入图片描述
在这里插入图片描述

(三)使用Java APIMongoDB进行访问。

Java MongoDB Driver驱动jar包已经下保存至’/home/hadoop/下载/’目录下。
在这里插入图片描述
②打开Eclipse,新建Java Project
在这里插入图片描述
引入驱动包mongodb-driver-3.8.0.jar
在这里插入图片描述
新建Class Average_grade
在这里插入图片描述
在这里插入图片描述
清空Average_grade.java里面的代码,然后在该文件中输入完整的执行集合student的增删改查操作的代码。
在这里插入图片描述
程序运行结束后会在底部的“Console”面板中显示运行结果信息。
在这里插入图片描述
每次执行完程序,都可以返回shell模式查看结果。如:在eclipse执行完更新操作后,在shell模式输入db.student.find(),可以查看student集合的所有数据。
在这里插入图片描述

(四)Redis和传统的Mysql数据库的区别在哪里?

mysql是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢。redisNOSQL,即非关系型数据库,也是缓存数据库,即将数据存储在缓存中,缓存的读取速度快,能够大大的提高运行效率,但是保存时间有限。
mysql作为持久化存储的关系型数据库,相对薄弱的地方在于每次请求访问数据库时,都存在着I/O操作,如果反复频繁的访问数据库。
第一:会在反复链接数据库上花费大量时间,从而导致运行效率过慢;
第二:反复的访问数据库也会导致数据库的负载过高,那么此时缓存的概念就衍生了出来。
③缓存就是数据交换的缓冲区(cache),当浏览器执行请求时,首先会对在缓存中进行查找,如果存在,就获取;否则就访问数据库。缓存的好处就是读取速度快。
redis数据库就是一款缓存数据库,用于存储使用频繁的数据,这样减少访问数据库的次数,提高运行效率。

(五)MongoDB有哪些特点,和Mysql数据库的区别在哪里?

特点:
Mongodb是非关系型数据库(nosql),属于文档型数据库。文档是mongoDB中数据的基本单元,类似关系数据库的行,多个键值对有序地放置在一起便是文档,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。
存储方式:虚拟内存+持久化。 查询语句:是独特的Mongodb的查询方式。 适合场景:事件的记录,内容管理或者博客平台等等。
架构特点:可以通过副本集,以及分片来实现高可用。
数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。
成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。

区别:
MongoDB还有一个最大的缺点,就是它占用的空间很大,在MongoDB中频繁的进行数据增删改时,如果记录变了,例如数据大小发生了变化,这时候容易产生一些数据碎片,出现碎片引发的结果,一个是索引会出现性能问题。
MySQLMongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库。它们各有各的优点,关键是看用在什么地方。所以我们所熟知的那些SQL(全称Structured Query Language)语句就不适用于MongoDB了,因为SQL语句是关系型数据库的标准语言。

猜你喜欢

转载自blog.csdn.net/weixin_51571728/article/details/125275880