DDIA p100-118阅读笔记

1.OLTP和OLAP

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

2.OLAP

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

3.列式存储

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

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

4.数据存储

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

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

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

5.序列化和反序列化

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

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

相关推荐
AOwhisky7 小时前
Ceph系列第六期:Ceph 文件系统(CephFS)精讲
linux·运维·网络·笔记·ceph
萤萤七悬7 小时前
【Python笔记】AI帮实现CLI工具-使用argparse.ArgumentParser接收命令参数
开发语言·笔记·python
luck_bor9 小时前
IO流知识点笔记
java·开发语言·笔记
東雪木10 小时前
泛型、反射、注解(Spring 框架核心底层)专属复习笔记
java·windows·笔记·学习·spring
小熊猫程序猿11 小时前
Datawhale Task04 具身智能零基础入门 打卡笔记
笔记
问心无愧051311 小时前
ctf show web入门71
android·前端·笔记
小陈phd11 小时前
多模态大模型学习笔记(四十七)——跨模态融合策略:早融合、中融合与晚融合核心解析
笔记·学习
cmes_love12 小时前
美股和港股的量化笔记-从下载逐笔tick到合成分钟
笔记·区块链
A_humble_scholar12 小时前
C++11 学习笔记:统一初始化、右值引用与完美转发
c++·笔记·学习
magic_now12 小时前
Modbus RTU 与 TCP 学习笔记
笔记·学习·tcp/ip