整理了下数据库第一节课的笔记
数据的产生到持久化的过程
一条数据从产生,到数据流动,最后持久化的全生命周期。
数据的产生:用户从客户端进行输入
数据的流动,客户端 ->后端服务器 ->其它系统..等。
从 输入到数据库存储就称之为持久化。
持久化过程中数据库需要做的操作有哪些
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语言