这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记,今天讲一下数据与数据库。
数据与数据库
数据是系统运行的血液,系统依靠数据进行驱动,大量数据的管理问题催生了数据库这一繁杂的软件生态 数据库需要保证
- 数据不丢失
- 多人修改不丢失
- 结构化与非结构化数据
- 数据操作方式
存储系统
存储系统是数据库的基础,所谓存储系统是一个提供了读写、控制类接口,能够安全有效地把数据持久化地软件。其作为后端软件的底座,性能敏感,且容易受到硬件影响。 存储系统中有两个重要的概念
- 拷贝:对数据进行复制,存在传输不对等
- 缓存:为了解决传输不对等问题设计的缓冲区
数据库
关系OR非关系
- 关系
- 关系模型:1970s
- 关系代数:交并补...
- SQL: DSL
- 关系型数据库:
- 结构化数据友好
- 支持事务
- 支持复杂查询
- 非关系型数据库:
- 半结构化数据友好
- 可能支持事务
- 可能支持复杂查询
- 存储差异
- 关系型数据库:以表的关系结构化存储
- 非关系型数据库:聚合存储,如JSON等
结构化存储
- 存储格式:表形式管理,由存储引擎确定的自定义数据结构
- 事务能力:ACID
- 复杂查询:DSL
数据库产品
单机存储
- Linux文件系统
- KV存储:一切都是KV
- put get
- 数据结构:LSM-TREE
- 产品:RocksDB
- 关系型数据库:
- Oracle
- MySQL
- PostgreSQL
- 非关系型数据库
- MongoDB
- Redis
- ElasticSearch
分布式存储
- HDFS:大数据时代基石
- 海量存储
- 高容错
- 弱POSIX语义
- 性价比高
- Ceph:开源分布式存储系统
- 一切都是对象
- 主备复制模式
- CRUSH算法
单击到分布式
- 容量问题
- 弹性扩展问题
- 性价比问题
- 多写、内存弹性、分布式事务
新技术
- SPDK:绕过内核,直接从用户态访问磁盘,无锁
- AI:行存、列存智能决策
- 硬件
- RDMA:直接内存访问
- 持久化内存
- 可编程交换机
- CPU/GPU/DPU