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

96 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第4篇笔记。

这节课老师从4个方面为我们介绍数据库系统,从浅入深,层层递进,首先是一些经典案例,然后介绍了数据库的简要知识,最后进行展望,为我们展望数据库的新技术。

经典案例

数据的前世今生

例子:APP用户注册的数据流动过程

graph TD
用户脑子里 --> 用户手机 --> 后端服务器 --> 数据库系统 --> 很有可能还有其他系统

潜在的问题

  • 数据库怎么保证数据不丢?

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

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

存储和数据库简介

存储系统

Q : 什么是存储系统?

A : 一个提供了读写和控制类接口,能够有效安全的把数据持久化的软件

存储系统不仅要跟存储介质打交道,存储系统也要跟内存和网络相关,内存需要使用合适的数据结构去组织数据,对于网络,存储系统它不是单机系统,利用网络将原有的单机系统做成多机系统。

特点:

  • 性能敏感

  • 受硬件影响大

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

image.png ·

  • 缓存是很重要的,缓存会贯穿整个存储体系

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

  • 硬件设备需要统一的接入层

数据库

关系型数据库

特点:

  1. 对结构化数据十分友好

  2. 支持事务(ACID)

  3. 支持复杂的的查询语言

非关系型数据库

  1. 对非结构化数据比较友好

主流产品剖析

单机存储

一般不涉及网络交互

本地文件系统

Linux文件系统的两大数据结构: Index Node & Directory Entry

Index Node : 记录文件元数据,包括id,大小,权限,磁盘位置等

Directory Entry: 记录文件名,层级关系

Key-vlaue存储

image.png

分布式存储

在单机存储系统上实现了分布式协议,涉及了大量网络协议

  • HDFS:堪称大数据时代的基石

核心特点:

  • 支持海量数据存储

  • 高容错性

  • 弱POSIX语义

  • 性价比高

单机关系型数据库

image.png

单机非关系型数据库

  • Elasticsearch
  1. 面向文档进行存储

  2. 文档可序列化成JSON,支持嵌套

  3. 存在index, index为文档的集合

  4. 实现了大量的搜索的数据结构和算法

  • Redis
  1. 数据结构丰富

  2. C语言实现,超高性能

  3. 主要基于内存,但支持AOF持久化

  • MongoDB
  1. 面向文档进行存储

  2. 文档可序列化成JSON,支持嵌套

分布式数据库

单机数据库遇到了哪些问题和挑战?

  • 容量

单点容量有限,受硬件条件影响

池化技术来解决容量问题

  • 弹性

分布式可以解决弹性问题

  • 性价比