当前位置:首页 >> 信息与通信 >>

NoSQL


NoSQL
NoSQL,指的是非关系型的数据库。随着互联网 web2.0 网站的兴起,传统的关系数据库在 应付 web2.0 网站, 特别是超大规模和高并发的 SNS 类型的 web2.0 纯动态网站已经显得力 不从心, 暴露了很多难以克服的问题, 而非关系型的数据库则由于其本身的特点得到了非常 迅速的发展。
目录 简介 现今状况 我们为什么要使用 NOSQL

非关系数据库? 特点 缺点 NoSQL 数据库开源软件 1. 2. 3. 4. Membase MongoDB Hypertable Apache Cassandra

简介
NoSQL(NoSQL = Not Only SQL ),意即反 SQL 运动,是一项全新的数据库革命性运动,早期就有人 提出,发展至 2009 年趋势越发高涨。NoSQL 的拥护者们提倡运用非关系型的数据存储,相对于目前铺天 盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

现今状况
现今的计算机体系结构在数据存储方面要求具备庞大的水平扩展性①,而 NoSQL 致力于改变这一现 状。目前 Google 的 BigTable 和 Amazon 的 Dynamo 使用的就是 NoSQL 型数据库。 NoSQL 项目的名字上看不出什么相同之处,但是,它们通常在某些方面相同:它们可以处理超大量的 数据。 这场革命目前仍然需要等待。的确,NoSQL 对大型企业来说还不是主流,但是,一两年之后很可能就 会变个样子。在 NoSQL 运动的最新一次聚会中,来自世界各地的 150 人挤满了 CBS Interactive 的一间会 议室。分享他们如何推翻缓慢而昂贵的关系数据库的暴政,怎样使用更有效和更便宜的方法来管理数据。 “关系型数据库给你强加了太多东西。它们要你强行修改对象数据,以满足 RDBMS (relational database management system, 关系型数据库管理系统) 的需要, NoSQL 拥护者们看来, ”在 基于 NoSQL 的替代方案“只是给你所需要的”。 1.水平扩展性(horizontal scalability)指能够连接多个软硬件的特性,这样可以将多个服务器从逻辑上看 成一个实体。

非关系数据库? 我们为什么要使用 NOSQL 非关系数据库

随着互联网 web2.0 网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库 产品的发展非常迅速。而传统的关系数据库在应付 web2.0 网站,特别是超大规模和高并发的 SNS 类型的 web2.0 纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如: 1、High performance - 对数据库高并发读写的需求 web2.0 网站要根据用户个性化信息来实时生成动态页面和提供动态信息, 所以基本上无法使用动态页 面静态化技术, 因此数据库并发负载非常高, 往往要达到每秒上万次读写请求。 关系数据库应付上万次 SQL 查询还勉强顶得住,但是应付上万次 SQL 写数据请求,硬盘 IO 就已经无法承受了。其实对于普通的 BBS 网站,往往也存在对高并发写请求的需求。 2、Huge Storage - 对海量数据的高效率存储和访问的需求 对于大型的 SNS 网站,每天用户产生海量的用户动态,以国外的 Friendfeed 为例,一个月就达到了 2.5 亿条用户动态,对于关系数据库来说,在一张 2.5 亿条记录的表里面进行 SQL 查询,效率是极其低下 乃至不可忍受的。再例如大型 web 网站的用户登录系统,例如腾讯,盛大,动辄数以亿计的帐号,关系数 据库也很难应付。 3、High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求 在基于 web 的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增 的时候, 你的数据库却没有办法像 web server 和 app server 那样简单的通过添加更多的硬件和服务节点来 扩展性能和负载能力。 对于很多需要提供 24 小时不间断服务的网站来说, 对数据库系统进行升级和扩展是 非常痛苦的事情,往往需要停机维护和数据迁移,为什么数据库不能通过不断的添加服务器节点来实现扩 展呢? 在上面提到的“三高”需求面前,关系数据库遇到了难以克服的障碍,而对于 web2.0 网站来说,关系数 据库的很多主要特性却往往无用武之地,例如: 1、数据库事务一致性需求 很多 web 实时系统并不要求严格的数据库事务,对读一致性的要求很低,有些场合对写一致性要求也 不高。因此数据库事务管理成了数据库高负载下一个沉重的负担。 2、数据库的写实时性和读实时性需求 对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多 web 应用来说,并不要求这么高的实时性。 3、对复杂的 SQL 查询,特别是多表关联查询的需求 任何大数据量的 web 系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的复杂 SQL 报表查询,特别是 SNS 类型的网站,从需求以及产品设计角度,就避免了这种情况的产生。往往更多的只 是单表的主键查询,以及单表的简单条件分页查询,SQL 的功能被极大的弱化了。 因此,关系数据库在这些越来越多的应用场景下显得不那么合适了,为了解决这类问题的非关系数据 库应运而生。 NoSQL 是非关系型数据存储的广义定义。它打破了长久以来关系型数据库与 ACID 理论大一统的局 面。NoSQL 数据存储不需要固定的表结构,通常也不存在连接操作。在大数据存取上具备关系型数据库 无法比拟的性能优势。该术语在 2009 年初得到了广泛认同。 当今的应用体系结构需要数据存储在横向伸缩性上能够满足需求。而 NoSQL 存储就是为了实现这个 需求。 Google 的 BigTable 与 Amazon 的 Dynamo 是非常成功的商业 NoSQL 实现。 一些开源的 NoSQL

体系,如 Facebook 的 Cassandra, Apache 的 HBase,也得到了广泛认同。从这些 NoSQL 项目的名 字上看不出什么相同之处:Hadoop、Voldemort、Dynomite,还有其它很多。

特点
它们可以处理超大量的数据。 它们可以处理超大量的数据 服务器集群上。 它们运行在便宜的 PC 服务器集群上 PC 集群扩充起来非常方便并且成本很低,避免了“sharding”操作的复杂性和成本。 它们击碎了性能瓶颈。 它们击碎了性能瓶颈 NoSQL 的支持者称,通过 NoSQL 架构可以省去将 Web 或 Java 应用和数据转换成 SQL 友好格式的 时间,执行速度变得更快。 “SQL 并非适用于所有的程序代码,” 对于那些繁重的重复操作的数据,SQL 值得花钱。但是当数据 库结构非常简单时,SQL 可能没有太大用处。 没有过多的操作。 没有过多的操作 虽然 NoSQL 的支持者也承认关系数据库提供了无可比拟的功能集合,而且在数据完整性上也发挥绝 对稳定,他们同时也表示,企业的具体需求可能没有那么多。 Bootstrap 支持 因为 NoSQL 项目都是开源的,因此它们缺乏供应商提供的正式支持。这一点它们与大多数开源项目 一样,不得不从社区中寻求支持。

缺点
但是一些人承认,没有正式的官方支持,万一出了差错会是可怕的,至少很多管理人员是这样看。 “我们确实需要做一些说服工作,”,“但基本在他们看到我们的第一个原型运行良好之后,我们就能够 说服他们,这是条正确的道路。”

NoSQL 数据库开源软件
Membase
Membase 是 NoSQL 家族的一个新的重量级的成员。Membase 是开源项目,源代码采用了 Apache2.0 的使用许可。该项目托管在 GitHub.Source tarballs 上,目前可以 下载 beta 版本的 Linux 二进 制包。 该产品主要是由 North Scale 的 memcached 核心团队成员开发完成, 其中还包括 Zynga 和 NHN 这 两个主要贡献者的工程师,这两个组织都是很大的在线游戏和社区网络空间的供应商。 Membase 容易安装、操作,可以从单节点方便的扩展到集群,而且为 memcached(有线协议的兼容 性)实现了即插即用功能,在应用方面为开 发者和经营者提供了一个比较低的门槛。做为缓存解决方案, Memcached 已经在不同类型的领域(特别是大容量的 Web 应用)有了广泛的使用,其中 Memcached 的 部分基础代码被直接应用到了 Membase 服务器的前端。 通过兼容多种编程语言和框架,Membase 具备了很好的复用性。在安装和配置方面,Membase 提供 了有效的图形化界面和编程接口,包括可配置 的告警信息。

Membase 的目标是提供对外的线性扩展能力, 包括为了增加集群容量, 可以针对统一的节点进行复制。 另外,对存储的数据进行再分配仍然是必要的。 这方面的一个有趣的特性是 NoSQL 解决方案所承诺的可预测的性能,类准确性的延迟和吞吐量。通 过如下方式可以获得上面提到的特性: ◆ 自动将在线数据迁移到低延迟的存储介质的技术(内存,固态硬盘,磁盘) ◆ 可选的写操作一一异步,同步(基于复制,持久化) ◆ 反向通道再平衡[未来考虑支持] ◆ 多线程低锁争用 ◆ 尽可能使用异步处理 ◆ 自动实现重复数据删除 ◆ 动态再平衡现有集群 ◆ 通过把数据复制到多个集群单元和支持快速失败转移来提供系统的高可用性。

MongoDB
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最 像关系数据库的。他支持的数据结构非常松散,是类似 json 的 bjson 格式,因此可以存储比较复杂的数据 类型。Mongo 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可 以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易部 署、易使用,存储数据非常方便。 主要功能特性: 主要功能特性 ◆ 面向集合存储,易存储对象类型的数据 “面向集合” (Collenction-Orented) 意思是数据被分组存储在数据集中, , 被称为一个集合 (Collenction)。 每个 集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据 库(RDBMS)里的表(table),不同的是它不需要定 义任何模式(schema)。 ◆ 模式自由 模式自由(schema-free),意味着对于存储在 mongodb 数据库中的文件,我们不需要知道它的任何结 构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。 ◆支持动态查询 ◆支持完全索引,包含内部对象 ◆支持查询 ◆支持复制和故障恢复 ◆使用高效的二进制数据存储,包括大型对象(如视频等) ◆自动处理碎片,以支持云计算层次的扩展性 ◆支持 RUBY,PYTHON,JAVA,C++,PHP 等多种语言 ◆文件存储格式为 BSON(一种 JSON 的扩展) BSON(Binary Serialized dOcument Format)存储形式是指:存储在集合中的文档,被存储为键-值 对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型。 ◆可通过网络访问

MongoDB 服务端可运行在 Linux、 Windows 或 OS X 平台, 支持 32 位和 64 位应用, 默认端口为 27017。 推荐运行在 64 位平台,因为 MongoDB 在 32 位模式运行时支持的最大文件尺寸为 2GB。 MongoDB 把数据存储在文件中(默认路径为:/data/db),为提高效率使用内存映射文件进行管理。

Hypertable
Hypertable 是一个开源、高性能、可伸缩的数据库,它采用与 Google 的 Bigtable 相似的模型。在过 去数年中,Google 为在 PC 集群 上运行的可伸缩计算基础设施设计建造了三个关键部分。第一个关键的 基础设施是 Google File System(GFS),这是一个高可用的文件系统,提供了一个全局的命名空间。它 通过跨机器(和跨机架)的文件数据复制来达到高可用性,并因此免受传统 文件存储系统无法避免的许多 失败的影响,比如电源、内存和网络端口等失败。第二个基础设施是名为 Map-Reduce 的计算框架,它与 GFS 紧密协作, 助处理收集到的海量数据。 帮 第三个基础设施是 Bigtable, 它是传统数据库的替代。 Bigtable 让你可以通过一些主键来组织海量数据,并实现高效的 查询。Hypertable 是 Bigtable 的一个开源实现, 并且根据我们的想法进行了一些改进。

Apache Cassandra
Apache Cassandra 是一套开源分布式 Key-Value 存储系统。它最初由 Facebook 开发,用于储存特 别大的数据。Facebook 目前在使用此系统。 主要特性: 主要特性 ◆ 分布式 ◆ 基于 column 的结构化 ◆ 高伸展性 Cassandra 的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服 务,对 Cassandra 的一个写操作,会被复制到其他节点上去,对 Cassandra 的读操作,也会被路由到某 个节点上面去读取。对于一个 Cassandra 群集来说,扩展性能 是比较简单的事情,只管在群集里面添加 节点就可以了。 Cassandra 是一个混合型的非关系的数据库,类似于 Google 的 BigTable。其主要功能比 Dynomite (分布式的 Key-Value 存 储系统)更丰富,但支持度却不如文档存储 MongoDB(介于关系数据库和非关 系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库 的。支持的数据结构非常松 散, 是类似 json 的 bjson 格式, 因此可以存储比较复杂的数据类型。 Cassandra 最初由 Facebook 开发, ) 后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以 Amazon 专有的完全分布式的 Dynamo 为基础,结合了 Google BigTable 基于列族(Column Family)的数据模型。P2P 去中心化的存 储。很多方面都可以称之为 Dynamo 2.0。 和其他数据库比较,其突出特点是: 和其他数据库比较,其突出特点是: ◆ 模式灵活 :使用 Cassandra,像文档存储,你不必提前解决记录中的字段。你可以在系统运行时 随意的添加或移除字段。这是一个惊人的效率提升,特别是在大型部 署上。 ◆ 真正的可扩展性 :Cassandra 是纯粹意义上的水平扩展。为给集群添加更多容量,可以指向另一 台电脑。你不必重启任何进程,改变应用查询,或手动迁移任何数据。 ◆ 多数据中心识别 :你可以调整你的节点布局来避免某一个数据中心起火,一个备用的数据中心将 至少有每条记录的完全复制。

◆ 范围查询 :如果你不喜欢全部的键值查询,则可以设置键的范围来查询。 ◆ 列表数据结构 :在混合模式可以将超级列添加到 5 维。对于每个用户的索引,这是非常方便的。 ◆ 分布式写操作 :有可以在任何地方任何时间集中读或写任何数据。并且不会有任何单点失败。


相关文章:
典型的十大NOSQL数据库
12 NoSQL 数据库 1.引言随着互联网 Web2.0 网站的兴起,非关系型的数据库现在成了一个极其热门 的新领域,其相关产品的发展也非常迅速。传统的关系数据库在应付 ...
NoSQL详解:如何找到对的技术
NoSQL详解:如何找到对的技术_计算机软件及应用_IT/计算机_专业资料。国内最具权威的市场调研门户网站之一 NoSQL 详解:如何找到对的技术 虽然关系型数据库系统 ...
NoSQL
目录 1 简介 2 状况 3 发展 4 特点 5 优点 6 缺点 7 开源软件 1 简介 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是 SQL”,是一项全新的数据库 革命...
对nosql的认识
这时 我们会把我们一般会把 NoSQL 和关系数据库进行结合使用,各取所长 NoSQl 作为辅助存储在这种模式下,把所有的数据都存放在关系数据库中,可能被 经常频繁读取的...
NoSQL简介
Over the last few years we have seen the rise of a new type of databases, known as NoSQL databases, that are challenging the dominance of relational ...
详解NoSQL数据库使用实例
http://www.bjaccp.com 详解 NoSQL 数据库使用实例一、NoSQL 基础知识 1.关于 NoSQL 在“NoSQL”一词,实际上是一个叫 Racker 的同事创造的,当约翰埃文斯埃里克...
NoSQL
NoSQL_计算机软件及应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 NoSQL_计算机软件及应用_IT/计算机_专业资料。今日推荐 ...
NoSQL技术实战
NoSQL技术实战_IT/计算机_专业资料。绝对干货,技术文档 ,大数据会议精彩记录:NoSQL技术实战NoSQL 技术实战 时至今日,“Big data”(大数据)时代的来临已经毋庸置疑...
NoSQL
5页 免费 nosql 43页 免费 什么是NoSQL?Web2.0和云计... 6页 免费如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。...
更多相关标签:
nosql数据库 | mongodb | nosql数据库有哪些 | nosql数据库入门 | redis | nos | nosql redis | nosql mongodb |