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

99 阅读4分钟

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

一、本堂课重点内容:

  • 主流产品剖析
  • 新技术演进

二、详细知识点介绍:

经典案例

数据持久化

image.png

存在问题

  1. 数据库怎样保证数据不丢
  2. 数据库怎么处理多人同时修改的问题?
  3. 为什么用数据库,除了数据库还能存到别的存储系统吗?
  4. 数据库只能处理结构化数据吗?
  5. 有哪些操作数据库的方式,要用什么编程语言

存储&数据库简介

系统概览

Q:什么是存储系统?

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

系统特点

  • 作为后端软件的底座,性能敏感
  • 存储系统的软件架构,容易受硬件影响
  • 存储系统代码,既“简单”又“复杂”

存储器层次结构

image.png

数据怎么从应用到存储介质

image.png

  • [缓存] 很重要,贯穿整个存储体系
  • [拷贝] 很昂贵,应该尽量减少
  • 硬件设备五花八门,需要有抽象统一的接入层

RAID技术

Q:单机存储系统怎么做到高性能/高性价比/高可靠性

A:R(edundant)A(rray)ofI(nexpensive)D(isks)

RAID出现的背景:

  • 单块大容量磁盘的价格 > 多块小容量磁盘
  • 单块磁盘的写入性能 < 多块磁盘的并发写入性能
  • 单块磁盘的容错能力有限,不够安全

image.png
三种RAID技术(不止3种)

数据库

关系型和非关系型数据库特点

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

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

image.png

主流产品剖析

单机存储

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

本地文件系统

Linux经典哲学:一切皆文件 文件系统的管理单元:文件
文件系统接口:文件系统繁多,如Ext2/3/4,sysfs,rootfs等,但都遵循VFS的统一抽象接口
Linux文件系统的两大数据结构:Index Node & Directory Entry

key-value

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

分布式存储

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

Ceph

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

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

单机数据库

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

关系型数据库

商业产品Oracle称王,开源产品MySQL & PostgreSQL称霸

image.png

非关系型数据库

MongoDB、Redis、ElasticSearch三足鼎立

image.png image.png

Elasticsearch使用案例

image.png

分布式数据库

单机数据库遇到了哪些问题&挑战,需要引出分布式架构来解决?

  1. 容量
  2. 弹性
  3. 性价比 image.png

新技术演进

image.png

SPDK

Storage Performance Development Kit

image.png Bypass OS kernal已经成为一种趋势

AI & Storage

image.png

高性能硬件

image.png

三、课后作业:

实现一个(分布式)key - value 存储系统 要求:

  1. 基于本地文件系统实现,支持常用的put(k,v)、get(k,v)、scan_by_prefix(prefix)接口
  2. 支持存储server独立进程部署,支持跨进程或者网络访问
  3. IO操作做到低时延
  4. *可选:支持拓展成分布式架构,多台存储server组成一个分布式key-value存储系统,并保证全局数据一致性

四、课后个人总结:

这次课算是给存储和数据库体系来了一次概览,也算有所收获。了解到了更多的存储方式,和数据库,以及他们的作用是什么。

五、引用参考:

【后端专场 学习资料六】第五届字节跳动青训营 - 掘金 (juejin.cn)