`
haperkelu2011
  • 浏览: 4146 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

什么时候该用NoSQL?

阅读更多

NoSQL这两年越来越热,尤其是大型互联网公司非常热衷这门技术。根据笔者的经验,并不是任何场景,NoSQL都要优于关系型数据库。下面我们来具体聊聊,什么时候使用NoSQL比较给力:
1) 数据库表schema经常变化
比如在线商城,维护产品的属性经常要增加字段,这就意味着ORMapping层的代码和配置要改,如果该表的数据量过百万,新增字段会带来额外开销(重建索引等)。NoSQL应用在这种场景,可以极大提升DB的可伸缩性,开发人员可以将更多的精力放在业务层。

 

2)数据库表字段是复杂数据类型

对于复杂数据类型,比如SQL Sever提供了可扩展性的支持,像xml类型的字段。很多用过的同学应该知道,该字段不管是查询还是更改,效率非常一般。主要原因是是DB层对xml字段很难建高效索引,应用层又要做从字符流到dom的解析转换。NoSQL以json方式存储,提供了原生态的支持,在效率方便远远高于传统关系型数据库。

 

3)高并发数据库请求

此类应用常见于web2.0的网站,很多应用对于数据一致性要求很低,而关系型数据库的事务以及大表join反而成了"性能杀手"。在高并发情况下,sql与no-sql的性能对比由于环境和角度不同一直是存在争议的,并不是说在任何场景,no-sql总是会比sql快。有篇article和大家分享下,http://artur.ejsmont.org/blog/content/insert-performance-comparison-of-nosql-vs-sql-servers

 

4)海量数据的分布式存储

海量数据的存储如果选用大型商用数据,如Oracle,那么整个解决方案的成本是非常高的,要花很多钱在软硬件上。NoSQL分布式存储,可以部署在廉价的硬件上,是一个性价比非常高的解决方案。Mongo的auto-sharding已经运用到了生产环境。http://www.mongodb.org/display/DOCS/Sharding

 

并不是说NoSQL可以解决一切问题,像ERP系统、BI系统,在大部分情况还是推荐使用传统关系型数据库。主要的原因是此类系统的业务模型复杂,使用NoSQL将导致系统的维护成本增加。

 

1
0
分享到:
评论

相关推荐

    什么是NoSQL数据库?

    它的意义是:适用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存储。 为弥补关系型数据库的不足,各种各样的NoSQL数据库应运而生。 为了更...

    sql与各个nosql数据库使用场景的讲解

    什么时候引入nosql 先看看sql – > sql + nosql的过程。 https://www.jb51.net/article/79236.htm 为什么要使用NoSQL 这些nosql? 对java语言而言: redis:用于缓存 – 读速度极快(内存中) mongoDb – 读写事务...

    NoSQL数据库tiger.zip

    13477.09 requests per second 测试程序使用:mc-benchmark,redis-benchmark,因为3个实例在一个机器上,所以写的性能影响比较大, 部署的时候建议分开到不同物理机部署。 主要技术: erlang:用于socket和通讯层...

    初识NoSQL NoSql数据库入门 NoSql数据库基础知识

    大家有没有听说过“NoSQL”呢?大家可能会误以为是“No!...它的意义是:适用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存储。

    NoSQL的现状

    经过了至少4年的激烈争论,现在是对NoSQL的现状做一个阶段性结论的时候了。围绕着NoSQL发生了如此之多的事情,以至于很难对其作出一个简单概括,也很难判断它达到了什么目标以及在什么方面没有达到预期。在很多领域...

    NoSQL小型非关系数据库开发.zip

    学习NOSQL时候的一个实验任务MongoDB

    nosql数据库简介.pptx

    在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。 NoSQL(Not Only SQL/non-relational),最常见的解释是“non-relational”,...

    dbeaver21.1-enterprise-agent用于连接MongoDB等NoSQL类型数据库

    dbeaver21.1-enterprise-agent

    NoSql简介.ppt

    在基于web的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,你的数据库却没有办法像web server和 app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。

    NoSQL反模式–文档数据库篇

    NoSQL宣传的时候往往宣称是SchemaLess的,这会让人误解其不需要设计Schema。但如果不意识到设计Schema的必要,陷阱就在一直在黑暗中等着我们。这篇文章就总结一些别人的,也有自己犯过的深痛的设计Schema错误。NoSQL...

    再见 NoSQL!

    为解决大规模数据集合多重数据...是时候承认我们早就知道的事实了:NoSQL 并不适合现代应用程序,我们该对它说再见了。 由于数据超过了数据库能够处理的规模,NoSQL 技术就应运而生。这种新型的数据服务的兴起解决了十

    LocalDB:具有ACID属性的面向.NET的NoSQL数据库

    LocalDB将是具有ACID属性作为.NET应用程序一部分运行的超快速NoSQL(基于文档)数据库。 最适合: .NET应用程序(Web应用程序,服务或控制台/ Windows应用程序) 一实例应用 特征: 简单的集成和使用 Lambda...

    NoSQL反模式 – 文档数据库篇

    NoSQL宣传的时候往往宣称是SchemaLess的,这会让人误解其不需要设计Schema。但如果不意识到设计Schema的必要,陷阱就在一直在黑暗中等着我们。这篇文章就总结一些别人的,也有自己犯过的深痛的设计Schema错误。 ...

    基于NoSQL内存数据库的Linux性能优化

    我们在尝试NoSQL数据库的时候,不应该排斥传统的关系型数据库,因为NoSQL数据库永远不会取代传统的关系型数据库。Linux性能优化是一个很大的话题,涉及应用程序栈的层次架构,并非是一门精确的科学。本文是Linux性能...

    nosqlilab:玩NoSQL注入的实验室

    NoSQLi实验室随着NoSQL的普及,我认为是时候建立一个实验室了,这样我就可以尝试使用用于攻击它们的不同技术。 这个实验室就是结果。 鉴于我已经在Redis中进行过一些开发工作,所以我决定在这里使用MongoDB。 我在本...

    滴滴自研分布式NoSQL数据库Fusion的演进之路

    发展到了2014年,乘客司机和单量都有不错的增长,我们开始构建自己的系统架构,这个时候业务对于存储的需求很单纯,简单用用MySQL基本能解决我们的问题;到了2015年前后,我们的业务线多了起来,专车快车等开始上线...

Global site tag (gtag.js) - Google Analytics