NoSql数据库

随着互联网web2.0网站的兴起,非关系型的数据库如今成了一个极其热门的新领域,非关系数据库产品的发展很是迅速。而传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了不少难以克服的问题,如:对数据库高并发读写的需求、对海量数据的高效率存储和访问的需求、对数据库的高可扩展性和高可用性的需求等等,下面我就跟你们几种常见的nosql数据库。web

一、MongoDBsql

介绍mongodb

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存储解决方案。当数据量达到50GB以上的时候,MongoDB的数据库访问速度是MySQL的10倍以上。MongoDB的并发读写效率不是特别出色,根据官方提供的性能测试代表,大约每秒能够处理0.5万~1.5万次读写请求。MongoDB还自带了一个出色的分布式文件系统GridFS,能够支持海量的数据存储。shell

MongoDB也有一个Ruby的项目MongoMapper,是模仿Merb的DataMapper编写的MongoDB接口,使用起来很是简单,几乎和DataMapper如出一辙,功能很是强大。数据库

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构很是松散,是相似json的bjson格式,所以能够存储比较复杂的数据类型。Mongo最大的特色是他支持的查询语言很是强大,其语法有点相似于面向对象的查询语言,几乎能够实现相似关系数据库单表查询的绝大部分功能,并且还支持对数据创建索引。apache

所谓“面向集合”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每一个 集合在数据库中都有一个惟一的标识名,而且能够包含无限数目的文档。集合的概念相似关系型数据库(RDBMS)里的表(table),不一样的是它不须要定 义任何模式(schema)。编程

模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,咱们不须要知道它的任何结构定义。若是须要的话,你彻底能够把不一样结构的文件存储在同一个数据库里。json

存储在集合中的文档,被存储为键-值对的形式。键用于惟一标识一个文档,为字符串类型,而值则能够是各中复杂的文件类型。咱们称这种存储形式为BSON(Binary Serialized dOcument Format)。ruby

MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,由于MongoDB在32位模式运行时支持的最大文件尺寸为2GB。网络

MongoDB把数据存储在文件中(默认路径为:/data/db),为提升效率使用内存映射文件进行管理。

特性

它的特色是高性能、易部署、易使用,存储数据很是方便。主要功能特性有:

面向集合存储,易存储对象类型的数据。

模式自由。

支持动态查询。

支持彻底索引,包含内部对象。

支持查询。

支持复制和故障恢复。

使用高效的二进制数据存储,包括大型对象(如视频等)。

自动处理碎片,以支持云计算层次的扩展性。

支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。

文件存储格式为BSON(一种JSON的扩展)。

可经过网络访问。

官方网站

二、CouchDB

介绍

Apache CouchDB 是一个面向文档的数据库管理系统。它提供以 JSON 做为数据格式的 REST 接口来对其进行操做,并能够经过视图来操纵文档的组织和呈现。 CouchDB 是 Apache 基金会的顶级开源项目。

CouchDB是用Erlang开发的面向文档的数据库系统,其数据存储方式相似Lucene的Index文件格式。CouchDB最大的意义在于它是一个面向Web应用的新一代存储系统,事实上,CouchDB的口号就是:下一代的Web应用存储系统。

特性

主要功能特性有:

CouchDB是分布式的数据库,他能够把存储系统分布到n台物理的节点上面,而且很好的协调和同步节点之间的数据读写一致性。这固然也得以于Erlang无与伦比的并发特性才能作到。对于基于web的大规模应用文档应用,然的分布式可让它没必要像传统的关系数据库那样分库拆表,在应用代码层进行大量的改动。

CouchDB是面向文档的数据库,存储半结构化的数据,比较相似lucene的index结构,特别适合存储文档,所以很适合CMS,电话本,地址本等应用,在这些应用场合,文档数据库要比关系数据库更加方便,性能更好。

CouchDB支持REST API,可让用户使用JavaScript来操做CouchDB数据库,也能够用JavaScript编写查询语句,咱们能够想像一下,用AJAX技术结合CouchDB开发出来的CMS系统会是多么的简单和方便。其实CouchDB只是Erlang应用的冰山一角,在最近几年,基于Erlang的应用也获得的蓬勃的发展,特别是在基于web的大规模,分布式应用领域,几乎都是Erlang的优点项目。

官方网站

三、Hbase

介绍

HBase是一个分布式的、面向列的开源数据库,该技术来源于Chang et al所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储同样,HBase在Hadoop之上提供了相似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不一样于通常的关系数据库,它是一个适合于非结构化数据存储的数据库.另外一个不一样的是HBase基于列的而不是基于行的模式。

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBase是Google Bigtable的开源实现,相似Google Bigtable利用GFS做为其文件存储系统,HBase利用Hadoop HDFS做为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase一样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby做为协同服务,HBase利用Zookeeper做为对应。

HBase访问接口

Native Java API,最常规和高效的访问方式,适合Hadoop MapReduce Job并行批处理HBase表数据

HBase Shell,HBase的命令行工具,最简单的接口,适合HBase管理使用

Thrift Gateway,利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合其余异构系统在线访问HBase表数据

REST Gateway,支持REST 风格的Http API访问HBase, 解除了语言限制

Pig,可使用Pig Latin流式编程语言来操做HBase中的数据,和Hive相似,本质最终也是编译成MapReduce Job来处理HBase表数据,适合作数据统计

Hive,当前Hive的Release版本尚没有加入对HBase的支持,但在下一个版本Hive 0.7.0中将会支持HBase,可使用相似SQL语言来访问HBase

特征

主要功能特性有:

支持数十亿行X上百万列

采用分布式架构 Map/reduce

对实时查询进行优化

高性能 Thrift网关

经过在server端扫描及过滤实现对查询操做预判

支持 XML, Protobuf, 和binary的HTTP

基于 Jruby( JIRB)的shell

对配置改变和较小的升级都会从新回滚

不会出现单点故障

堪比MySQL的随机访问性能

官方网站

四、cassandra

介绍

Cassandra是一个混合型的非关系的数据库,相似于Google的BigTable。其主要功能比Dynomite(分布式的Key-Value存储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库的。支持的数据结构很是松散,是相似json的bjson格式,所以能够存储比较复杂的数据类型。)Cassandra最初由Facebook开发,后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以Amazon专有的彻底分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型。P2P去中心化的存储。不少方面均可以称之为Dynamo 2.0。

特性

和其余数据库比较,有几个突出特色:

模式灵活 :使用Cassandra,像文档存储,你没必要提早解决记录中的字段。你能够在系统运行时随意的添加或移除字段。这是一个惊人的效率提高,特别是在大型部 署上。

真正的可扩展性 :Cassandra是纯粹意义上的水平扩展。为给集群添加更多容量,能够指向另外一台电脑。你没必要重启任何进程,改变应用查询,或手动迁移任何数据。

多数据中心识别 :你能够调整你的节点布局来避免某一个数据中心起火,一个备用的数据中心将至少有每条记录的彻底复制。

一些使Cassandra提升竞争力的其余功能:

范围查询 :若是你不喜欢所有的键值查询,则能够设置键的范围来查询。

列表数据结构 :在混合模式能够将超级列添加到5维。对于每一个用户的索引,这是很是方便的。

分布式写操做 :有能够在任何地方任什么时候间集中读或写任何数据。而且不会有任何单点失败。

官方网站

五、Hypertable

介绍

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

特性

主要功能特色:

负载均衡的处理

版本控制和一致性

可靠性

分布为多个节点

官方网站

好啦,今天的分享到这里就结束了,但愿你们可以持续关注马哥

相关文章
相关标签/搜索