系统性能调优必知必会
陶辉
智链达 CTO,前阿里云 P8 高级技术专家
36367 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
系统性能调优必知必会
15
15
1.0x
00:00/00:00
登录|注册

30 | 如何权衡关系数据库与NoSQL数据库?

在选择NoSQL与关系数据库时的考虑
NoSQL数据库适用场景
关系数据库适用场景
分类:Key/Value数据库、文档型数据库、列式数据库、图数据库
提供可伸缩性
放弃ACID事务
可伸缩性问题
数据模型变化的同步问题
内存中的数据结构多样
降低应用层开发成本
ACID事务特性
数据服务提供
开发效率提升
处理数据的体量
应用层的开发效率
事务的支持程度
访问速度
思考题
如何选择关系数据库与NoSQL数据库
NoSQL数据库解决问题的方式
关系数据库的问题
关系数据库的优点
选择数据库的依据
如何权衡关系数据库与NoSQL数据库?

该思维导图由 AI 生成,仅供参考

你好,我是陶辉。
到了第 4 部分课程的最后一讲,我们来结合前面介绍过的知识点,看看面对 NoSQL、关系数据库时该如何选择。
在分布式系统中,我们会同时使用多种数据库。比如,你可能会在 Redis 中存放用户 Session 会话,将业务数据拆解为由行、列构成的二维表存储在 MySQL 中,将需要全文检索的数据放在 ElasticSearch 中,将知识图谱放在 Neo4j 图数据库中,将数据量、访问量很大的数据放在 Cassandra 列式数据库或者 MongoDB 文档型数据库中,等等。
选择数据库时,我们的依据可能是访问速度,比如基于哈希表的 Redis 查询复杂度只有 O(1),也可能从事务的支持程度上选择了关系数据库,甚至从应用层的开发效率上还给它添加了 Hibernate 等 ORM 框架,也可能从处理数据的体量上选择了 NoSQL 数据库。可是,除了各种实现层面上的差异外,各类 NoSQL 与关系数据库之间,有没有最本质的区别?在实际工程中,我们可否从此入手确定大方向,再从细微处选择不同的实现?
在我看来,答案就在于“关系”这两个字,这也是我权衡数据库时最先考虑的前提。接下来我们就沿着关系数据库的特性,看看 NoSQL 数据库究竟做了哪些改变,我们又该如何选择它们。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

关系数据库与NoSQL数据库在分布式系统中的选择是一个关键问题。关系数据库在业务层开发效率、事务ACID特性、标准化访问接口、持久化支持、性能和并发度等方面具有优势,但也存在数据结构多样性、数据模型变化同步和可伸缩性等问题。NoSQL数据库则适合于大规模分布式环境,放弃了单一值数据模型,解决了关系数据库的可伸缩性问题。文章通过具体的例子和技术细节,深入浅出地介绍了这两种数据库的特点和选择原则,为读者提供了全面的参考和思考。 NoSQL数据库通过放弃与分布式环境相悖的ACID事务,提供了另一种聚合数据模型,从而拥有可伸缩性的非关系数据库。NoSQL数据库可以分为四类:Key/Value数据库、文档型数据库、列式数据库和图数据库。相对于关系数据库,NoSQL在性能和易用性上都有明显的优点。在选择关系数据库与NoSQL数据库时,需要根据具体业务需求和数据特点来权衡两者,充分利用它们各自的优势。文章通过对关系数据库和NoSQL数据库各自的特点及适用场景进行介绍,为读者提供了全面的参考和思考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《系统性能调优必知必会》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • 安排
    "首先,内存中的数据结构非常多样,难以直接映射到行列交汇处的单一值上。",这句话不太理解,内存中的数据结构为什么要映射到单一值上呢?

    作者回复: 比如,用户信息表中存放了地址,如果这个地址内含省、市、街道等信息,那最自然的想法,就是把整个结构化的地址放到address字段中,这就是单一值映射。 然而,在关系数据库中,你只能将它序列化为字符流,再作为string存放到value中,否则,只能建立多个字段存放,这样才能实现多维度查询。

    2020-07-31
    2
    5
  • 谷鱼
    之前主要考虑业务开发中的需求,需求固定,访问数据较多,系统较小选用非关系型数据库,开发快。短平快,比如ruby开发web,多数会用非关系。不过这次学习到了更多的层次。收获很大

    作者回复: ^_^

    2020-07-31
    2
  • leslie
    个人的理解:NOSQL其实解释成NOT ONLY SQL更合适。其实太多的误解是非关系型,认为no sql是可以随意存放存储,其实只是一种补充。 就像目前更多的分布式数据库,其实个人认为就是二者的兼容;RMDB为里,NOSQL为表更合适。目前市面更多的选择是二者优势互补,个人更倾向此种选择。 记得许老师对于数据库更愿意从存储介质去区分数据库,我个人极度认可,如果当哪天出现基于cpu时我们又该如何去探讨所谓的nosql与RMDB?就比如nosql的使用大多同时和MQ在一起,此时我们又该如果去评价MQ与NOSQL? 场景决定选择:百花齐放、业务的分析与定位,选择合适当下以及下一阶段的就好;市场变化如此之快5-10年后的选择可能谁都不知道。谢谢分享。
    2020-08-03
    4
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部