什么时候该用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快。

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

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

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

时间: 2024-08-05 08:00:55

什么时候该用NoSQL?的相关文章

云计算背后的秘密:NoSQL诞生的原因和优缺点

转载收藏一篇对nosql讲解的比较全面的文章:http://blog.csdn.net/xlgen157387/article/details/47908797 这篇文章将和大家聊聊为什么NoSQL会在关系型数据库已经非常普及的情况下异军突起? 诞生的原因 随着互联网的不断发展,各种类型的应用层出不穷,所以导致在这个云计算的时代,对技术提出了更多的需求,主要体现在下面这四个方面: 1. 低延迟的读写速度:应用快速地反应能极大地提升用户的满意度; 2. 支撑海量的数据和流量:对于搜索这样大型应用而

大并发大数量中的MYSQL瓶颈与NOSQL介绍

NoSQL在2010年风生水起,大大小小的Web站点在追求高性能高可靠性方面,不由自主都选择了NoSQL技术作为优先考虑的方面.今年伊始,InfoQ中文站有幸邀请到凤凰网的孙立先生,为大家分享他之于NoSQL方面的经验和体会. 非 常荣幸能受邀在InfoQ开辟这样一个关于NoSQL的专栏,InfoQ是我非常尊重的一家技术媒体,同时我也希望借助InfoQ,在国内推动NoSQL 的发展,希望跟我一样有兴趣的朋友加入进来.这次的NoSQL专栏系列将先整体介绍NoSQL,然后介绍如何把NoSQL运用到自

NoSQL开篇——为什么要使用NoSQL

NoSQL概念 随着web2.0的快速发展,非关系型.分布式数据存储得到了快速的发展,它们不保证关系数据的ACID特性.NoSQL概念在2009年被提了出来.NoSQL最常见的解释是"non-relational","Not Only SQL"也被很多人接受.("NoSQL"一词最早于1998年被用于一个轻量级的关系数据库的名字.) NoSQL被我们用得最多的当数key-value存储,当然还有其他的文档型的.列存储.图型数据库.xml数据库等.

NoSQL数据库:数据的一致性

NoSQL数据库:数据的一致性 读取一致性 强一致性 在任何时间访问集群中任一结点,得到的数据结果一致: 用户一致性       对同一用户,访问集群期间得到的数据一致:        解决用户一致性:使用粘性会话,将会话绑定到特定结点来处理:        这样会降低负载均衡器的性能: 最终一致性       集群中各结点间由于数据同步不及时造成暂时的数据不一致,但数据同步完成后,最终具有一致性: 更新一致性 悲观方式 使用写锁 大幅降低系统响应能力 可能导致死锁 乐观方式 先让冲突发生,再检

十种NoSQL数据库以及对比

 虽然NoSQL流行语火起来才短短一年的时间,但是不可否认,现在已经开始了第二代运动.尽管早期的堆栈代码只能算是一种实验,然而现在的系统已经更加的成熟.稳定.不过现在也面临着一个严酷的事实:技术越来越成熟--以至于原来很好的NoSQL数据存储不得不进行重写,也有少数人认为这就是所谓的2.0版本.这里列出一些比较知名的工具,可以为大数据建立快速.可扩展的存储库. 1. Casssandra Cassandra最初由Facebook开发,后来成了Apache开源项目,它是一个网络社交云计算方面理

SQL VS NoSQL

(关系型与非关系型)数据库的区别: 关系型和非关系型数据库的主要差异是数据存储的方式 1.1 数据表 VS 数据集 关系型数据天然就是表格式的,因此存储在数据表的行和列中.数据表可以彼此关联协作存储,也很容易提取数据.与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起.非关系型数据通常存储在数据集中,就像文档.键值对或者图结构 1.2 预定义结构 VS 动态结构 关系型数据通常对应于结构化数据,因为数据表都有预定义好的结构(列的定义),结构描述了数据的形式和内容.这一点对数据

为什么会出现NoSql数据库

NoSQL即Not-Only SQL是关系型数据库的良好补充 关系型数据库是基于关系模型提出来的数据库.那么什么是关系模型呢?以行和列的方式二维表的方式存储数据的模型就是关系型数据库.例如:mysql和oracle 随着互联网web网站的兴起,关系型数据库暴露的缺点越来越多,关系型数据库可以应付上万次的sql查询,但是对于上万次的sql写数据的请求,硬盘io就受不鸟了 下面小编来说说硬盘和内存条有什么区别(内存条又称内存) 硬盘:用来存储数据的计算机配件.是非易失性储存器,说得直白点,就是你关了

3大主流NoSQL数据库性能对比测试报告

近日,知名独立基准测评机构Bankmark,针对目前市面上主流的NoSQL数据库SequoiaDB.MongoDB以及Cassandra三款NoSQL数据库产品做了性能对比测试并发布测试报告.在所有的测试中,三款NoSQL数据库产品的表现各有千秋,没有那款产品能在所有测试场景中完败对手,就整体表现而言SequoiaDB与Cassandra不相上下表现上佳,而MongoDB表现却不理想属于垫底的存在. 测试机构: Bankmark是一家德国的独立基准测评机构,业内著名的NoSQL性能测试团队. 测

关系数据库&&NoSQL数据库

在过去,我们只需要学习和使用一种数据库技术,就能做几乎所有的数据库应用开发.因为成熟稳定的关系数据库产品并不是很多,而供你选择的免费版本就更加少了,所以互联网领域基本上都选择了免费的MySQL数据库.在高速发展的WEB2.0时代,我们发现关系数据库在性能.扩展性.数据的快速备份和恢复.满足需求的易用性上并不总是能很好的满足我们的需要,我们越来越趋向于根据业务场景选择合适的数据库,以及进行多种数据库的融合运用. 当我们在讨论是否要使用NoSQL的时候,你还需要理解NoSQL也是分很多种类的,在No

Nosql里典型的数据库

Nosql里典型的数据库 Redis 对网站服务器进行写入 传统关系式数据库无法过多的写入 对数据库要求: 数据库高并发读写需求 解决方案: (1:读写分离 两台主如果同时写入会发生冲突 (2:水平分割: 关系式数据库 数据之间有操作 海量数据的高效率存储和访问的需求 用户如果在海量数据中查询某一条数据 记录 数据库的高扩展性和高可用性 ############################################### 任何一个领域,如果不能通过自己的努力 去获取或者超出其他人的竞争