数据的持久化
校验数据的和合法性 →修改内存→写入存储介质
But?
如何保证数据不丢?
如何处理多人同时修改?
除了数据库还能用别的系统吗?
数据库只能处理结构化数据吗?
怎么操作数据库?要用什么编程语言?
存储系统 & 数据库系统
存储系统:提供读写、控制类接口,能安全地把数据持久化的软件
系统特点:性能敏感,容易受硬件影响,代码既简单又复杂
RAID技术
出现的背景:对高性价比、高性能、高可靠性的需要
RAID0:块磁盘组合,数据条带化设计,没有额外容错设计
RAID1:一块磁盘对应一块额外的镜像盘,真是空间仅50%,容错能力强
RAID0+1:真是空间利用率仅50%,容错能力强,写入带宽好
数据库系统
分为关系型和非关系型
“关系”是什么?反映了事物之间的关系
关系代数:对关系做运算的抽象逻辑语言
SQL=一种DSL:对关系进行操作的语言
关系型数据库的特点:结构化数据友好,支持事务(ACID),支持复杂的查询语言
非关系型数据库的特点:一般不要求严格的结构化,对半结构化数据友好,可能支持事务,可能支持复杂的查询语言
事务?:
👉A原子性,要么都做,要么都不做。
👉C一致性,例如转账,B1000元,A0元,B给A转账500块,事务结束后,A500元,B500元.
👉I并发性:多个并发的事务之间不会相互影响。
👉D持久性:事务一旦成功,数据保持持久性。
数据库的使用方式
👉常用SQL操作:Insert,Update,Select,Delete,Where子句,GroupBy,OrderBy
👉对数据定义进行修改:Create usr,Create database,Create table,Alter table
主流存储产品剖析
单机存储
单个计算机存储软件上的存储软件系统
本地文件系统 Linux的经典哲学:一切皆文件
kv存储系统:常用使用方式put(k,v)&get(k) eg.RocksDB
分布式存储
HDFS:大数据时代的基石
支持海量数据存储,高容错性,弱POSIX定义 ,使用基础X86服务器性价比高
Ceph:开源分布式存储里的万金油
一切皆对象, 数据写入采用主备复制模型, 分布模型采用CRUSH算法
单机关系型数据库
Oracle MySQL PostgreSQL
单机非关系型数据库
MongoDB,Radis,Elasticsearch