存储系统&数据库系统 | 青训营笔记

109 阅读2分钟

这是我参与 [第三届青训营 -后端场]笔记创作活动的第1篇笔记

存储系统 or 数据库系统

简介

存储系统: 向用户提供操作文件内容的接口,控制文件(操作权限)的接口

数据库系统: 数据库系统是存储系统的pro版本. 不仅具有存储系统提供的接口,还支持事务,保证事务的原子性 ,一致性,隔离性,持久性(A C I D)

查询能力对比

查询数据方面,由于数据库系统集成了操作,于是其可用select,where等语句. 存储系统只能,使用 for,if实现

主流产品剖析

单机存储

  • 特点: 不涉及网络交互

本地文件系统

  • Linux文件系统

index node(记录文件元数据,文件唯一标识,存于磁盘)[inode]

Directory Entry( 记录文件名, inode指针,层级关系(linux文件系统树状组织文件,与inode关系为 N:1)

key-value存储

常用数据结构: LSM-Tree, 使用多层缓存,追求写入性能,牺牲读取性能.

image.png

单机关系型数据库

  • 特点: 单个计算机节点上的数据库系统, 事务可单机完成,也可多级完成(分布式事务)
  • 产品: Mysql, PostgreSQL

组件

  • Query Engine: 解析查询语句,生成查询计划
  • Txn Manager: 负责事务并发处理
  • Lock Manager: 负责锁相关的策略
  • Storage Engine: 负责组织内存/磁盘数据结构
  • Replocation: 负责主备同步

关键内存数据结构

B-Tree, B+-Tree, LRU List等

关键磁盘数据结构

WriteAheadLog (RedoLog),Page等

image.png

单机非关系型数据库

  • 产品

image.png

  • 与关系型数据库区别
  • 交互方式:千奇百怪
  • 数据结构千奇百怪
  • 不一定支持SQL(子集),事务
  • 支持模糊搜索(Elastic Search)

分布式存储 (HDFS)

  • 为什么要引入分布式存储? 数据量很大,单块大存储空间很贵.数据使用吞吐量很高.(单台计算机节点无法提供)
  • 引入后要解决什么问题? 数据丢失(未使用专业存储设备)

解决: 多几台普通主机,存多几份备份

如何提高吞吐量?

解决: 多几台主机,存储事务所需文件的一部分.

分布式数据库

为什么要引入分布式结构? 单机容量不够用 解决:池化技术 image.png 无法弹性增加资源, 解决:池化技术 image.png 增加资源只能一整块打包增加 解决:池化技术 image.png

新技术演进 --概览

image.png

总结

image.png