大一的时候上过《数据库概论》这门课,印象中只是学了很多文字理论,并未对其原理有深入了解。我将在本篇笔记对《带你认识存储&数据库》这节课的内容做一个梳理。
一、存储系统
存储系统:一个提供了读写、控制类接口,能够安全有效的把数据持久化的软件,就可以称为存储系统。
系统特点
- 作为后端软件的底座,性能敏感
- 存储系统软件架构,容易受硬件影响
- 存储系统代码,既“简单”又“复杂”。
存储器层级结构
- 金字塔塔尖——一类特定的存储设备,容量小但性能高
- Persistent Memory——一种兼顾持久化介质与内存介质的新型存储器
- 金字塔塔底——容量非常大,相反读写速度非常慢
RAID技术
简称磁盘阵列。其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。是单机存储系统实现高性能、高性价比、高可靠性的方式。
其优点有:
- 增强数据集成度
- 增强容错功能
- 增加处理量或容量
数据库
数据库有关系型数据库和非关系型数据库,二者都是存储系统。但前者除了存储功能外还有结构化数据友好、支持事务、支持复杂查询语言的特点。
数据库的优点
- 结构化数据管理:以表的形式写入关系型数据库。
- 支持事务
- A(tomicity),事务内的操作要么全做,要么不做
- C(onsistency),事务执行前后,数据状态是一致的
- l(solation),可以隔离多个并发事务,避免影响
- D(urability),事务一旦提交成功,数据保证持久性
- 支持复杂查询语言
SQL常用语句
查询数据:SELECT语句
例如:SELECT * FROM 表名;
插入数据:INSERT语句
例如:INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);
更新数据:UPDATE语句
例如:UPDATE 表名 SET 列名1 = 值1, 列名2 = 值2 WHERE 条件;
删除数据:DELETE语句
例如:DELETE FROM 表名 WHERE 条件;
创建表:CREATE TABLE语句
例如:CREATE TABLE 表名 (列名1 数据类型1, 列名2 数据类型2, ...);
修改表结构:ALTER TABLE语句
例如:ALTER TABLE 表名 ADD 列名 数据类型;
聚合查询:GROUP BY语句
例如:SELECT 列名1, SUM(列名2) FROM 表名 GROUP BY 列名1;
排序:ORDER BY语句
例如:SELECT * FROM 表名 ORDER BY 列名 ASC/DESC;
连接表:JOIN语句
例如:SELECT 表1.列名, 表2.列名 FROM 表1 JOIN 表2 ON 表1.列 = 表2.列;
子查询:子查询语句
例如:SELECT 列名 FROM 表名 WHERE 列名 IN (SELECT 列名 FROM 表名);
主流产品解析
单机储存
单机储存:单个计算机节点上的存储软件系统,一般不涉及网络交互。
- 本地文件系统
- key-value存储
分布式储存
分布式储存:在单机系统上实现了分布式协议,涉及大量网络交互。
- HDFS:
- 支持海量数据存储
- 高容错性
- 弱POSIX语义
- 使用普通x86服务器,性价比高
- Ceph:
- 一套系统支持对象接口、块接口、文件接口
- 但是一切皆对象
- 数据写入采用主备复制模型数据
- 分布模型采用CRUSH算法
单机关系型数据库与单机非关系型数据库
单机数据库 :单个计算机节点上的数据库系统事务在单机内执行,也可能通过网络交互实现分布式事务.
- 关系型数据库
- Oracle
- MySQL
- PostgreSQl
- 非关系型数据库
- MongoDB
- Redis
- Elasticsearch
分布式数据库
- 解决容量问题
- 解决弹性问题
- 解决性价比问题
写在最后
本节课对于我来说有太多的抽象概念,相信在日后学习中学到更多存储、数据库相关的知识,在实践中逐渐理解这些抽象的概念。