前言
数据库分类:
- 关系型数据库:把数据结构化
- 非关系型数据库:数据没有具体的结构
主流的数据库产品
单机存储
单机存储 = 单个计算机节点上的存储软件系统,一般不涉及网络交互
本地文件系统
Linux经典哲学:一切皆文件
管理单元:文件
文件系统结构:文件系统繁多,但都遵守VFS的统一抽象接口
Linux文件系统的两大数据结构:Index Node&Directory Entry
key-value存储
创建使用方法:Put和Get
常用数据结构:LSM-Tree,牺牲读性能,追求写入性能
LSM-Tree的结构,感兴趣的可以额外搜一下
分布式存储
分布式存储=在单机存储的基础上实现了分布式协议,涉及大量网络互交
- 分布式文件系统
- 分布式对象存储
分布式文件系统HDFS
大数据时代的基石
核心特点:
- 支持海量数据存储
- 高容错性
- 弱POSIX语义
- 使用普通的X86服务器,性价比高
分布式存储——Ceph
Ceph:开源分布式存储系统里的万金油
核心特点:
- 一套系统欧冠支持对象接口,块接口、文件接口,一切皆对象
- 数据写入采用主备复制模型
- 数据分布模型采用
CRUSH算法
单机数据库
单机数据库=单个计算机节点上的数据库系统
事务在单机内执行,页可能通过网络交互实现分布式事务
关系型数据库
商业产品Oracle称王,开源产品MySQL和PostgreSQL
关系型数据库的通用组件:
非关系型数据库
MongoDB、Redis、Elasticsearch三足鼎立
非关系型数据库交互方式各不相同
都在尝试支持SQL(子集)和“事务”
Elasticsearch:天然能做模糊搜索,所以它是天生的搜索引擎
单机数据库遇到的问题和挑战
- 容量
- 弹性
- 性价比
所以需要分布式数据库
分布式数据库
存储节点做池化,在存储池中有很多的磁盘,他会自动的扩缩容
解决了性价比的问题