系统性能调优必知必会
陶辉
智链达CTO、前阿里云高级技术专家
立即订阅
5612 人已学习
课程目录
已完结 43 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 万变不离其宗,性能优化也有章可循
免费
基础设施优化 (6讲)
01 | CPU缓存:怎样写代码能够让CPU执行得更快?
02 | 内存池:如何提升内存分配的效率?
03 | 索引:如何用哈希表管理亿级对象?
04 | 零拷贝:如何高效地传输文件?
05 | 协程:如何快速地实现高并发服务?
06 | 锁:如何根据业务场景选择合适的锁?
系统层网络优化 (7讲)
07 | 性能好,效率高的一对多通讯该如何实现?
08 | 事件驱动:C10M是如何实现的?
09 | 如何提升TCP三次握手的性能?
10 | 如何提升TCP四次挥手的性能?
11 | 如何修改TCP缓冲区才能兼顾并发数量与传输速度?
12 | 如何调整TCP拥塞控制的性能?
13 | 实战:单机如何实现管理百万主机的心跳服务?
应用层编解码优化 (5讲)
14 | 优化TLS/SSL性能该从何下手?
15 | 如何提升HTTP/1.1性能?
16 | HTTP/2是怎样提升性能的?
17 | Protobuf是如何进一步提高编码效率的?
18 | 如何通过gRPC实现高效远程过程调用?
期中考试周 (3讲)
期中考试|行至半程,你的收获如何呢?
加餐1|特别福利:陶辉视频课精选
加餐2 |答疑精选:这些问题你都清楚吗?
分布式系统优化 (12讲)
19 | 如何通过监控找到性能瓶颈?
20 | CAP理论:怎样舍弃一致性去换取性能?
21 | AKF立方体:怎样通过可扩展性来提高性能?
22 | NWR算法:如何修改读写模型以提升性能?
23 | 负载均衡:选择Nginx还是OpenResty?
24 | 一致性哈希:如何高效地均衡负载?
25 | 过期缓存:如何防止缓存被流量打穿?
26 | 应用层多播:如何快速地分发内容?
27 | 消息队列:如何基于异步消息提升性能?
28 | MapReduce:如何通过集群实现离线计算?
29 | 流式计算:如何通过集群实现实时计算?
30 | 如何权衡关系数据库与NoSQL数据库?
加餐与分享 (8讲)
加餐3 | 大厂面试到底在考些什么?
大咖助场1 | 李玥:高并发场景下如何优化微服务的性能?
大咖助场2|庄振运:与程序员相关的SSD性能知识
加餐4|百万并发下Nginx的优化之道
大咖助场3|傅健:那些年,影响我们达到性能巅峰的常见绊脚石(上)
大咖助场4|傅健:那些年,影响我们达到性能巅峰的常见绊脚石(下)
加餐5 | 如何理解分布式系统?
加餐6|分布式系统的本质是什么?
结束语 (1讲)
结束语 | 从业 IT 20年后,我将最看重什么?
系统性能调优必知必会
15
15
1.0x
00:00/00:00
登录|注册

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

陶辉 2020-07-31
你好,我是陶辉。
到了第 4 部分课程的最后一讲,我们来结合前面介绍过的知识点,看看面对 NoSQL、关系数据库时该如何选择。
在分布式系统中,我们会同时使用多种数据库。比如,你可能会在 Redis 中存放用户 Session 会话,将业务数据拆解为由行、列构成的二维表存储在 MySQL 中,将需要全文检索的数据放在 ElasticSearch 中,将知识图谱放在 Neo4j 图数据库中,将数据量、访问量很大的数据放在 Cassandra 列式数据库或者 MongoDB 文档型数据库中,等等。
选择数据库时,我们的依据可能是访问速度,比如基于哈希表的 Redis 查询复杂度只有 O(1),也可能从事务的支持程度上选择了关系数据库,甚至从应用层的开发效率上还给它添加了 Hibernate 等 ORM 框架,也可能从处理数据的体量上选择了 NoSQL 数据库。可是,除了各种实现层面上的差异外,各类 NoSQL 与关系数据库之间,有没有最本质的区别?在实际工程中,我们可否从此入手确定大方向,再从细微处选择不同的实现?
在我看来,答案就在于“关系”这两个字,这也是我权衡数据库时最先考虑的前提。接下来我们就沿着关系数据库的特性,看看 NoSQL 数据库究竟做了哪些改变,我们又该如何选择它们。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《系统性能调优必知必会》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥19.9
立即订阅
登录 后留言

精选留言(3)

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

    作者回复: ^_^

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

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

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