DDIA p100-118阅读笔记

1.OLTP和OLAP

分别是针对事务型查询和业务分析类的查询,前者比如个人去检查自己的交易记录,只会查几条,而且会查的字段比较多,后者是分析师使用的,比如检查某个字段的平均值、众数等聚合值,如果去扫描的话会扫描所有字段,对数据库写入、读取造成更大的影响。

2.OLAP

通常采用单独的数据仓库,专门针对业务分析,这里有一点像数据库主从多库做备份使用,主从库就是为了负载均衡,读取时从多个库读取,会有主备复制的问题。

3.列式存储

把数据按照字段而非按照整行存储在不同的节点,比如对于学生信息,一个数据库专门存储学生联系方式,一个数据库专门存储学生的学号信息,这里列式存储为什么能更好的加快分析类的请求,首先不同的数据库要维持对应的关系,比如对于第一行,都是同一个学生的信息,只有这样,列式存储才有意义。

列式存储可以采取一定的压缩方式。

4.数据存储

数据存储有模式的问题,因为随着代码的更新,存储模式也可能有不同的变化,比如字段的变化,这里有向前兼容和向后兼容的问题。

向后兼容是指新的代码能阅读旧代码写的数据;向前兼容是指旧的代码能阅读新代码的数据。

实现向前兼容和向后兼容的意义是,新旧业务更新时,为了防止直接更换全部数据和代码出现问题,在实际上线的时候是在一部分节点先测试的,在这个过程中会出现新旧数据并存、新旧代码并存的情况;哪怕不是服务端,针对客户端的更新,也会有一部分更新使用新客户端的用户和不会主动更新使用旧客户端的用户。

5.序列化和反序列化

序列化是指把内存中的数据结构比如栈、队列、自建数据类型、vector等存入存储系统,反序列化是把存储系统的内容变成内存能高效读取的数据结构。

json、xml、csv是针对解决存储的抛开编程语言的标准,针对json还有一些压缩手段,否则比如对于所有学生都有的studentid的字段,每个数据不仅要存储具体id还要存储student id这几个字符,会造成大量冗余,所以数据压缩能解决部分问题。

相关推荐
LinXunFeng3 天前
Obsidian - 使用 Share Note 分享笔记并自部署
前端·笔记·github
闪闪发亮的小星星8 天前
高斯光以及高斯光公式解释
笔记
cqbzcsq8 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
阿米亚波8 天前
【Windows】QEMU 启动 openEuler aarch64/arm64 架构系统 + 离线软件源
linux·windows·经验分享·笔记·架构·arm
自传.8 天前
尚硅谷 Vibe Coding|第三章(1) Claude Code深度使用与进阶技巧 学习笔记
笔记·学习·尚硅谷·vibecoding
.千余8 天前
【C++】模板进阶全解:非类型参数|全特化|偏特化|分离编译完全指南
开发语言·c++·笔记·学习·其他
自传.8 天前
尚硅谷 Vibe Coding|第二章 AI编程工具生态 学习笔记
笔记·学习·ai编程·尚硅谷·vibe coding
秋波。未央8 天前
Java Agent 开发 · Day 1 学习笔记(含作业完整标准答案)
java·笔记·学习
中屹指纹浏览器8 天前
2026指纹浏览器字体指纹、字体渲染偏差检测与全维度虚拟字体池搭建方案
经验分享·笔记