带你认识存储 & 数据库

经典案例

一条数据从产生,到数据流动,最后持久化的全生命周期

用户脑子 =》 后端服务器 =》 数据库 (《=》其他系统)

数据的持久化

注册“小明”,检查是否存在(合法性),用数据架构组织数据(修改内存),写入硬件(写入存储介质)

潜在问题

Q、数据库怎么保证数据不丢?

​ 数据库通常使用事务日志和多副本存储来保证数据可靠性。即使发生故障,也能通过日志恢复数据。

Q、数据库怎么处理多人同时修改的问题?

​ 数据库通过事务的隔离性锁机制来确保并发访问的正确性。

Q、为什么用数据库,除了数据库还能存到别的存储系统吗?

​ 数据库提供更强的数据管理能力(如事务、索引、高效查询),但对于特定场景,也可以使用文件系统、分布式存储等替代。

Q、数据库只能处理结构化数据吗?

​ 不是,关系型数据库擅长处理结构化数据,而非关系型数据库可以处理半结构化或非结构化数据(如JSON、图像)。

Q、有哪些操作数据库的方式,要用什么编程语言?

​ 常用SQL操作关系型数据库,或使用数据库的SDK(Java、Python、Go等)与其交互;非关系型数据库通常提供RESTful API或自定义协议。

存储 & 数据库简介

数据库和存储系统背景知识,它们是什么,有哪些特点?

用户、硬件、内存、网络

性能要求高、代码简单又复杂、容易受硬件影响

性能要求高:后端软件的底座

代码简单又复杂:考虑到软件硬件可能会出错各种异常情况

易受硬件影响:软件顺应硬件的变革而变

存储器层级结构

存储器:容量、读取速度

数据怎么从应用到存储介质

【缓存】很重要,贯穿整个存储体系

【拷贝】很昂贵,应该尽量减少

需要有抽象统一的接口层

RAID技术用于存储系统的容错和性能优化

存储系统和数据库的区别

存储系统:关注数据的存储与检索,如文件系统、分布式存储。

数据库:强调数据管理与关系处理,支持复杂的查询和事务。

ACID

原子性、一致性、隔离性、持久性

  • 原子性:事务要么完全完成,要么完全失败。
  • 一致性:事务结束后,数据库从一个一致状态转到另一个一致状态。
  • 隔离性:并发事务互不干扰。
  • 持久性:事务提交后,数据永久存储。

主流产品剖析

主流的存储 & 数据库系统架构,经典产品剖析

单机存储

本地文件系统

  • Linux哲学“一切皆文件”,通过索引节点(Index Node)和目录项(Directory Entry)组织数据。

Key-Value存储

  • 采用LSM-Tree结构优化写入性能,如LevelDB。

分布式存储

在单机存储基础上实现分布式协议,涉及网络交互

  • HDFS:Master-Slave架构,适合大文件存储。
  • Ceph:分布式对象存储,支持块存储和文件系统。

单机关系型数据库

Oracle:企业级数据库,功能强大但成本高。

MySQL:开源数据库,易用且性能优良。

PostgreSQL:支持复杂查询和扩展功能。

单机非关系型数据库

MongoDB:文档型数据库,灵活处理JSON数据。

Redis:高性能Key-Value数据库,支持缓存和持久化。

Elasticsearch:全文检索数据库,适合处理日志数据和搜索需求。

交互方式各不相同

scheme相对灵活

分布式数据库

解决单机容量和性能限制问题

容量、弹性、性价比

TiDB、CockroachDB

新技术演进

老系统结合新技术,如何持续演进走向新生?

硬件革命

  • NVM(非易失性存储器):结合DRAM和SSD的优势。
  • SPDK(存储性能开发工具包):高性能存储访问优化技术。

AI增强

  • 智能查询优化器、数据分析加速器。

软件架构变革

  • 从单体架构到微服务、Serverless等现代架构。