认识存储和数据库
将需要记忆的数据持久化存进数据库
1.存储&数据库简介
存储系统:一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统
1.1 存储系统
储存: 储存是指在计算机系统中将数据存储起来以便以后访问和使用的过程。在计算机中,数据可以以多种形式进行储存,包括:
- 主存储器(RAM) :主存储器是计算机用于临时存储数据和程序的地方。它在计算机运行时被访问,但在断电时数据会丢失。
- 硬盘驱动器(HDD)和固态硬盘驱动器(SSD) :这些是长期存储数据的设备,用于保存文件、应用程序和操作系统。SSD通常比HDD更快,但也更昂贵。
- 可移动存储设备:包括USB闪存驱动器、SD卡等,用于在不同设备之间传输数据。
- 光盘:如CD、DVD、蓝光光盘等,用于存储音频、视频和软件。
系统特点:
对性能极其敏感
存储系统代码既“简单”(IO路径)又“复杂”(错误处理需要考虑多种情况)
软件架构容易受硬件影响
数据从应用到存储介质:
缓存贯穿整个存储体系
buffer cache作用:在跨软件层处以硬件友好方式进行层级交互
拷贝代价很昂贵,应该减少使用
需要有抽象统一的接入层
1.2数据库
数据库: 数据库是一种结构化的数据集合,用于有效地存储、管理和检索数据。数据库系统提供了一种方法来组织数据,以便于查询、更新和维护。常见的数据库管理系统(DBMS)包括:
- 关系型数据库:使用表格(也称为关系)来存储数据,其中每个表格包含一组具有相关属性的记录。常见的关系型数据库系统包括MySQL、PostgreSQL、Oracle等。
- NoSQL数据库:这些数据库不使用传统的关系表格来存储数据,而是使用不同的数据模型,如文档型、键值型、列型等。常见的NoSQL数据库包括MongoDB、Cassandra、Redis等。
- 图数据库:专门用于存储和处理图数据结构(节点和边),用于表示实体之间的关系。Neo4j是一个著名的图数据库。
关系型数据库和非关系型数据库组成
关系-集合
关系代数-对关系做运算的抽象查询语言
SQL-方便人类阅读的关系代数表达形式
关系型数据库是存储系统,同时在存储外展现出其他能力
非关系型数据库也是存储系统,但不要求严格的结构化
事务具有原子性 一致性 隔离性 持久性
2.主流产品剖析
2.1单机存储
单机存储是单个计算机节点上的存储软件系统,一般不涉及网络交互
本地文件系统和key-value存储
2.2分布式存储
分布式存储是在单机存储基础上实现分布式协议,涉及大量网络交互
分布式文件系统 分布式对象存储
HDFS:
支持海量数据储存
高容错性
弱POSIX语义
性价比高
Ceph:
一切皆对象
主备复制模型
CRUSH算法
2.3单机关系型数据库
单机关系型数据库是一种数据库系统,其数据存储在单个计算机上,通常以表格形式组织数据,并支持结构化查询语言(SQL)进行数据操作。这类数据库适用于小规模应用、原型开发以及个人项目,因为它们在单个计算机上运行,不涉及分布式计算和多台服务器的协作。
单机数据库:单个计算机节点上的数据库系统 事务在单个计算机实现也可能通过网络交互实现分布式交互
2.4单机非关系型数据库
单机非关系型数据库(Single-node NoSQL Database)是一种非关系型数据库系统,通常用于在单个计算机上存储和管理数据,而不涉及分布式计算和多台服务器的协作。这类数据库系统的设计旨在提供简单的数据存储和查询能力,适用于小规模应用或个人项目。
2.5分布式数据库
分布式数据库是一种数据库系统,将数据分布存储在多台服务器或节点上,通过分布式计算和协调来提供更高的性能、容量和可用性。分布式数据库可以用于大规模应用,能够处理海量数据并支持高并发访问。
单点容量有限,受硬件限制->存储节点池化,动态扩缩容
对于规模更新的弹性问题
3.新技术演进
SPDK 人工智能
高性能硬件:RDMA网络 、 persistent memory 、 可编程交换机 、 CPU/GPU/DPU