数据的潜在问题
- 数据这么保证数据不丢?
- 数据库怎么处理多人同时修改的问题?
- 为什么用数据库,除了数据库还能存到别的存储系统吗?
- 数据库只能处理结构化数据吗?
- 有哪些操作数据库的方式,要用什么编程语言?
存储系统——系统概述
什么是存储系统?
一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统
存储系统——存储器层级结构
存储系统——数据怎么从应用到存储介质
- 缓存很重要,贯穿整个存储体系
- 拷贝很昂贵,应该尽量去减少
- 硬件设备五花八门,需要有抽象统一的接入层
存储系统 —— RAID技术
单机促成农户系统怎么做到 高性能/高性价比/高可靠性
R(edundant)A(rray) of I(nexpensive) D(isks)
RAID出现的背景:
- 单块大容量磁盘的价格>多块小容量磁盘
- 单块磁盘的写入性能 < 多块磁盘的并发性能
- 单块磁盘的容错能力,不够安全
数据库——概述
- 数据库——关系型数据库贴特点
- 关系型数据库是存储系统,但是在存储之外,又有发展出其它能力。
- 数据库——非关系型数据库贴特点
- 非关系数据库也是存储系统,但是一般不要求严格的结构化
主流产品剖析
Lunix经典哲学:一切皆文件
- 文件系统的管理单元:文件
- 文件系统接口:文件系统繁多,如Ext2/3/4,sysfs,rootfs等,但都遵循VFS的统一抽象接口
- Lunix文件系统的两大数据结构:IdexNode & Directory Entry
单机存储——key-value存储
世间一切皆key-value ——key是你身份证,value是你的内涵
- 常见使用方式:put(k,v) & get(k)
- 常见数据结构:LSM——Tree,某种程度上牺牲读性能,追求写入性能
- 拳头产品: RocksDB
分布式存储——HDFS
HDFS:堪称大数据时代的基石 时代背景: 专用的高级硬件,同时数据量很大,要求超高吞吐
HDFS核心特点:
- 支持海量数据存储
- 高容错性
- 弱POSIX语义
- 使用普通x86服务器,性价比高
分布式存储——Ceph
Ceph:开源分布式存储系统的里万金油
Ceph的核心特点:
- 一套系统支持对象接口、块接口、文件接口,但是一切皆对象
- 数据写入采用主备复制模型
- 数据分布式采用CRUSH算法
单机数据库
- 关系数据库
- 商业产品Oracle称王,开源产品MySQL & PostgreSQL称霸
- 非关系数据库
- MongoDB、Redis、Elasticsearch三足鼎立