![(1.7)-NoSQL数据库数据库应用与开发_第1页](http://file4.renrendoc.com/view11/M03/0A/29/wKhkGWXUnl2AVmiYAANgUPMib4E198.jpg)
![(1.7)-NoSQL数据库数据库应用与开发_第2页](http://file4.renrendoc.com/view11/M03/0A/29/wKhkGWXUnl2AVmiYAANgUPMib4E1982.jpg)
![(1.7)-NoSQL数据库数据库应用与开发_第3页](http://file4.renrendoc.com/view11/M03/0A/29/wKhkGWXUnl2AVmiYAANgUPMib4E1983.jpg)
![(1.7)-NoSQL数据库数据库应用与开发_第4页](http://file4.renrendoc.com/view11/M03/0A/29/wKhkGWXUnl2AVmiYAANgUPMib4E1984.jpg)
![(1.7)-NoSQL数据库数据库应用与开发_第5页](http://file4.renrendoc.com/view11/M03/0A/29/wKhkGWXUnl2AVmiYAANgUPMib4E1985.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
8.2NoSQL数据库8.2.1什么是NoSQL数据库数据库应用和开发NoSQL是NotOnlySQL的缩写,而不是NotSQL,它不一定遵循传统数据库的一些基本要求,比如说遵循SQL标准、ACID属性、表结构等等。它打破了关系型数据库长久以来占主导地位的快速成长起来的非关系松散数据存储类型,这种数据存储不需要事先设计好的表结构,它也不会出现表之间的连接操作和水平分割,学术界称这种数据库为非结构化存储。相比传统关系型数据库,叫它分布式数据管理系统更贴切,数据存储被简化更灵活,重点被放在了分布式数据管理上。非关系型数据库(NoSQL=NotOnlySQL)是传统关系型数据库的功能缩减版本,即通过减少不常用或极少用到的功能来大幅度提高产品性能。其出现是由于大数据应用的兴起,也为了解决现代社会中多重数据多种数据融合的问题。因此,在实际开发中,有很多业务其实并不需要完整的关系型数据库功能,所以使用性能更高、成本更低的非关系型数据库成为了更明智的选择。8.2NoSQL数据库8.2.1什么是NoSQL数据库数据库应用和开发NoSQL数据库的主要优势归纳如下:①易扩展:关系型数据库并不擅长大量数据的写入处理。原本关系型数据库就是以JOIN为前提的,就是说,各个数据之间存在关联是关系型数据库得名的主要原因。为了进行JOIN处理,关系型数据库不得不把数据存储在同个服务器内,这不利于数据的分散。相反,NoSQL数据库原本就不支持JOIN处理,各个数据都是独立设计的,很容易把数据分散到多个服务器上。由于数据被分散到多个服务器上,减少了每个服务器上的数据量,即使要进行大量数据的写入操作,处理起来也更容易。同理,数据的读入操作当然也同样容易;②灵活的数据模型:NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。适合在字段不固定的时候用,而在关系型数据库里则要更改表结构。③高可用:NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。比如Cassandra,HBase模型,通过复制模型也能实现高可用。④大数据量,高性能:NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。8.2NoSQL数据库8.2.2NoSQL数据库的四大分类数据库应用和开发类型简介典型应用案例键值对这是最常见的NoSQL数据库,它的数据是以键值的形式存储的。虽然它的处理速度非常快,但是基本上只能通过键查询获取数据。根据数据的保存方式可以分为临时性、永久性和两者兼具3种。图像存储基于键的文件系统对象缓存设计为可扩展的系统BerkeleyDBMemcacheRedis列族采用稀疏矩阵的形式,可以存储关键字及其映射值,并且可以把值分成多个列族,让每个列族代表一张数据映射表。网络爬虫的结果大数据的问题软一致性CassandraHBaseRiak图存储图数据库可存放实体及实体间关系。实体也叫“节点”(node),它们具有属性(property)。可将节点视为应用程序中某对象的实例。关系又叫“边”(edge),它们也有属性。边具备方向性(directionalsignificance),而节点则按关系组织起来,以便在其中查找所需模式。用图将数据一次性组织好,稍后便可根据“关系”以不同方式解读它。社交网络欺诈侦测强关联的数据Neo4jInfiniteGraphAllegroGraph文档存储“文档”(document)是文档存储数据库中的主要概念。此类的数据库可存放并获取文档,其格式可以是XML、JSON、BSON等。这些文档具备自述性(self-describing),呈现分层的树状数据结构(hierarchicaltreedatastructure),可以包含映射表、集合和纯量值。数据库中的文档彼此相似,但不必完全相同。文档数据库所存放的文档,就相当于键值数据库所存放的“值”。文档数据库可视为其值可查的键值数据库。高度变化的数据文档搜索集成中心互联网内容管理出版物MongoDBCouchDBNoSQL应用采用很多数据存储类型(不同的数据库)。有简单的表现键值关系的键值存储、表现关联关系的图存储、用以存储可变数据的文档存储,每一种NoSQL数据存储类型都有其独特的属性和使用场景。8.2NoSQL数据库8.2.3主流NoSQL数据库系统数据库应用和开发
对于NoSQL系统的使用者来说,其中一个挑战就是从众多不同的NoSQL数据库类别中选择一个合适的架构模式。本节将介绍7种主流的NoSQL数据库系统,并对比这几种数据库系统的特性和最佳应用场景。8.2NoSQL数据库8.2.3主流NoSQL数据库系统数据库应用和开发
CouchDB是一个文档型数据库服务器。于现在流行的关系数据库服务器不同,CouchDB是围绕一系列语义上自包含的文档而组织的。CouchDB中的文档是没有模式的(schemafree),也就是说并不要求文档具有某种特定的结构。CouchDB的这种特性使得相对于传统的关系型数据库而言,有自己的适用范围。一般来说,围绕文档来构建的应用都比较适合使用CouchDB作为其后台存储。CouchDB强调其中所存储的文档,在语义上是自包含的。这种面向文档的设计思路,更贴近很多应用的问题域的真实情况。对于这类应用,使用CouchDB的文档来进行建模,会更加自然和简单。与此同时,CouchDB也提供基于MapReduce编程模型的视图来对文档进行查询,可以提供类似于关系数据库中SQL语句的能力。CouchDB对于很多应用来说,提供了关系数据库之外的更好的选择。该数据库系统适用于数据变化较少,执行预定义查询,进行数据统计的应用程序。适用于需要提供数据版本支持的应用程序。
Redis是一个开源的和高级的键值对存储系统。它支持存储多种value类型,不仅包括基本的String类型,还包括List、Set、Zset和Hash类型。这种数据类型都支持push/pop、add/remove及取交集、并集、差集和其他丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。为了保证效率,Redis中的数据都是缓存在内存中的。根据实际运行中的配置,Redis会周期性的把数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis支持很多语言的客户端调用,如Python、Ruby、Erlang和PHP,使用很方便。另外,Redis的代码遵循ANSIC标准,可以在支持Posix标准的系统上安装运行,如Linux和BSD等,Windows上还不能正式支持。该数据库适用于数据变化快且数据库大小可预见(适合内存容量)的应用程序。1.CouchDB2.Redis8.2NoSQL数据库8.2.3主流NoSQL数据库系统数据库应用和开发3.MongoDB
MongoDB是10gen公司开发的一款以高性能和可扩展性为特征的开源软件,它是NoSQL中面向文档的数据库。它是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似JSON的BSON格式,因此可以存储比较复杂的数据类型。MongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据简历索引。它是一个面向集合的,模式自由的文档型数据库。该数据库适用于需要动态查询支持;需要使用索引而不是map/reduce功能;需要对大数据库有性能要求;需要使用CouchDB但因为数据改变太频繁而占满内存的应用程序。4.HBase
HBase是建立在HDFS上的,它提供高可靠性、高性能、列存储和可伸缩性、实时读写的数据库系统。它介于NoSQL和RDBMS之间,仅能通过主键(rowkey)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。主要用来存储非结构化和半结构化的松散数据。Hbase中的表一般有这样的特点:1)大:一个表可以有上亿行,上百万列。2)面向列:面向列(族)的存储和权限控制,列(族)独立检索。3)稀疏:对于空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。该数据库需要对大数据进行随机、实时访问的场合。8.2NoSQL数据库8.2.3主流NoSQL数据库系统数据库应用和开发5.Riak6.Membase
Riak是一个分布式的NoSQLkey-value数据存储,提供高可用、容错性、操作简便性和可扩展性。除了开源版本,它还支持企业版和云存储的版本。Riak实施原则来自于Amazond的Dynamo的论文,并受到CAP理论的深远影响。在Erlang中,Riak具有容错数据复制和整个集群的自动数据分发功能。Riak采用免费授权模式:开源的版本有Riak和RiakCS,但是用户也需要为额外的功能和支持付费。Riak具有可插拔的后端,用于其核心存储,默认存储后端为Bitcask,并支持LevelDB。该数据库适用于想使用类似Cassandra(类似Dynamo)数据库但无法处理bloat及复杂性的情况。适用于想做多站点复制,但又需要对单个站点的扩展性、可用性及出错处理有要求的情况。
Membase是针对交互式应用程序进行了优化的一种开源的,分布式(无共享架构)多模型的面向文档的NoSQL数据库。这些应用程序可以通过创造、存储、检索、聚合、操纵和呈现数据为许多用户并非用户提供服务。为了支持这些应用需求,Membase旨在提供易扩展的键值或者JSON文档访问,具有低延迟和高吞吐量。它被设计为能够满足从单个机器集群到跨越许多机器的大规模部署。该数据库适用于需要低延迟数据访问,高并发支持以及高可用性的应用程序。8.2NoSQL数据库8.2.3主流NoSQL数据库系统数据库应用和开发7.Neo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论