认识存储与数据库 | 青训营笔记

91 阅读3分钟

整理了下数据库第一节课的笔记

数据的产生到持久化的过程

一条数据从产生,到数据流动,最后持久化的全生命周期。

数据的产生:用户从客户端进行输入

数据的流动,客户端 ->后端服务器 ->其它系统..等。
输入到数据库存储就称之为持久化

持久化过程中数据库需要做的操作有哪些

1.校验数据的合法性
2.在内存进行操作(用高效的数据结构组织数据)
3.写入存储介质(以寿命&性能有好的方式。)

潜在的问题

数据库如何保证数据不丢?
数据库如何处理多人同时修改的问题
为什么要用数据库?除了数据库还能存到别的存储系统么
数据库只能存储结构化数据么
有哪些操作数据库的方式,要用什么编程语言?\

什么是存储系统,什么是数据库系统

一个提供了读写、控制类接口,能够安全有效的把数据持久化的软件,就可以称为 存储系统

需要考虑的点

用户、介质、安全、网络等。

存储系统的特点

作为后端软件的底座,性能敏感
存储系统软件架构,容易受硬件影响
存储系统代码,既 简单 又 复杂

存储器的层级结构

内存友好的持久化相对较差,持久化优异的又无法兼顾内存效率友好(取中间的 Persistent Memory?)

软件层面如何将数据持久化介质

把数据写入到存储介质存在的问题

1、缓存 很重要,贯穿整个存储体系
2、拷贝 很昂贵,应该尽量减少
3、硬件设备五花八门,需要有抽象统一的接入层

RAID技术

背景

单块大容量磁盘的价格 > 多块小容量磁盘
单块磁盘的写入 < 多块磁盘的并发写入性能
单块磁盘的容错有限,不够安全。\

RAID 0 -> 为了提高性能

多块磁盘简单组合
数据条带化存储,提高磁盘带宽
没有额外的容错设计
没有对数据做冗余、备份之类的操作、写入磁盘会被切割成多个写入

RAID 1 -> 为了提高容错。

一块磁盘对应一块额外镜像盘
真实空间利用率仅50%
容错能力强。\

RAID 0 + 1

结合 RAID 1 和RAID 0
真实空间利用率仅50%
容错能力强,写入带宽好。\

数据库

数据库与存储系统的区别?

关系 = 集合 = 任意元素组成的若干有序偶对

反应了事务间的关系

关系代数 = 对关系作 运算的抽象查询语言

SQL = 一种DSL(领域专用语言) = 方便人类阅读 的关系代数表达形式

关系型数据库特点

关系型数据库是存储系统,但是在存储之外,又发展出 其他能力

结构化友好 支持事务 支持复杂查询语言。

关系型数据库

非关系型数据库

也是存储系统 一般不要求严格的结构化

半结构化数据友好 只能支持 事务 可能支持 复杂查询语言

数据库 与经典存储-在结构化数据关系上的比较

用关系型数据库存储结构化数据简单自然-以表的形式

用经典存储结构存储结构化数据需要我们自行定义(描述数据有多等等),自行管理结构-文件系统

事务上的比较

而经典数据库没有事务这个概念

复杂查询能力

经典存储要通过编程语言写一堆复杂的代码要写逻辑,分析、统计等等。

而数据库相对于来说要简单灵活。

数据库使用方式

SQL语言