《存储与数据库》
研究生是大数据实验室的,学了两年基础数据的知识,主要集中在物理查询优化部分,对于分布式数据库有所了解,本篇记录一下学习的笔记(仅适用于个人),记录下知识点。
1.数据
数据流动: 用户创建数据 -> 后端服务器接受数据 -> 数据库存储数据 -> 其他系统应用 数据持久化: 数据库判断数据是否合法 -> 内存 -> 物理性存储介质(硬盘)
2.存储数据库
什么是存储系统? 一个提供了读写、控制类接口,能够有效的把数据持久化的软件,就可以称之为存储系统。 数据从应用到存储介质:
存储系统技术:RAID技术 单机存储系统的高性能、高性价比、高可靠性。 Redundant Array of Inexpensive Disks
RAID0 RAID1 RAID0+1(写入带宽和容错都兼顾了)
2.2 数据库
关系型数据库:Oracle、SQL server、PostgreSQL等。其中表即为所谓的关系relation,关系包含属性即列。利用关系语言:SQL,用来检索数据库。事务,用来并发控制等。 很形象的例子:
非关系型数据库:即存储是不以表形式存储,例如Redis,是一种key-value数据库
3. 主流产品
3.1 单机存储
单个计算机节点上的存储软件系统,不涉及网络交互。 本地文件系统: Linux文件系统,文件繁多,但都遵循vfs统一抽象接口 key-value存储,存储数据结构LSM-Tree
3.2 分布式存储
在单机存储基础上实现分布式协议,涉及大量网络交互。 HDFS是分布式数据库的基石。主要是有两种节点:namenode 和 datanode。 后续有谷歌开发的map-reduce,好像是map节点分发,reduce操作,再合并,再让分布式数据库更进一步。 再后面有Hadoop、spark等等基于上述的分布式数据库。
3.3 单机数据库
单个计算机节点上的数据库系统,事务在单机内执行,也可以通过网络交互式实现分布式事务 对于单机数据库的关系型数据库:Oracle、SQL server、MySQL、PostgreSQL
存储:cmu15445课程中说明:关系型数据库存储都是以文件类型存储,每个数据库都有自己独特的文件类型,操作系统对文件内容一概不知,仅有对应数据库可以访问。
对于单机数据库的非关系型数据库:MongoDB、Redis、elasticsearch
3.5 从单机数据库到分布式数据库
分布式数据库解决了单机数据库的问题:容量、弹性?、性价比 对于容量:将存储节点化,动态扩展了存储库。 弹性:意思是扩容会导致CPU资源浪费,但是采用分布式就可以充分利用CPU资源? 性价比:只需要扩容disk即可。
4. 技术演进
软件架构的变更,AI技术的增强,硬件革命。
课后作业
实现一个key-value的存储系统