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

144 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第4篇笔记。

简介

什么是存储系统

提供了读写、控制类接口,能够安全有效地把数据持久化的软件

特点

  • 性能敏感
  • 易受硬件影响
  • 代码兼具简单与复杂

RAID技术

R(edundant) A(rray) of I(nexpensive) D(isks)

关系型数据库

关系型数据库是存储系统,但是在存储之外,又发展出其他能力

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

非关系型数据库

非关系型数据库也是存储系统,但是一般不要求严格的结构化

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

主流产品

单机存储

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

本地文件系统

  • 管理单元:文件
  • 接口:Ext2/3/4,sysfs,rootfs等,遵循VFS的统一抽象接口
  • Linux文件系统的两大数据结构:Index Node & Directory Entry

key-value存储

  • 常见使用方式:put(k, v) & get(k)
  • 常见数据结构:LSM-Tree,某种程度上牺牲读性能,追求写入性能
  • RocksDB

分布式存储

在单机存储基础上实现了分布式协议,涉及大量网络交互

HDFS特点: -支持海量数据存储

  • 高容错性
  • 弱POSIX语义
  • 使用普通x86服务器,性价比高

新技术

Bypass OS kernel已成为一种趋势

  • Kernel Space -> User Space
  • 中断 -> 轮询
  • 无锁数据结构

RDMA网络

  • 传统的网络协议栈,需要基于多层网络协议处理数据包,存在用户态 & 内核态的切换
  • RDMA不经过传统的网络协议栈,可以把用户态虚拟内存映射给网卡

可编程交换机

  • P4 Switch,配有编译器、计算单元、DRAM,可以在交换机层对网络包做计算逻辑。
  • 在数据库场景下,可以实现缓存一致性协议等