数据库存储系统 | 青训营笔记

71 阅读2分钟

什么是存储系统?

实现读写、安全有效的把数据持久化的计算机系统

  • 软件架构容易受到硬件影响
  • 性能要求高
  • 复杂的代码影响性能

Linux文件系统

在Linux中,一切皆文件,这里的一切不仅仅是普通的磁盘文件,还包括I/O设备,socket等都被作为文件挂载在文件系统上进行管理

key-value存储

基本使用:put(k,v) get(k)

数据结构:LSM-tree;牺牲读性能,追求写性能

分布式存储

在单机存储的基础上增加了分布式协议,涉及了大量的网络交互

  • 分布式文件系统
    • HDFS
      • 大存储
      • 高容错
      • 性价比高
      • 支持弱POSIX
    • Ceph --- 开源的,统一的分布式存储系统
      • 数据写入采用主备复制模型
      • 数据分布模型采用CRUSH算法
      • 同时提供块设备存储、文件系统存储和对象存储
  • 分布式对象系统

单机数据库 - 关系型数据库

  1. 通用组件:
  • Query Engine - 负责解析query,生成查询计划
  • Txn Manager - 负责事务并发管理
  • Lock Manager - 负责锁相关的策略
  • Storage Engine - 负责组织内存/磁盘数据结构
  • Replication - 负责主备同步
  1. 数据结构:B-Tree、B+-Tree、LRU List

MongonDB

  • 面向文档存储
  • 可序列化为JSON/BSON
  • 支持高并发读写操作
  • 支持自动分片和数据复制,通过水平拓展提高性能

Elasticsearch

  • 基于开源的全文档搜索和分析引擎
  • 高效的搜索分析能力,支持模糊搜索、聚合、排序
  • 提供了简单易用的RESTful

Redis

  • 基于内存的存储方式,实现高读写性能
  • 支持多种数据结构:string、set、list、hash、stream
  • 通过AOF和RDB实现持久化
  • 单线程模型,但支持多路复用技术

分布式数据库

  • 通过存储节点池化、动态扩缩容弥补单机数据库受硬件限制,容量有限的问题
  • 通过数据划分、数据数据复制、动态扩容和收缩、升级硬件等措施解决弹性问题