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

54 阅读2分钟

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

今天主要的学习内容是存储,存储是后端开发重要的一环,随着大数据时代的到来,存储的优化也变得尤为重要,因此我们需要不断的去了解更新存储的发展趋势,才能更好的适应需求

存储系统

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

存储系统的特点

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

存储系统——RAID技术

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

RAID出现的背景

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

数据库

关系型数据库

关系型数据库是存储系统,但是在存储之外,又发展出其他能力:结构数据友好,支持事务,支持复杂查询语言

非关系型数据库

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

事务特性

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

存储

单机存储=单个计算机节点上的存储系统,一般不涉及网络交互
分布式存储=在单机存储基础上实现了分布式协议,涉及大量网络交互
单机数据库=单个计算机节点上的数据库系统,事务在单机内执行,也可能通过网络交互实现分布式事务
分布式数据库=存储节点池化,动态扩缩容

新技术演进——SPDK

避免syscall带来的性能损耗,直接从用户态访问磁盘
磁盘性能提高后,中断次数随之上升,不利于IO性能
SPDK poller可以绑定特定的cpu核不断轮询,减少cs,提高性能
无锁数据结构:使用Lock-free queue,降低并发时的同步开销