存储和数据库 | 青训营笔记

51 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天

数据库的经典问题

  • 保证数据不丢
  • 多人修改
  • 别的存储系统
  • 只能处理结构化数据吗
  • 有哪些操作方式

存储系统

特点

  • 性能敏感
  • 受硬件影响
  • io路径上要简单,但是在异常处理上要复杂

数据从应用到介质

  • 缓存很重要,贯穿整个体系
  • 拷贝很昂贵,应该尽量减少
  • 为五花八门的硬件统一抽象的接口

关系型数据库的特点

  • 结构化数据友好
  • 支持事务
  • 支持SQL复杂语句

非关系型数据库的特点

半结构化数据友好 可能支持事务 可能支持复杂语句

主流的数据库

单机存储

本地文件系统

Linux 的一切皆文件

key-value数据库 rocksDB

一切皆k-v

  • 追求写入速度
  • 牺牲了读取性能

分布式存储系统

在单机的基础上,实现了分布式协议。涉及大量的网络交互

分布式文件系统 (HDFS)

特点

  • 支持海量存储
  • 高容错
  • 弱POSIX语义
  • x86机器,性价比高

分布式文件系统 ceph

特点

  • 一切皆对象
  • 采用主备复制
  • 数据分布模型采用CRUSH算法 HASH+权重+随机抽签

单机数据库

关系型数据库

  • mysql
  • postgresql

非关系型

  • mongoDB
  • redis
  • elasticsearch

总结 存储系统

  • 块存储 最底层的系统,接口朴素
  • 文件系统 日常使用最广泛的系统,接口友好,有多种的实现方式
  • 对象存储:公有云上的常见的存储,immutable
  • k-v存储 形式比较灵活,有大量的开源非开源产品

数据库系统

  • 关系型数据库 基于关系和关系代数,支持事务和SQL语句,用户友好
  • 非关系型 结构比较灵活,针对不同的场景都能使用

分布式架构

  • 数据分布策略:决定数据怎么分不到物理节点,是否均匀,能否高性能
  • 数据复制协议 影响io的路径,常见的机器故障处理方法
  • 分布式事务协议 多节点共同保证事务的ACID特性