这是我参与「第三届青训营 -后端场」笔记创作活动的的第4篇笔记。
这节课老师从4个方面为我们介绍数据库系统,从浅入深,层层递进,首先是一些经典案例,然后介绍了数据库的简要知识,最后进行展望,为我们展望数据库的新技术。
经典案例
数据的前世今生
例子:APP用户注册的数据流动过程
graph TD
用户脑子里 --> 用户手机 --> 后端服务器 --> 数据库系统 --> 很有可能还有其他系统
潜在的问题
-
数据库怎么保证数据不丢?
-
数据库怎么处理多人同时修改的问题?
-
数据库只能处理结构化数据吗?
存储和数据库简介
存储系统
Q : 什么是存储系统?
A : 一个提供了读写和控制类接口,能够有效安全的把数据持久化的软件
存储系统不仅要跟存储介质打交道,存储系统也要跟内存和网络相关,内存需要使用合适的数据结构去组织数据,对于网络,存储系统它不是单机系统,利用网络将原有的单机系统做成多机系统。
特点:
性能敏感
受硬件影响大
数据是怎么从应用到存储介质的
·
-
缓存是很重要的,缓存会贯穿整个存储体系
-
拷贝很昂贵,应该尽量减少拷贝
-
硬件设备需要统一的接入层
数据库
关系型数据库
特点:
-
对结构化数据十分友好
-
支持事务(ACID)
-
支持复杂的的查询语言
非关系型数据库
- 对非结构化数据比较友好
主流产品剖析
单机存储
一般不涉及网络交互
本地文件系统
Linux文件系统的两大数据结构: Index Node & Directory Entry
Index Node : 记录文件元数据,包括id,大小,权限,磁盘位置等
Directory Entry: 记录文件名,层级关系
Key-vlaue存储
分布式存储
在单机存储系统上实现了分布式协议,涉及了大量网络协议
- HDFS:堪称大数据时代的基石
核心特点:
-
支持海量数据存储
-
高容错性
-
弱POSIX语义
-
性价比高
单机关系型数据库
单机非关系型数据库
- Elasticsearch
-
面向文档进行存储
-
文档可序列化成JSON,支持嵌套
-
存在index, index为文档的集合
-
实现了大量的搜索的数据结构和算法
- Redis
-
数据结构丰富
-
C语言实现,超高性能
-
主要基于内存,但支持AOF持久化
- MongoDB
-
面向文档进行存储
-
文档可序列化成JSON,支持嵌套
分布式数据库
单机数据库遇到了哪些问题和挑战?
- 容量
单点容量有限,受硬件条件影响
池化技术来解决容量问题
- 弹性
分布式可以解决弹性问题
- 性价比