淘先锋技术网

首页 1 2 3 4 5 6 7

1.1 什么是NoSQL?

NoSQL,指的是非关系型的数据库。
NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系 型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。
这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

1.2 为什么使用NoSQL ?

今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人 信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进 行挖掘,那SQL数据库已经不适合这些应用了, NoSQL数据库的发展也却能很好的处理这些大的数据。 随着互联网 web2.0 网站的兴起,传统的关系数据库在应付 web2.0 网站,特别是超大规模和高并发 的 SNS 类型的 web2.0 纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库 则由于其本身的特点得到了非常迅速的发展。NoSQL 数据库的产生就是为了解决大规模数据集合多重数据种 类带来的挑战,尤其是大数据应用难题。

1.3 RDBMS(传统关系型数据库) vs NoSQL:特点对比

RDBMS
- 高度组织化结构化数据 
- 结构化查询语言(SQL) 
- 数据和关系都存储在单独的表中。 
- 数据操纵语言,数据定义语言 
- 严格的一致性 
- 基础事务

NoSQL
- 代表着不仅仅是SQL 
- 没有声明性查询语言 
- 没有预定义的模式 
- 键 - 值对存储,列存储,文档存储,图形数据库 
- 最终一致性,而非ACID属性 
- 非结构化和不可预知的数据 
- CAP定理 - 高性能,高可用性和可伸缩性

1.4 NoSQL 简史

NoSQL一词最早出现于1998年,是Carlo Strozzi开发的一个轻量、开源、不提供SQL功能的关系数据库。 2009年,Last.fm的Johan Oskarsson发起了一次关于分布式开源数据库的讨论,来自Rackspace的 Eric Evans再次提出了NoSQL的概念,这时的NoSQL主要指非关系型、分布式、不提供ACID的数据库设计模 式。2009年在亚特兰大举行的"no:sql(east)“讨论会是一个里程碑,其口号是"select fun, profit from real_world where relational=false;”。因此,对NoSQL最普遍的解释是"非关联型的",强调Key- Value Stores和文档数据库的优点,而不是单纯的反对RDBMS

1.5 NoSQL 产品

常见的NoSQL产品:redis、memcache、mongdb等
NoSQL产品的显著特点:
 1、NoSQL产品一般不使用严格的表关系;
 2、NoSQL产品的数据查询一般不用在sql上;

在这里插入图片描述

http://nosql-database.org/—NoSQL数据库的详解
通过此页面可以更好的了解各种NoSQL
在这里插入图片描述

1.6 NoSQL 数据库分类

1、键值数据库 
相关产品:Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached 
应用:内容缓存 优点:扩展性好、灵活性好、大量写操作时性能高 
缺点:无法存储结构化信息、条件查询效率较低 
使用者:百度云(Redis)、GitHub(Riak)、BestBuy(Riak)、Twitter(Ridis和 Memcached)

2、列族数据库 
相关产品:BigTable、HBase、Cassandra、HadoopDB、GreenPlum、PNUTS 
应用:分布式数据存储与管理 
优点:查找速度快、可扩展性强、容易进行分布式扩展、复杂性低 
使用者:Ebay(Cassandra)、Instagram(Cassandra)、NASA(Cassandra)、 Facebook(HBase)

3、文档数据库 
相关产品:MongoDB、CouchDB、ThruDB、CloudKit、Perservere、Jackrabbit 
应用:存储、索引并管理面向文档的数据或者类似的半结构化数据 
优点:性能好、灵活性高、复杂性低、数据结构灵活 
缺点:缺乏统一的查询语言 
使用者:百度云数据库(MongoDB)、SAP(MongoDB)

4、图形数据库 
相关产品:Neo4J、OrientDB、InfoGrid、GraphDB 
应用:大量复杂、互连接、低结构化的图结构场合,如社交网络、推荐系统等
优点:灵活性高、支持复杂的图形算法、可用于构建复杂的关系图谱 
缺点:复杂性高、只能支持一定的数据规模 
使用者:Adobe(Neo4J)、Cisco(Neo4J)、T-Mobile(Neo4J)

NOSQL数据库分类的部分代表和特点

类型部分代表特点
列存储Hbase、Cassandra、Hypertable顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。
文档存储MongoDB、CouchDB文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。
key-value存储Tokyo、Cabinet 、Tyrant、Berkeley、DBMemcacheDB、Redis可以通过key快速查询到其value。一来说,存储不管value的格式,照单全收。(Redis包含了其他功能)
图存储Neo4J、FlockDB图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。
对象存储db4o、Versant通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。
xml数据库Berkeley DB XML、BaseX高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。

1.7 目前谁在使用NoSQL

现在已经有很多公司使用了 NoSQL:
 • Google 
 • Facebook 
 • Mozilla 
 • Adobe 
 • Foursquare 
 • LinkedIn 
 • Digg 
 • McGraw-Hill Education 
 • Vermont Public Radio

1.8 NoSQL 在国内使用的案例

1、新浪微博
目前新浪微博是 Redis 全球最大的用户。 在新浪有 200 多台物理机在运行着 Redis, 有大量的数据跑 在 Redis 上来为微博用户提供服务。 新浪 NoSQL 和 MySQL 在大多数情况下是结合使用的, 根据应用的特点选择合适的存储方式。 关系型数 据, 如索引使用 MySQL 存储。 非关系数据库, 例如: 一些 K/V 需求的,对并发要求比较高的放入 Redis 存储。

2、淘宝数据平台
淘宝网拥有国内最具商业价值的海量数据。 截至当前, 每天产生超过 30 亿的店铺及商品浏览记录, 10 亿在线商品数, 上千万的成交、 收藏和评价数据。 如何从这些数据中挖掘出真正的商业价值, 进而帮助淘 宝和商家进行企业的数据化运营, 帮助消费者进行理性的购物决策, 是淘宝数据平台与产品部的使命。 淘宝 Tair 是由淘宝自主开发的 Key/Valiie 结构数据存储系统, 并且于 2010 年 6 月 30号在淘宝 开源平台上正式对外幵源, 在淘宝网有着大规模的应用。

3、视觉中国网站
在“ 视觉中国” 成立之初, 他们选用的数据库是 MySQLo 2009 年之后他们才选用了MongoDB 作为系统 的支撑数据库

4、优酷运营数据分析
目前优酷的在线评论业务已部分迁移到 MongoDBo 运营数据分析及挖掘处理目前在使用 Hadoop/HBase。 在 Key-Value 产品方面, 它也在寻找更优的 Memcached 替代品, 如Redis。 相对于 Memcached, 除 了 对 Value 的存储支持三种不同的数据结构外, 同一个 Key 的 Value 进行部分更新也会更适合一些对 Value 频繁修改的在线业务。 同时在搜索产品中应用了 Tokyo Tyrant。

5、飞信空间
HandlerSocket 是日本 DeNA 公司的架构师 Yoshinori 开发的一个 NoSQL 产品, 以MySQL 插件的 形式运行。解决了高并发写入,弱一致性,HandlerSocket 还帮飞信解决了缓存的问题。

6、豆瓣社区
BeansDB 是一个由国内知名网站豆瓣网自主开发的主要针对大数据量和高可用性的分布式 Key/Value 存储 系统, 采用 HashTree 和简化的版本号来快速同步保证最终一致性。相当于一个简化版的 Dynamo,它在伸 缩性和高可用性方面有非常好的表现。