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)
Apache三剑客:HBase, Cassandra, CouchDB。HBase的前景最为看好,因为它的开发者众多并且都是顶尖高手。Cassandra目前有很多否定的声音。CouchDB的小而精悍,赞誉很多,将要正式发布的CouchBase融合了MemBase和CouchDB,很令人期待。
HBase和Cassandra都是效仿Google的BigTable的基于列的数据库,它们都是用Java写的。另外一类似的数据库是HyperTable,百度用在一些后台分析,因为它是C++写的,速度比较快。不过HyperTable有点边缘,不太流行。这些基于列的开源数据库目前都比Goolge的BigTable差之少一个数量级
CouchDB是一个文档数据库。其最大的竞争者是MongoDB。MongoDB和HBase都采用主从服务器设计。CouchDB的服务器分布设计和Cassandra类似,Peer to Peer类型的。主从服务器设计一般能更好的strong consistent,属于CAP理论中的CP类型。 CouchDB和Cassandra一般认为都是eventual consistent,属于CAP理论中的AP类型。但其实MongoDB和Cassandra都可以设置成strong consistent或者eventual consistent。
以上所提到的数据库都支持MapReduce。好像出了HyperTable都支持非主键索引。HBase和strong consistent配置的MongoDB都支持最基本的锁定(HBase单行锁定,MongoDB单文档锁定),因此可以实现transaction,但是实现有点复杂和低效。单就transaction这一点,目前开源NoSQL数据库没有做的比较好的。
MongoDB的最大卖点是不需构建非主键索引也能执行很多查询。但是MongoDB的服务器分布设计实在不能让人恭维,可以说是NoSQL数据库中最Ugly的实现。
K-V数据库比较多,而且上面提到的基于列的数据库和文档数据库其实也都是K-V数据库。比较流行的纯种K-V数据库有:
Memcached: 非常流行,不支持持久化
VMWare's Redis: 很流行,新浪和知乎都在用,CP类型。
MemBase: 由很多Memcached的开发者开发,使用sqlite作底层存储。在社交游戏中用的比较多, zynga在用,CP类型。
Riak, 分布式实现和CouchDB/Cassandra比较像,AP类型。支持MapReduce。
Linkin's Voldemort, 在K-V中少见的eventual consistent ,AP类型。
TT, TC
纯基于二维座标索引的是Neo4j。但是现在MongoDB和CouchDB都集成这一特性。
目前CouchDB的开发者成立的公司CouchOne收购了MemBase,将其底层sqlite换成CouchDB推出了CouchBase,从而引入MapReduce以支持非主键索引。CouchBase暂时还没有正式发布官方正式版,不过快了。虽然CouchDB是eventual consistent的,但是CouchBase的开发者宣称CouchBase保持了MemBase的strong consistent特性,具体实现有待以后研究。
如果从成熟的角度来看,比较成熟并且十分流行的的有CouchDB,Memcached,Redis。
HBase和MongonDB和Cassandra都比较新,处于频繁更新之中。最有前途的是HBase,但是Hadoop/HBase集群的维护常常需要很多专业人员并且需要构建一个比较大的集群才能最大化体现出威力,因此用户主要是Facebook, yahoo, 百度和阿里巴巴等大公司。
个人比较期待CouchBase。
转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。当初我在黑马程序员培训时候就学过。
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:nosql数据库部署简单,基本都是开源软件。
缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠。
非关系型数据库的分类和比较:
1、文档型
2、key-value型
3、列式数据库
4、图形数据库
个人不认为nosql在少量数据存储上有啥优势。nosql主要解决的是auto sharding的问题,你不需要sharding,搞啥nosql. 作者:方圆 链接:
即非关系型数据库和关系型数据库。
MySQL的优点:事务处理—保持数据的一致性;由于以标准化为前提,数据更新的开销很小(相同的字段基本上只有一处);可以进行Join等复杂查询
NoSQL的优点:首先它是基于内存的,也就是数据放在内存中,而不是像数据库那样把数据放在磁盘上,而内存的读取速度是磁盘读取速度的几十倍到上百倍,所以NoSQL工具的速度远比数据库读取速度要快得多,满足了高响应的要求。即使NoSQL将数据放在磁盘中,它也是一种半结构化的数据 格式,读取到解析的复杂度远比MySQL要简单,这是因为MySQL存储的是经过结构化、多范式等有复杂规则的数据,还原为内存结构的速度较慢。NoSQL在很大程度上满足了高并发、快速读/和响应的要求,所以它也是Java互联网系统的利器。
简单的扩展:典型例子是Cassandra,由于其架构是类似于经典的P2P,所以能通过轻松地添加新的节点来扩展这个集群;
低廉的成本:这是大多数分布式数据库共有的特点,因为主要都是开源软件,没有昂贵的License成本;
NoSQL的缺点:大多数NoSQL数据库都不支持事务,也不像 SQL Server和Oracle那样能提供各种附加功能,比如BI和报表等; 不提供对SQL的支持
那么该如何选择?
如果规模和性能比24小时的数据一致性更重要,那NoSQL是一个理想的选择 (NoSQL依赖于BASE模型——基本可用、软状态、最终一致性)。
但如果要保证到“始终一致”,尤其是对于机密信息和财务信息,那么MySQL很可能是最优的选择(MySQL依赖于ACID模型——原子性、一致性、独立性和耐久性)。
如果关系数据库在你的应用场景中,完全能够很好的工作,而你又是非常善于使用和维护关系数据库的,那么我觉得你完全没有必要迁移到NoSQL上面,除非你是个喜欢折腾的人。如果你是在金融,电信等以数据为王的关键领域,目前使用的是Oracle数据库来提供高可靠性的,除非遇到特别大的瓶颈,不然也别贸然尝试NoSQL。
然而,在WEB2.0的网站中,关系数据库大部分都出现了瓶颈。在磁盘IO、数据库可扩展上都花费了开发人员相当多的精力来优化,比如做分表分库(database sharding)、主从复制、异构复制等等,然而,这些工作需要的技术能力越来越高,也越来越具有挑战性。如果你正在经历这些场合,那么我觉得你应该尝试一下NoSQL了。
具体问题具体分析
MySQL体积小、速度快、成本低、结构稳定、便于查询,可以保证数据的一致性,但缺乏灵活性。
NoSQL高性能、高扩展、高可用,不用局限于固定的结构,减少了时间和空间上的开销,却又很难保证数据一致性。
————————————————
版权声明:本文为CSDN博主「蒟蒻熊」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接: