这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记。
存储
(硬件)存储器的金字塔结构
塔尖:容量小,性能极高。
塔底:容量大,性能(读写,访问)极其不友好。如磁带
Persistent memory:中间级别
(软件)存储链路上的缓存很重要
RAID技术:单机高性能。高性价比。高可靠性。
单块磁盘写入性能小于多块磁盘的并发写入性能。
RAID0:多块磁盘的简单组合。条带化存储。无容错
RAID1::一块磁盘对应一块额外镜像盘。仅50%的利用。
RAID0+1:仅50%可用。但性能有RAID0.提高了很多
存储系统
单机存储系统:
文件存储
Index node:全局唯一标识,记录文件元数据
Directory entry: 全内存结构,记录Inode(为N:1),文件名,层级关系等。
KEY-VALUE存储
LSM-Tree。牺牲读性能,追求写入性能。
分布式存储系统:(网络交互)
分布式存储-HDFS
NAMEnode-DATAnode。文件形式,高容错,海量。 Hadoop-mapreduce(大数据计算)
分布式存储-Ceph
一切皆对象,主备复制模型,数据分布模型CRUSH算法(副本的存储计算):hash+权重+随机抽签。
单机DB:
RDB
Mysql.pgsql
非RDB
MongoDB,Redis,ES 没有模式,尝试支持事务/sql ES:面向文档,序列化JSON, index = 表,强依赖lucence,大量数据结构和算法(模糊/关联度搜索)
MongoDB:面向文档,序列化JSON ,ollection = 表,wierdTiger引擎,支持事务
Redis: 数据结构丰富,基于内存,AOF/RDB持久化
分布式DB:
解决(池化技术,动态扩容):容量问题,弹性问题(迁移难),性价比问题;
并发写:内存弹性:分布式事务:
新技术演进
Bypass OS kernel(SPDK,用户态访问磁盘,轮询,无锁数据结构) 硬件革命(RDMA网络,用户态内存映射到网卡;Persistent memory,介于SSD与内存之间) 智能存储格式转换(行存,列存)
关于mapreduce的一点补充学习
mapReduce:是一种编程模型,用于大规模数据集的并行运算。概念"Map(映射)"和"Reduce(归约)"即分而治之,是它们的主要思想。
总结思考
数据库和存储是后端十分重要的部分。分布式存储如TOS,靠着高性价比、高易用、海量应用的特性在企业中越来越有分量。