2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

NoSQL 与 RDBMS:何时使用,何时不使用

  • 2014-01-08
  • 本文字数:2496 字

    阅读完需:约 8 分钟

Naresh Kumar 是位软件工程师与热情的博主,对于编程与新事物拥有极大的兴趣,非常乐于与其他开发者和程序员分享技术上的研究成果。近日,Naresh撰文比较了NoSQL 与RDBMS,并详细介绍了他们各自的特点与适用的场景。

NoSQL 并不是关系型数据库管理系统,本文将会介绍 NoSQL 数据库与关系型数据库之间的差别,同时还会讨论在何种场景下应该使用 NoSQL,何种场景下不应该使用。由于 NoSQL 还是个相对较新的技术,因此它还面临着很多挑战。

时至今日,互联网上有数以亿计的用户。大数据与云计算已经成为很多主要的互联网应用都在使用或是准备使用的技术,这是因为互联网用户每天都在不断增长,数据也变得越来越复杂,而且有很多非结构化的数据存在,这是很难通过传统的关系型数据库管理系统来处理的。NoSQL 技术则能比较好地解决这个问题,它主要用于非结构化的大数据与云计算上。从这个角度来看,NoSQL 是一种全新的数据库思维方式。

为何要使用 NoSQL 数据库?

1.NoSQL 具有灵活的数据模型,可以处理非结构化 / 半结构化的大数据

现在,我们可以通过 Facebook、D&B 等第三方轻松获得与访问数据,如个人用户信息、地理位置数据、社交图谱、用户产生的内容、机器日志数据以及传感器生成的数据等。对这些数据的使用正在快速改变着通信、购物、广告、娱乐以及关系管理的特质。没有使用这些数据的应用很快就会被用户所遗忘。开发者希望使用非常灵活的数据库,能够轻松容纳新的数据类型,并且不会被第三方数据提供商内容结构的变化所累。很多新数据都是非结构化或是半结构化的,因此开发者还需要能够高效存储这种数据的数据库。但遗憾的是,关系型数据库所使用的定义严格、基于模式的方式是无法快速容纳新的数据类型的,对于非结构化或是半结构化的数据更是无能为力。NoSQL 提供的数据模型则能很好地满足这种需求。很多应用都会从这种非结构化数据模型中获益,比如说 CRM、ERP、BPM 等等,他们可以通过这种灵活性存储数据而无需修改表或是创建更多的列。这些数据库也非常适合于创建原型或是快速应用,因为这种灵活性使得新特性的开发变得非常容易。

2.NoSQL 很容易实现可伸缩性(向上扩展与水平扩展)

如果有很多用户在频繁且并发地使用你的应用,那么你就需要考虑可伸缩的数据库技术而非传统的 RDBMS 了。对于关系型技术来说,很多应用开发者会发现动态的可伸缩性是难以实现的,这时就应该考虑切换到 NoSQL 数据库上。对于云应用来说,关系型数据库一开始是普遍的选择。然而,在使用过程中却遇到了越来越多的问题,原因就在于他们是中心化的,向上扩展而非水平扩展的。这使得他们不适合于那些需要简单且动态可伸缩性的应用。NoSQL 数据库从一开始就是分布式、水平扩展的,因此非常适合于互联网应用分布式的特性。

在三层互联网架构的 Web/ 应用层上,多年来向上扩展已经成为默认的扩展方式了。随着应用使用人数的激增,我们需要添加更多的服务器,性能则是通过负载均衡来实现的,这时的代价与用户数量成线性比例关系。在 NoSQL 数据库之前,数据库层的默认扩展方式就是向上扩展。为了支持更多的并发用户以及存储更多的数据,你需要越来越好的服务器,更好的 CPU、更多的内存、更大的磁盘来维护所有表。然而,好的服务器意味着更加复杂、私有、并且也更加昂贵。这与 Web/ 应用层所使用的便宜的硬件形成了鲜明的对比。

3. 动态模式

关系型数据库需要在添加数据前先定义好模式。比如说,你需要存储客户的电话号码、姓名、地址、城市与州等信息,SQL 数据库需要提前知晓你要存的是什么。这对于敏捷开发模式来说是场灾难,因为每次完成新特性时,数据库的模式通常都需要改变。因此,如果在开发过程中想将客户喜欢的条目加到数据库中,那就得向表中添加这一列才行,然后要做的就是将整个数据库迁移到新的模式上。

4. 自动分片

由于是结构化的,关系型数据库通常会垂直扩展,单台服务器要持有整个数据库来确保可靠性与数据的持续可用性。这样做的代价就是非常昂贵、扩展受到限制,并且数据库基础设施会成为失败点。这个问题的解决方案就是水平扩展,添加服务器而不是为单台服务器增加更多的能力。NoSQL 数据库通常都支持自动分片,这意味着他们本质上就会自动在多台服务器上分发数据,应用甚至都不知道这些事情。数据与查询负载会自动在多台服务器上做到平衡,当某台服务器当机时,它能快速且透明地被替换掉。

5. 复制

大多数 NoSQL 数据库也支持自动复制,这意味着你可以获得高可用性与灾备恢复功能。从开发者的角度来看,存储环境本质上是虚拟化的。

NoSQL 数据库面临的挑战

1. 成熟度

RDBMS 系统由来已久。NoSQL 拥护者们会说 RDBMS 的高龄是其衰退的标志,不过对于大多数 CIO 来说,RDBMS 的成熟让人放心。对于大多数情况来说,RDBMS 系统是稳定且功能丰富的。相比较而言,大多数 NoSQL 数据库则还有很多特性有待实现。

2. 支持

企业需要的是安心,如果关键系统出现了故障,他们可以获得即时的支持。所有 RDBMS 厂商都在不遗余力地提供良好的企业支持。与之相反,大多数 NoSQL 系统都是开源项目,虽然每种数据库都有那么几家公司提供支持,不过这些公司大多都是小的初创公司,没有全球支持资源,也没有 Oracle、微软或是 IBM 那种令人放心的公信力。

3. 分析与商业智能

NoSQL 数据库在 Web 2.0 应用时代开始出现。因此,大多数特性都是面向这些应用的需要的。然而,应用中的数据对于业务来说是有价值的,这种价值远远超出了 Web 应用那种 CRUD。企业数据库中的业务信息可以帮助改进效率并提升竞争力,商业智能对于大中型企业来说是个非常关键的 IT 问题。

4. 管理

NoSQL 的设计目标是提供零管理的解决方案,不过当今的现实却离这个目标还相去甚远。现在的 NoSQL 需要很多技巧才能用好,并且需要不少人力、物力来维护。

5. 专业

全球有很多开发者,每个业务部门都会有熟悉 RDBMS 概念与编程的人。相反,几乎每个 NoSQL 开发者都处于学习模式。这种状况会随着时间的流逝而发生改观。但现在,找到一个有经验的 RDBMS 程序员或是管理员要比 NoSQL 专家容易多了。

结论

NoSQL 数据库正在成为数据库领域的重要力量。如果使用恰当,那么它会带来很多好处。然而,企业应该非常小心并注意到这些数据库的限制与问题。

2014-01-08 10:2710204
用户头像

发布了 88 篇内容, 共 268.4 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

云原生助力数字原生企业业务快速迭代|阿里云峰会精彩回顾

阿里巴巴云原生

阿里云 云原生

镭速Raysync v6.6.8.0版本发布

镭速

IDPChat:探索基于LLaMA和Stable Diffusion的「开源」中文多模态AI大模型

Baihai IDP

人工智能 开源 大模型 Stable Diffusion llama

论文解读:基于 OpenMLDB 的流式特征计算优化

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

MySQL8.0 优化器介绍(二)

GreatSQL

MySQL greatsql greatsql社区

面试官:如何动态的给一个类增加功能?

分布式实时搜索和分析引擎——Elasticsearch

会踢球的程序源

Java elasticsearch 后端

详解,LED显示屏灰度等级

Dylan

灰度 LED显示屏 色彩

成长计划知识赋能 | 第十期:DAYU200开发入门秒Get

OpenHarmony开发者

OpenHarmony

对话大咖 | 人工智能+视频编解码能带来新的变革吗

小红书技术REDtech

人工智能 深度学习 活动回顾

C语言_sprintf固定字符串输出位数

DS小龙哥

三周年连更

带你用三种不同的工具体验AI作诗

华为云开发者联盟

云计算 华为云 华为云开发者联盟 企业号 4 月 PK 榜

面对一堆烂代码,重构,还是重新开发?

架构精进之路

程序员 重构 三周年连更

布隆过滤器:后端开发者必学的知识点

华为云开发者联盟

后端 开发 华为云 华为云开发者联盟 企业号 4 月 PK 榜

从此告别写SQL!DataLeap帮你零门槛完成“数据探查”

字节跳动数据平台

MySQL 数据分析 数据治理 数据探查 企业号 4 月 PK 榜

发现Mysql的主从数据库没有同步,差点凉凉了

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

突破规模化运维瓶颈 SREWorks云原生数智运维平台揭秘

阿里云大数据AI技术

大数据 运维 企业号 4 月 PK 榜 规模化

零拷贝浅析

数新网络官方账号

大数据 零拷贝

【直播回顾】数字化转型成为银行业发展的关键(中)

易观分析

金融 银行

架构师才需要学习的知识:亿级流量调优方法+实战

Java 性能优化 性能调优

深入理解 Redis 新特性:Stream

Java你猿哥

redis SSM框架 Redis 核心技术与实战 redis 底层原理

深入浅出的实践大数据DAG图

数新网络官方账号

小红书广告投放机制详解,如何用算法实现全站自动化投放

小红书技术REDtech

大数据 搜索

大数据基础知识

数新网络官方账号

大数据

报名啦!来飞桨中国行,听深度学习平台+大模型如何破局产业智能化

飞桨PaddlePaddle

飞桨 产业赋能

企业应用可观测性利器!华为云CodeArts APM发布

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

ChatGPT的狂欢背后:短板犹在,启发甚多,2023有这些事可以做……

小红书技术REDtech

人工智能 ChatGPT 活动回顾

记一次 MySQL 主从同步异常的排查记录,百转千回

Java MySQL 主从同步

阿里P8:Java性能调优(独孤版),带你打造淘宝秒杀架构

Java 架构 性能调优

Redis复制(replication)

京茶吉鹿

数据库 nosql redis

NFTScan 与 NodeReal 达成战略合作:NFT API 已上架 NodeReal API Marketplace

NFT Research

NFT NFTScan

NoSQL与RDBMS:何时使用,何时不使用_语言 & 开发_张龙_InfoQ精选文章