第十五章 从关系型到非关系型数据库
15.3 NoSQL数据库的类型
数据库的类型
键值(Key/Value)存储
临时性 Memcached等
1>在内存中保存数据;
2>可以进行非常快速的保存和读取处理;
3>数据有可能丢失。
永久性 Tokyo Tyrant、Flare和ROMA等
1>在硬盘上保存数据;
2>可以进行非常快速的保存和读取处理(但无法与Memcached相比):
3>数据不会丢失。
两者兼具型 Redis等
1>同时在内存和硬盘上保存数据;
2>可以进行非常快速的保存和读取处理;
3>保存在硬盘上的数据不会消失(可以恢复);
4>适合于处理数组类型的数据。
面向文档的数据库
不定义表结构、
可以使用复杂的查询条件
MongoDB和CouchDB属于这种类型。它们属于NoSQL数据库,但与键值存储相异。
面向列的数据库
面向行的数据库和面向列的数据库
高扩展性
Cassandra、Hbase和HyperTable属于这种类型。 由于近年来数据出现爆发性增长,这种类型的NoSQL数据库尤为引人注目。
15.2 NoSQL数据库的优势比较
NoSQL数据库的优势比较
关系型数据库的优势
通用性及高性能
突出的优势
1>保持数据的一致性(事务处理);
2>由于以标准化为前提,数据更新的开销很小(相同的字段基本上都只有一处);
3>可以进行JOIN等复杂查询;
4>存在很多实际成果和专业技术信息(成熟的技术)。
其中,能够保持数据的一致性是关系型数据库的最大优势。
关系型数据库的劣势
大量数据的写入处理存在困难
对有数据更新的表做索引或表结构( schema)变更处理不利
字段不固定时应用存在缺陷
对简单查询需要快速返回结果的处理响应慢
NoSQL数据库的优势
灵活的可扩展性
轻松应对海量数据
维护简单
经济
灵活的数据模型
15.4 NoSQL数据库选用原则
NoSQL数据库选用原则
1.并非对立而是互补的关系
2.量材适用
3.增加了数据存储的方式
15.5 NoSQL的CAP理论
CAP 理论
CAP理论 是NoSQL数据库的基础 Eric Brewer教授10年前在ACM PODC会议上的主题报告
内容
“C”、“A”和“P”分别代表了强一致性、可用性和分区容错性三个特征
分布式系统(Distributed System)是建立在网络之上的软件系统,具有高度的透明性。
CAP是在分布式环境中设计和部署系统时所要考虑的三个重要的系统需求。 根据CAP理论,数据共享系统只能满足这三个特性中的两个,而不能同时满足三个条件。
放弃C:
这里所说的放弃一致性,并不是完全放弃数据的一致性,而是放弃数据的强一致性,而保留数据的最终一致性。以网络购物为例,对只剩最后一件库存的商品,如果同时收到了两份订单,那么较晚的订单将被告知商品售罄。
放弃A:
一旦遇到分区容错故障,那么受到影响的服务需要等待数据一致,因此在等待期间系统就无法对外提供服务。
放弃P:
严重影响系统扩展性,因此放弃P不能接受。所有的NoSQL系统都假定P是存在的。
15.6 MongoDB概述
MongoDB
选用MongoDB原因
不能确定的表结构信息
序列化可以解决一切问题吗
无需定义表结构的数据库
MongoDB的优势
无表结构
容易扩展
丰富的功能
性能卓越
简便的管理
MongoDB的不足
不支持JOIN查询和事务处理
不能实时向硬盘中写入数据
15.7 MongoDB数据库安装配置
MongoDB数据库--安装配置
下载
MongoDB 的官方下载网站是http://www.,ongodb.org/downloads ,可以去上面下载最新的安装程序。

解压

建立环境
MongoDB需要一个data文件夹来放置自身文件。 所以我们要在D盘下建立data/db目录。 默认存储数据目录为/data/db,默认端口27017,默认HTTP端口28017。
配置环境变量
(1)右键单击“计算机”图标,并选择右键菜单中的 “属性”命令,在弹出的窗口中选择“高级系统设置”按钮,弹出如图所示的“系统属性”窗口,选择“高级”选项卡。

(2)单击“环境变量”按钮,弹出“环境变量”窗口

(3)在“系统变量”列表框中选择“Path”选项,单击“编辑”按钮,将弹出“编辑系统变量”窗口,
(4)将mongodb-win32-i386-2.6.8.zip解压后的文件夹中的bin文件夹的位置

MongoDB数据库--启动
启动
方式一 双击mongo.exe启动

方式二 命令行方式启动
打开cmd,运行mongod.exe - - dbpath=D:\data\db

方式三 windows服务启动
(1)配置为windows服务,用- - install命令参数,并用 - - journal 开启日志功能 -f 指定配置文件。回车,提示安装服务成功,

停止
方式一 shutdownServer()指令
通过admin库中发送db.shutdownServer()指令去停止

方式二 前台直接退出
通过前台启动的Mongodb数据库,可直接使用前台退出方式关闭终端。Mongodb将会自己做清理退出,把没有写好的数据写完整,并最终关闭数据文件。
方式三 net stop MongoDB关闭服务
通过windows服务启动的mongodb服务,可以用net stop MongoDB命令关闭

MongoVUE—安装
下载
1)进入官网下载页面http://www.mongovue.com/downloads/,点击download下载MongoVUE最新安装压缩包文件Installer-1.6.15.zip

解压
2)解压文件,得到Installer.msi,双击运行,指导安装结束

启动
(1)启动MongoVUE,首先会提示使用限制
(2)我们选择试用,点击OK按钮(想购买此产品可以点击Buy按钮)
(3)单击图中的加号按钮,添加连接。弹出Create new Connect对话框,填好信息后
(4)单击Test按钮,提示Success窗口表示可以连接mongodb数据库。
(5)关闭Success提示框,单击图 Create new Connection对话框中的Save按钮,保存连接

(6) 单击Connect连接按钮

MongoVUE—操作
创建
1)创建数据库,单击一下loacl实例作为操作对象。然后选择菜单中的Server add Database, 弹出输入对话框
2)输入数据库名称db,单击OK按钮,会看到新建的数据库db,

3)添加集合。单击选择db数据库为操作对象,选择菜单中的Databaseadd Collection或右键单击db数据库,选择右键菜单中add Collection,会弹出输入集合名称对话框
4)单击OK按钮,添加集合blog。成功后可以看到新建的blog集合

5)添加文档。单击选择blog集合作为操作对象,选择菜单栏Collection(或是右击blog集合的右键菜单)中的 Insert/Import Documents…选项。弹出插入文档窗口,写好文档
6)点击Insert插入文档,若无错误提示,可以双击blog,选择Text View选项卡

更新
(1)第一种方式,直接在Tree View或是Table View视图下,找到自己要修改的字段,双击字段编辑后回车,即可修改成功

2)通过命令修改,首先点击快捷菜单中的Update按钮,在更新界面中,输入命令,如图所示。我们这里是把_id值为 ObjectId("54f7da098f5969034cc42224")的文档中的approverNun字段的值加2

删除
1)第一种方式,直接在Tree View视图中,右键单击要删除的文档,选择Remove选项,选择后,会弹出确认对话框,单击Yes即可删除文档

2)通过命令删除,首先点击快捷菜单中的Remove按钮,在删除界面中,输入命令,我们这里是把_id值为 ObjectId("54f7da098f5969034cc42224")的文档删除

查询
选择blog集合作为操作对象,单击快捷菜单中的Find1或Find2按钮,通过输入查询条件进行查询,这里单击Find1按钮,查询田野评论过的所有blog,按评论时间排序先后返回title和date字段,以及田野评论的内容。如图所示。


浙公网安备 33010602011771号