储存与数据库|青训营笔记

76 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天

一、本节课我学习到了什么?

一条数据从从产生,到数据流动,最后持久化的生命周期 数据库和存储系统背景知识,它们是什么,有哪些特点? 主流的存储&数据库系统架构,经典产品剖析 老系统结合新技术,如何持续演进走向新生?

二、本节课的具体内容

数据的产生

某天,小明同学下载了一个新的APP。因为第一次登陆,所以进入APP后需要注册一个新的账号 用户名:小明 密码:helloworld+ 密码提示问题:coding 于是小明同学三下五除二地填好了资料,按下了「注册」按钮 就这样,数据就从无到有地产生了,并且在数十/数百毫秒内向APP的后端服务器飞奔而去

单机储存-本地文件系统

Linux经典哲学:一切皆文件 文件系统的管理单元:文件 文件系统接口:文件系统繁多,如Ext2/3/4,sysfs,rootfs等,但都遵循VFS的统一抽象接口 Linux文件系统的两大数据结构:Index Node & Directory Entry Index Node Directory Entry 记录文件元数据,如id、大小、权限、磁盘位置等 记录文件名、inode指针,层级关系(parent)等 inode是一个文件的唯一标识,会被存储到磁盘上 dentry是内存结构,与inode的关系是N:1(hardlink的实现) inode的总数在格式化文件系统时就固定了

总结

存储系统

硬件反推软件变革十分常见! 块存储:存储软件栈里的底层系统,接口过于朴素 文件存储:日常使用最广泛的存储系统,接口十分友好,实现五花八门 对象存储:公有云上的王牌产品,immutable语义加持 key-value存储:形式最灵活,存在大量的开源/黑盒产品

关系型数据库:

基于关系和关系代数构建的,一般支持事务和SQL访问,使用体验友好的存储产品非关系型数据库:结构灵活,问分式灵活,针对不同场景有不同的针对性产品 分布式架构 数据分布策略:决定了数据怎么分布到集群里的多个物理节点,是否均匀,是否能做到高性能 数据复制协议:影响IO路径的性能、机器故障场景的处理方式 分布式事务算法:多个数据库节点协同保障一个事务的ACID特性的算法,通常基于2pc的思想设计