这是我参与「第五届青训营」伴学笔记创作活动的第6天
存储系统
什么是存储系统
一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统。
存储系统的特点
- 作为后端软件的底座,性能敏感;
- 存储系统软件架构,容易受硬件影响;
- 存储系统代码,既简单又复杂;
层级结构
存储层次是在计算机体系结构下存储系统层次结构的排列顺序。每一层于下一层相比都拥有较高的速度和较低延迟性,以及较小的容量(也有少量例外,如AMD早期的Duron CPU)。大部分现今的中央处理器的速度都非常的快。大部分程序工作量需要存储器访问。由于高速缓存的效率和存储器传输位于层次结构中的不同等级,所以实际上会限制处理的速度,导致中央处理器花费大量的时间等待存储器I/O完成工作。
大部分电脑中的存储层次如下四层:
-
磁盘存储–需要成千上万个周期,容量非常大。
数据库
定义
关系 = 集合 = 任意元素组成的若干有序偶对
反映了事物之间的关系
关系代数 = 对关系作运算的抽象查询语言
SQL = 一种DSL(Domain Specific Language) = 方便人类阅读的关系代数表达形式
非关系型数据库也是存储系统,但是一般不要求严格的序列化
分类
非关系型数据库
Elasticsearch,MongoDB,Redis三足鼎立
Elasticsearch面向文档存储,可序列化成json形式,支持嵌套。
MongoDB:面向文档存储,文档可形式化json/bson,4.0后开始支持事务。
redis:最广发最普及,使用c语言实现,单线程+I/O复用,性能很好,数据结构丰富。
分布式数据库
单机数据库向分布式数据库发展的原因:
容量:单机容量有限,受硬件限制->节点存储池,动态扩缩容。
弹性:实现cpu和内存根据需要进行弹性的扩大和缩小。
性价比:相对单机系统更高,可以有效地组织廉价的服务器。