小白笔记d3|带你认识存储和数据库|青训营笔记

57 阅读3分钟

d3认识存储和数据库

这一部分没涉及代码实现,听得很快

经典案例

注册数据-后端服务器-数据库系统-其他系统

存储系统

存储系统:一个提供了读写、控制类接口,摒弃能够安全有效的把数据持久化的软件 特点:性能敏感;容易受硬件影响;代码简单又复杂(考虑到软件和硬件存在的问题,容易受硬件的影响) 缓存:很重要,贯穿整个存储体系,软件使用cache满足不同软件/硬件的读写要求 拷贝:消耗cpu性能,非常昂贵,应该尽量减少 接口:统一接口,满足不同硬件的要求

RAID(redundant array inexpensive disks)系统

  • RAID0: 磁盘简单组合,没有容错设计,提高带宽
  • RAID1: 一块磁盘对应一块一块镜像盘,空间率50%
  • RAID0 + 1:提高带宽,利用率50%,容错率高

数据库

数据库&存储系统?

  • 关系性数据库 是存储系统,但是在存储之外,发展出其他能力(结构化数据友好,支持事务(ACID),支持复杂的查询语言(sql))
    • 存储:关系型数据库存储数据以表的形式,经典存储系统需要写入文件并自行定义管理结构
    • 事务(ACID):原子性,一致性,隔离性,持久性
    • 数据查询操作比较简单,经典存储结构查询很复杂
  • 非关系型数据库也是存储系统,不要求严格的结构化(半结构化数据友好,可能支持数据/复杂查询语言)
  • 关系(relation)= 集合 = 结合=任意元素组成的若干偶序对
  • sql(domain specific language) = 方便人类阅读的关系代数表达形式

主流存储产品剖析

单机存储

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

本地文件系统

文件系统的管理单元:文件 文件系统结构:都遵循VFS的统一抽象结构 linux文件系统的两大核心数据结构:

  • index Node(记录文件元数据,如Id, 大小,权限, 磁盘位置等,index是一个文件的唯一标识,会被存储到磁盘上,index总数在格式化文件系统时就被固定了),
  • directory entry :记录文件名,inode指针,parent关系;dentry是内存结构,与inode的关系是N:1(hardlink) linux:一切皆文件

key-value

常见使用方式: put(k, v), get(k) 常见数据结构:lsm-tree, 因为在内存/磁盘中都是顺序写入,某种程度上牺牲读性能,追求写入性能 rocksDB

分布式存储

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

HDFS

支持海量数据存储(文件形式),高容错性,弱posix语义, 使用普通x86服务器性价比高

ceph

一切皆对象:对象接口,块接口,文件接口 数据写入采用:数据主备复制模型 数据分布模型采用CRUSH算法

单机关系型数据库

单个计算机节点上的数据库系统,事务在单机内执行,也可能通过网络交互实现分布式事务 关系型数据库:

单机非关系型数据库

redis高性能,不支持sql, mongodb灵活面向文件, Elasticsearch 灵活,面向文件,支持模糊搜索

分布式数据库

单机数据库容量/弹性/性价比遇到了问题

  • 容量: 存储节点池化(和数据库通过网络交互),动态扩缩容。db存储容量超过阈值之后,存储池自动扩容
  • 弹性:单机数据库扩容缩容都很困难
  • 性价比:单机数据库cpu浪费严重,分布式可以根据需要分配不同的server

新技术

软件架构变更:By pass over kernel AI增强:数据存储格式转变(e.g.根据实时分析进行行列混存) 硬件:存储介质/计算单元/网络硬件 变更