NoSQL选型
2015-12-02 22:30
239 查看
传统“关系型数据库”在应付互联网WEB2.0应用已显示的力不从心,由其是超大规模和高并发的SNS类型的WEB2.0网站。主要需要应对以下三方面难题:
1、对数据库高并发读写的要求。
2、对数据库高可扩展性和高可用性的要求。
3、对海量数据高效存储和访问的要求。
”关系型数据库“固有的特性的确用处不大
1、对数据库事务一致性要求低。很多WEB应用不要求严格的数据库事务,有些对读一致性要求不高,更有些对写一致性也要求不高。
2、对数据库写实时性和读实时性要求低。如发送消息给订阅者,可以接受延迟。
3、对复杂SQL查询的要求低。如非常忌讳多张大表关联查询。
为了解决以上问题,”非关系型数据库“(NoSql -- not only SQL)应运而生,再很短的时间内涌现出众多的NoSQL产品。他们各有各的适用场景,你是否对这些特性有所了解?你是否在选型时一片茫然? 本文将解答你的疑惑,帮助你选择正确的NoSQL产品,让你少走些弯路。
NoSQL数据库分类:
1、key-value存储型--满足极高读写要求。
2、文档存储型--海量存储和访问的数据库。
3、列存储型--高可扩展性,可用性,面向分布式计算的数据库。
4、图存储型--适合存储关系
1、对数据库高并发读写的要求。
2、对数据库高可扩展性和高可用性的要求。
3、对海量数据高效存储和访问的要求。
”关系型数据库“固有的特性的确用处不大
1、对数据库事务一致性要求低。很多WEB应用不要求严格的数据库事务,有些对读一致性要求不高,更有些对写一致性也要求不高。
2、对数据库写实时性和读实时性要求低。如发送消息给订阅者,可以接受延迟。
3、对复杂SQL查询的要求低。如非常忌讳多张大表关联查询。
为了解决以上问题,”非关系型数据库“(NoSql -- not only SQL)应运而生,再很短的时间内涌现出众多的NoSQL产品。他们各有各的适用场景,你是否对这些特性有所了解?你是否在选型时一片茫然? 本文将解答你的疑惑,帮助你选择正确的NoSQL产品,让你少走些弯路。
NoSQL数据库分类:
1、key-value存储型--满足极高读写要求。
2、文档存储型--海量存储和访问的数据库。
3、列存储型--高可扩展性,可用性,面向分布式计算的数据库。
4、图存储型--适合存储关系
类型 | 部分代表 | 特点 |
列存储 | Hbase Cassandra Hypertable | 顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。 |
文档存储 | MongoDB CouchDB | 文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。 |
key-value存储 | Tokyo Cabinet / Tyrant Berkeley DB MemcacheDB Redis | 可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能) |
图存储 | Neo4J FlockDB InfoGrid | 图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。 |
对象存储 | db4o Versant | 通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。 |
xml数据库 | Berkeley DB XML BaseX | 高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。 |
相关文章推荐
- MySQL性能优化的最佳经验,随时补充
- Redis集群明细文档(内容只说明了没有集群功能的redis)
- 执行数据库更新操作
- Redis 代理服务Twemproxy(redis分布式中间件)
- 数据库使用实例
- 数据库连接操作
- 使用homebrew 安装 mongodb 出现问题
- Redis: Jedis 源代码剖析1-链接建立和收发命令
- mysql笔记1
- Mysql出现插入中文???的问题
- MySQL中的find_in_set(A, B)函数,判断字符串A是否存在B中
- SQL实现将一个表的数据插入到另外一个表的代码
- oracle触发器调试
- SparkSQL样例
- sql2014 新建用户并登陆
- redis源码阅读(一):开始
- sqlite问题
- Oracle exp imp 常见问题解决
- SQL Server系列(7) -- 游标
- Windows UWP应用使用本地Sqlite和远程Sql(一)