NoSQL数据库14信管一班2组23殷月园内容大纲定义产生共同特征分类适用场景发展现状挑战一.什么是NoSQL数据库?NoSQL:即NotOnlySQL与关系型数据库相对应的,也可理解为norelational,即非关系型数据库。二.NoSQL数据库的产生关系数据库面临挑战关系数据库面对超大规模和高并发的SNS类型的web2.0纯动态网站显得力不从心,暴露了很多难以克服的问题A大数据发展大规模数据集合,多重数据带来了许多挑战,尤其是大数据应用难题厄待解决B关系数据库面临的挑战传库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题统的关系数据,例如:1、Highperformance-对数据库高并发读写的需求;2、HugeStorage-对海量数据的高效率存储和访问的需求;3、HighScalability&&HighAvailability-对数据库的高可扩展性和高可用性的需求;1、Highperformance-对数据库高并发读写的需求web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求,硬盘IO就已经无法承受了。其实对于普通的BBS网站,往往也存在对高并发写请求的需求。2、HugeStorage-对海量数据的高效率存储和访问的需求对于大型的SNS网站,每天用户产生海量的用户动态,以国外的Friendfeed为例,一个月就达到了2.5亿条用户动态,对于关系数据库来说,在一张2.5亿条记录的表里面进行SQL查询,效率是极其低下乃至不可忍受的。再例如大型web网站的用户登录系统,若没有能够支撑海量数据的高效率存储和访问需求的数据库,那又如何满足用户的需求?3、HighScalability&&HighAvailability-对数据库的高可扩展性和高可用性的需求在基于web的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,你的数据库却没有办法像webserver和appserver那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移,为什么数据库不能通过不断的添加服务器节点来实现扩展呢?在上面提到的“三高”需求面前,关系数据库遇到了难以克服的障碍,而对于web2.0网站来说,关系数据库的很多主要特性却往往无用武之地,例如:1、数据库事务一致性需求很多web实时系统并不要求严格的数据库事务,对读一致性的要求很低,有些场合对写一致性要求也不高。因此数据库事务管理成了数据库高负载下一个沉重的负担;2、数据库的写实时性和读实时性需求对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多web应用来说,并不要求这么高的实时性。3、对复杂的SQL查询,特别是多表关联查询的需求。任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询,特别是SNS类型的网站,从需求以及产品设计角度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。三.共同特征对于NoSQL并没有一个明确的范围和定义,但是他们都普遍存在下面一些共同特征:1.不需要预定义模式不需要事先定义数据模式,预定义表结构。数据中的每条记录都可能有不同的属性和格式。当插入数据时,并不需要预先定义它们的模式。2.无共享架构相对于将所有数据存储的存储区域网络中的全共享架构。NoSQL往往将数据划分后存储在各个本地服务器上。因为从本地磁盘读取数据的性能往往好于通过网络传输读取数据的性能,从而提高了系统的性能。3.弹性可扩展可以在系统运行的时候,动态增加或者删除结点。不需要停机维护,数据可以自动迁移。4.分区相对于将数据存放于同一个节点,NoSQL数据库需要将数据进行分区,将记录分散在多个节点上面。并且通常分区的同时还要做复制。这样既提高了并行性能,又能保证没有单点失效的问题。5.异步复制和RAID存储系统不同的是,NoSQL中的复制,往往是基于日志的异步复制。这样,数据就可以尽快地写入一个节点,而不会被网络传输引起迟延。缺点是并不总是能保证一致性,这样的方式在出现故障的时候,可能会丢失少量的数据。6.BASE相对于事务严格的ACID特性,NoSQL数据库保证的是BASE特性。BASE是最终一致性和软事务。四.NoSQL数据库的四大分类1.键值(Key-Value)存储数据库这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。2.列存储数据库这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。3.文档型数据库文档型数据库的灵感是来自于LotusNotes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。4.图形(Graph)数据库图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。分类Examples举例典型应用场景数据模型优点缺点键值(key-value)TokyoCabinet/Tyrant,Redis,Voldemort,OracleBDB内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等Key指向Value的键值对,通常用hashtable来实现查找速度快数据无结构化,通常只被当作字符串或者二进制数据列存储数据库Cassandra,HBase,Riak分布式的文件系统以列簇式存储,将同一列数据存在一起查找速度快,可扩展性强,更容易进行分布式扩展功能相对局限文档型数据库CouchDB,MongoDb与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容Key-Value对应的键值对,Value为结构化数据数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构查询性能不高,而且缺乏统一的查询语法。图形(Graph)数据库Neo4J,InfoGrid,InfiniteGraph社交网络,推荐系统等。专注于构建关系图谱图结构利用图结构相关算法。比如最短路径寻址,N度关系查找等很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案NoSQL数据库的四大分类表格分析五.适用场景NoSQL数据库在以下的这几种情况下比较适用:1、数据模型比较简单;2、需要灵活性更强的IT系统;3、对数据库性能要求较高;4、不需要高度的数据一致性;5、对于给定key,比较容易映射复杂值的环境。六.发展现状计算机体系结构在数据存储方面要求具备庞大的水平扩展性,而NoSQL致力于改变这一现状。NoSQL项目的名字上看不出什么相同之处,但是,它们通常在某些方面相同:它们可以处理超大量的数据。这场革命仍然需要等待。的确,NoSQL对大型企业来说还不是主流,但是,一两年之后很可能就会变个样子。在NoSQL运动的最新一次聚会中,来自世界各地的150人挤满了CBSInteractive的一间会议室。分享他们如何推翻缓慢而昂贵的关系数据库的暴政的经验,怎样使用更有效和更便宜的方法来管理数据。“关系型数据库给你强加了太多东西。它们要你强行修改对象数据,以满足RDBMS(relationaldatabasemanagementsystem,关系型数据库管理系统)的需要,”在NoSQL拥护者们看来,基于NoSQL的替代方案“只是给你所需要的”。水平扩展性(horizontalscalability)指能够连接多个软硬件的特性,这样可以将多个服务器从逻辑上看成一个实体。七.挑战1.已有key-value数据库产品大多是面向特定应用自治构建的,缺乏通用性;2.已有产品支持的功能有限(不支持事务特性),导致其应用具有一定的局限性;3.已有一些研究成果和改进的NoSQL数据存储系统,但它们都是针对不同应用需求而提出的相应解决方案,如支持组内事务特性、弹性事务等,很少从全局考虑系统的通用性,也没有形成系列化的研究成果;4.缺乏类似关系数据库所具有的强有力的理论(如armstrong公理系统)、技术(如成熟的基于启发式的优化策略、两段封锁协议等)、标准规范(如SQL语言)的支持。5.目前,HBase数据库时安全特性最完善的NoSQL数据库产品之一,而其他的NoSQL数据库多数没有提供内建的安全机制,但随着NoSQL的发展,越来越多的人开始意识到安全的重要,部分NoSQL产品逐渐开始提供一些安全方面的支持。