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

93 阅读3分钟

存储&数据库

1.存储系统

  • 存储系统:一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统
  • 系统特点:性能敏感、容易受硬件影响、代码既简单有复杂
  • 存储器层级结构
  • 数据怎么从应用到介质

  • RAID技术

    RAID0:多块磁盘组合、数据条带化存储提高带宽、没有额外的容错设计

    RAID1:真实利用率仅50%、容错率强

    然后就是RAID 0+1两个结合起来

    特点:高性能/高性价比/高可靠性

2.数据库

  • 分为关系型数据库和非关系型数据库
  • 关系型数据库是存储系统,但在存储之外,又发展出其它能力(结构化数据友好、支持事务ACID、SQL支持复杂查询语言)

  • 非关系型数据库也是存储系统,但是一般不要求严格的结构化,(半结构化数据友好、可能支持事务、可能支持复杂查询语言)

  • 数据库VS经典存储:

    表形式 VS 自行定义、管理结构

数据库支持事务

数据库查询灵活、简单,经典存储僵化、复杂

3.主流产品剖析

1.单机存储

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

  • 分类:本地文件系统,key-value存储

  • 本地文件系统:

    Linux经典哲学:一切皆文件

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

    文件系统接口:文件系统繁多,如Ext2/3/4,sysfs,rootfs等,但都遵循VFS的统一抽象接口

    Linux文件系统的两大数据结构:Index Node & Directory Entry

  • key-value存储:

    世间一切皆key-value

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

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

    拳头产品:RocksDB

2.分布式存储

  • 分布式存储 = 在单机存储基础上实现了分布式协议,涉及大量网络交互
  • 分类:分布式文件系统、分布式对象存储

  • 分布式文件系统--HDFS

    HDFS:堪称大数据时代的基石

    时代背景:专用的高级硬件很贵,同时数据存量很大,要求超高吞吐

    核心特点:支持海量数据存储、高容错性、弱POSIX语义、使用普通x86服务器,性价比高

  • 分布式对象存储--Ceph

    Ceph:开源分布式存储系统里的[万金油]

    Ceph核心特点:一套系统支持对象接口、块接口、文件接口,但是一切皆对象,数据写入采用主备复制模型,数据分布模型采用CRUSH算法(HASH+权重+随机抽签)

3.单机关系型数据库

  • 单机数据库 = 单个计算机节点上的数据库系统

    事务在单机内执行,也可能通过网络交互实现分布式事务

4.单机非关系型数据库

4.分布式数据库

  • 从单机到分布式解决了:

    容量:可动态扩缩容

    弹性:迁移到cpu、disk、memory配套的更大的设备

    性价比:可在cpu利用率低下,但磁盘不够用,可弄一直存储池,disk~=0