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

73 阅读2分钟

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

一、课程内容

  • 存储系统
  • 数据库

二、详细知识点

1、存储系统

概念

一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统

特点:

  • 性能敏感
  • 系统软件架构容易受硬件影响

从应用到存储介质

  • 缓存
  • 拷贝

RAID技术

让单机存储做到高性能、高性价比、高可靠性

2、数据库

关系型数据库

  • 结构化数据友好
  • 支持事务
  • 支持复杂查询语言

非关系型数据库

  • 半结构化数据友好
  • 可能支持事务
  • 可能支持复杂查询语言

与经典存储对比

结构化数据管理

  • 写入关系型数据库以表形式管理
  • 写入文件自行定义管理结构

事务能力

  • A(tomicity):事务内操作要么全做,要么不做
  • C(onsistency):事务执行前后,数据状态是一致的
  • I(solation):可以隔离多个并发事务,避免影响
  • D(urability):事务一旦提交成功,数据保证持久性

复杂查询能力

3、单机存储

单个计算机节点上的存储软件系统,一般不涉及网络交互

本地文件系统

文件系统的管理单元:文件

文件系统接口:遵循VFS的统一抽象接口

Linux文件系统的两大数据结构:Index Node & Directory Entry。其中Index Node记录文件元数据,是一个文件的唯一标识,存储到磁盘上时inode的总数在格式化文件系统时就固定了。Directory Entry记录文件名、inode指针、层级关系等,是内存结构。

key-value存储

常见使用方式:put(k,v) & get(k)

常见数据结构:LSM-Tree,某种程度上牺牲读性能,追求写入性能

拳头产品:RocksDB

4、分布式存储

HDFS

特点:

  • 支持海量存储
  • 高容错性
  • 弱POSIX语义
  • 使用普通x86服务器,性价比高

Ceph

特点:

  • 一切皆对象
  • 数据写入采用主备复制模型
  • 数据分布模型采用CRUSH算法