为什么企业依赖于 NoSQL

如果你关注大数据科技动向,你对 NoSQL 一定不陌生,NoSQL 是一个分布式数据库。在过去时间,数据存储一直关系型数据库天下,有着良好的控制并发操作、事务功能。虽然RDBMS很优秀,但是随着时间的推移就出现了两个关系数据库解决不了的问题:快速增长的数据规模和日渐复杂的数据模型。结果,我们看到了 NoSQL 数据库的兴起。

一、关系数据库不足

实际上,从 1979 年 Oracle 发布了第一个版本,这些数据库被设计为在单个服务器上运行,并且越大越好。而且增加这些数据库容量的唯一方法是升级服务器处理器、内存和存储,数据存储代价不断升高。随着互联网的数据呈指数级增长和 Web 应用程序的兴起,数据模型日渐复杂,关系数据库难以支撑,NoSQL 数据库也由此孕育而生。在 2006 年谷歌发布了 Bigtable 研究论文,在 2007 年亚马逊发布了 Dynamo 研究论文。而这些新的数据库旨在满足新一代企业要求:需要敏捷开发并支持任意规模运作。

二、敏捷开发

当今是以体验为中心的数字经济,企业如何保持竞争力,那么必须进行创新。由于这项创新的核心是现代 Web、移动和物联网应用程序的开发,因此开发人员必须高频提供应用程序和服务。速度和敏捷性都至关重要,因为这些应用程序的发展速度远远超过 ERP 等传统应用程序。而关系数据库是却不能很好满足于它,因为它们的固定数据模型不能很好地支持敏捷开发。

敏捷开发的核心原则是适应不断变化的应用程序需求:当需求发生变化时,数据模型也会发生变化,这是关系数据库的难以克服的问题,因为关系数据库的模型是固定的,并预先定义好的。因此,当要更改数据模型,开发人员不得不修改当初设定好的数据库结构,以适应新的需求。这会减慢或停止开发,不仅因为它是一个手动,耗时的过程,而且还会影响其他应用程序和服务。

相比之下,NoSQL 文档 数据库完全完美支持这点,因为它是无模式的,没有强制定义数据必须建模。相反,它遵循应用程序和服务。使用 NoSQL,数据模型由应用程序模型定义。应用程序和服务将数据建模作为对象。

三、如何支持任意规模运作

为了支持以指数增长的用户和数据 - 数百到数千到数百万用户,以及千兆字节到数TB的数据操作,应用程序和服务不得不进行扩展以保持性能,并且必须有效地运行。

对于扩展关系数据库而言,这是一个问题,例如,使用 Oracle ,使用 RAC 技术进行扩展就需要大量组件,昂贵且不完全可靠。因此,有效扩展和按需扩展的能力是一项挑战。它会变得越来越昂贵,因为必须购买更大更强的服务器以容纳更多用户和更多数据。此外,如果必须使数据库脱机以执行硬件升级,则可能导致停机。

然而,分布式 NoSQL 数据库利用廉价硬件进行扩展, 只需添加更多服务器即可添加更多资源。扩展能力使企业能够通过以下方式更有效地扩展:

1、不需要为满足部署而买相对称的硬件

2、利用较便宜的硬件进行拓展;

3、按需扩展,无需停机。

四、NoSQL 常见存储方式

NoSQL 常见有三种存储方式:键值存储、面向文档的数据库和面向列的数据库。接下来说明这几种存储方式以及数据库代表。

键值存储

代表:Redis、memcached

键值存储是 NoSQL 最常见存储方式,通过 key-value 形式保存数据,高速访问数据。而且根据保存时效也分为临时性、永久性和两者兼备。

面向文档的数据库

代表:MongoDB、CouchDB

面向文档的数据库数据结构要求不是很严格,不定义表结构而且可以使用复杂的查询条件

面向列的数据库

代表:HBase

面向列的数据库以列为单位进行存储,这里的列式存储其实说的是列族存储,它将数据表存储为数据列而非行的形式。列族存储优势:快速查询,易拓展,但功能相对局限。

五、NoSQL 对于事务的支持?

在这里有一个误区,由于分布式事务需要分布式协作,所以似乎必须在性能可扩展性和分布式事务支持之间进行权衡。

耶鲁大学的一名副教授 Daniel Abadi 认为这个想法是错的,可拓展的分布式系统也是可以实现事物。他提出了一个新的权衡策略,具体是在公平性、隔离性和吞吐量(FIT)三者之间进行取舍。

换句话说,有两种方法构建出具备分布式事务吞吐量的可扩展系统:

1、放弃隔离性

当放弃隔离性,一个事物是不会跟其他事物有冲突,就无需等待协作就可以完成了。而且也有一类数据约束可以确保在弱隔离下正确性。

2、放弃公平性

通过设定分布式协作的顺序最小化两者之间的时间重叠,从而减轻二者之间的相互影响,在此公平下找到最合适时间进行协作。

六、小结

构建和运行这些大规模交互式应用程序创建了一组新的技术要求。新的技术架构需要比以往更加灵活,并且需要一种能够适应前所未有的规模、速度和数据可变性的实时数据管理方法。关系数据库无法满足这些新要求,这就使得 NoSQL 逐渐流行起来。

原文地址:https://www.cnblogs.com/TFengStorm/p/10272084.html

时间: 2024-11-05 15:52:09

为什么企业依赖于 NoSQL的相关文章

SQL/NoSQL两大阵营激辩:谁更适合大数据

企业在着手推动大数据项目的过程中,经常会遇到这样一个关键性的决策难题--到底该使用哪种数据库方案?经过综合考量,最终的选项往往只剩下 SQL 与 NoSQL 两种.SQL 具有骄人的业绩以及庞大的安装基础,但 NoSQL 却能够带来可观的收益并同样拥有不少支持者.在今天的辩论当中,我们将一同听听两大阵营中各位专家的意见. Network World 网站主编 John Dix 专门组织了此次辩论并邀请到多位专家.其中两位参与专家分别是 VoltDB 公司 CTO Ryan Betts 和 Cou

SQL VS NoSQL

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

NoSQL

NoSQL全名 Not Only SQL,而非No SQL NoSQL是伴随着WEB2.0的兴起而迅速发展,它的出现就是为了解决大规模的非结构化数据的存储,所以目前市面上的NoSQL都天生支持[集群]和[数据分片] 这里的天生支持是指使用内部机制实现,而非类似MySql的集群和分片,需要使用插件MySQL Proxy来实现,所以在配置和使用上更加灵活以及稳定. NoSQL的分类 1. 键值 Key/value (Redis,Membase ) 键值数据库为了达到读取的最大效率,所有的数据都是放在

SQL与NoSQL(关系型与非关系型)数据库的区别

永远正确的经典答案依然是:具体问题具体分析. 数据表VS.数据集 关系型和非关系型数据库的主要差异是数据存储的方式.关系型数据天然就是表格式的,因此存储在数据表的行和列中.数据表可以彼此关联协作存储,也很容易提取数据.与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起.非关系型数据通常存储在数据集中,就像文档.键值对或者图结构.你的数据及其特性是选择数据存储和提取方式的首要影响因素. 预定义结构VS.动态结构 关系型数据通常对应于结构化数据,因为数据表都有预定义好的结构(列的

NoSQL 与大数据

概览一下大数据项目中可以使用的数据存储技术,聚焦于Couchbase 和 ElasticSearch,展示如何使用以及它们的区别,先理解一下NoSQL领域中各种不同的技术. NoSQL 关系型数据库是过去的选择,几乎是许多开发者和DBA对于传统三层架构应用的唯一选择.使用这一场景有很多原因,数据建模方法,查询语言与数据交互,保证数据的一致性部署,并能够为复杂的应用服务. 然而,这不是解决所有数据存储问题的唯一方案,也是NoSQL 产生的原因.NoSQL 提供了新的方法而不是采用面向标准SQL的范

MYSQL与NOSQL

仅仅几年前,MySQL还是开源数据库领域公认的王者,但是随着NoSQL以82%的年复合增长率狂飙,MySQL在web应用市场正面临被NoSQL淘汰的危险. 向NoSQL的迁移不但成为IT业发展趋势的一个注脚,还让人们领略了开源驱动的产业创新正如疾风骤雨般来临. 这一切与Oracle对MySQL的管理无关,实际上,Oracle对MySQL可谓尽心尽力,投入大量资源改进技术,培养社区.正如451 Research的的研究经理Matthew Aslett所言:“MySQL生态系统比过去更加健康和富有活

如何在云存储下管理好企业的数据

虽然大多数IT主管和数据管理专家承认没有万全的安全解决方案来保护和恢复数据,但他们一致认为,组织应该采取一些必要的步骤. 那么,在重要文件和应用程序发生灾难时,企业应该采取哪些必要的预防措施呢?这里盘点了十二个由数据存储.数据管理和灾难恢复专家们提出的意见. 1. 进行数据评估 进行数据评估,可以帮助你了解企业中的高价值数据资产——你的客户信息和其他敏感数据,哪些文件被大量使用,以及谁在使用它们,与哪个部门有关.使用情报和数据分类,你可以更好地考虑哪些数据需要优先进行灾后恢复,以及哪些用户需要进

关系型数据库和NoSQL数据库

关系型数据库和NoSQL数据库 什么是NoSQL 大家有没有听说过 “NoSQL”呢?近年,这个词极受关注.看到“NoSQL”这个词,大家可能会误以为是“No!SQL”的缩写,并深感愤怒:“SQL怎么会没有必要了 呢?”但实际上,它是“Not Only SQL”的缩写.它的意义是:适用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存 储. 为弥补关系型数据库的不足,各种各样的NoSQL数据库应运而生. 为了更好地了解本书所介绍的No

MongoDB---前世今生

MongoDB的官方文档基本是how to do的介绍,而关于how it worked却少之又少,本人也刚买了<MongoDB TheDefinitive Guide>的影印版,还没来得及看,本文原作者将其书中一些关于MongoDB内部现实方面的一些知识介绍如下,值得一看. 今天下载了<MongoDB The Definitive Guide>电子版,浏览了里面的内容,还是挺丰富的.是官网文档实际应用方面的一个补充.和官方文档类似,介绍MongoDB的内部原理是少之又少,只有在附