数据库存储
存储系统特点
- 作为后端底座,性能敏感
- 存储系统软件框架,容易受硬件影响
- 存储系统代码,既“简单”又复杂
数据库存储系统非常考虑性能。存储系统的存储器层级结构约为金字塔型,越往上速度越快,价格越贵。
缓存是很重要的,贯穿整个存储体系。
存储系统与数据库区别
关系型数据库和非关系型数据库
- 关系型数据库:结构化好,支持事务,支持复杂的查询语言
- 非关系型数据库:半结构化数据友好,可能支持事务,可能支持复杂的查询语言
结构化数据管理
经典存储系统顺序化存取,无时无刻考虑byte. 数据库excel表格存取
数据库的事务能力:
- A(tomicity),事务内的操作要么全做,要么不做(不会只执行一半)
- C(onsistency),事务执行前后,数据状态是一致的(执行前后数据一致,转入100是100,不会变为50)
- I(solation),可以隔离多个并发事务,避免影响
- D(urability)),事务一旦提交成功,数据保证持久性
关系型查询比较灵活简洁,传统比较僵化和复杂
linux文件系统
Linux一切皆文件:文件接口繁多,但都遵循VFS统一抽象接口,分为两大数据结构:Index Node和Directory Entry
IN记录文件的元数据,如id,大小,权限,磁盘位置等。inode是一个文件的唯一标识,会被存储到磁盘上,inode的总数在格式化文件系统时就固定。
dentry是记录文件名、inode指针、层级关系等。它是内存结构,与inode的关系的是n:1
key-value存储:put(k,v)&get(k)。某些程度上牺牲读取性能,追求写入性能
分布式存储系统:实现了分布式协议。分为分布式文件系统和分布式对象存储
-
hdfs
- 支持海量数据存储,高容错性,使用普通的x86服务器性价比高
-
ceph
- 一切皆对象,采用主备复制模型,采用CRUSH算法
单机数据库:单个计算机节点上的数据库系统
-
关系型数据库:Oracle和MySQL
-
非关系型数据库:MongoDB、Redis、Elasticsearch
- 数据结构千奇百怪。
分布式数据库
-
容量受限 -> 存储节点池化,动态扩充