数据库简介| 青训营

84 阅读2分钟

数据库

使用数据库的目的:

  • 数据持久化
  • 校验数据合法性
  • 高效组织数据结构,用于写入内存

数据持久化:

  • 使用持久内存
  • 校验数据合法性
  • 使用高效数据结构组织内存写入

其他关键概念:

  • 持久内存

  • 缓存贯穿整体系统,拷贝昂贵且需要CPU

  • RAID(廉价磁盘冗余阵列):

    • RAID 0:简单组合,数据条带化存储,提高磁盘带宽,无容错
    • RAID 1:每块磁盘对应容错盘,空间利用率50%

关系型数据库

  • 关系:由集合构成,包含有序的偶对元素
  • 关系代数:抽象查询运算,包括交、并、笛卡尔积等
  • SQL(DSL):方便阅读的查询语言
  • 结构化数据,支持ACID事务,用表格存储

事务 ACID

  • A:原子性,要么全做要么不做
  • C:一致性,执行前后数据状态一致
  • I:隔离,隔离多个并发事务
  • D:事务提交后保证持久性

非关系型数据库

  • 半结构化,不必支持事务/SQL

存储与数据库

单机存储

  • Linux VFS接口,inode、文件目录项
  • 本地K-V存储,LSM-Tree追求写入,RocksDB顺序写入
  • 内存表满后转为Immutable,存入磁盘level0 SStable
  • 磁盘level0升级到level 1 SStable

分布式 HDFS

  • 支持海量数据存储,高容错性,弱POSIX语义
  • 管理节点→存储节点
  • Ceph:一切皆对象,主备复制模型,CRUSH hash权重随机选择存储服务器

单机数据库

  • 关系型数据库:Oracle、MySQL、PostgreSQL
  • 通用组件:查询引擎、事务管理、锁管理、存储引擎、主备同步
  • 内存数据结构:B-Tree、B+ Tree、LRU列表
  • 磁盘数据结构:Write-Ahead Log(Redo Log)、Page

节点更新时首先记录Redo Log,除此还有临时数据,磁盘内与内存内类型对应

非关系型数据库:MongoDB、Redis,交互方式不同,灵活的模式,尝试支持SQL子集和事务

分布式数据库

  • 单节点容量有限,受硬件限制,分布式池化,动态扩容

新技术演进

  • SPDK绕过操作系统内核,在用户态访问磁盘,避免系统调用开销
  • 绑定CPU核进行轮询,减少系统调用切换
  • 使用无锁数据结构,降低并发时的同步开销

AI

高性能硬件