分布式存储笔记

特性

  • 可拓展
  • 低成本
  • 高性能
  • 易于使用

挑战

数据的持久化,数据的一致性

数据分类

  • 非结构化数据:文本,音视频等
  • 结构化数据:一般存储在关系数据库中的数据
  • 半结构化数据:有数据也有结构,html文档

分布式存储

1.分布式文件系统

用于存储 Blob 对象(非结构化数据,这类数据以对象形式存储,对象之间没有关联),Haystack,TFS,也可以作为分布式表格系统的底层存储。

存储对象:
  • Blob 对象
  • 定长块
  • 大文件
    在这里插入图片描述

2.分布式键值系统

用于存储关系简单的半结构化数据,只提供基于主键的CRUD(create/read/update/delete) 功能

与传统的哈希表比较类似,但是他可以将数据分布到集群中的多个存储节点。一般用作缓存,算法使用一致性哈希。

分布式表格系统

用于存储关系较复杂的办结构化数据。不仅支持简单的CRUD操作,而且要支持扫描某个主键范围。

主要针对单张表格的操作,不支持复杂操作。由主键标识一行。

同一个表格的多个数据行也不要求包含相同类型的列,适合半结构化数据。

分布式数据库

用于存储结构化数据。由单机关系数据库拓展而来。采用二维表格组织数据,提供SQL查询语句,支持多表,事务等等

缺点:拓展性,高并发性能

问:为啥二维表格的存储形式就是不可拓展的呐?

单机存储系统

单机存储引擎

  • 哈希存储引擎(不支持顺序扫描,对应 KV 存储系统)

  • B 树存储引擎(会支持顺序扫描,对应关系数据库存储系统)

  • LSM 树存储引擎(通过批量转储技术规避磁盘随机写入问题,广泛应用,如:Google Bigtable,Google LevelDB,以及facebook 的 Cassandra)

哈希存储引擎(不支持顺序扫描,Bitcask)

仅支持追加操作,只追加不允许修改老的数据,当旧的文件达到一个限制时,就会产生一个新的文件,老的文件只读不写。

在任意时刻,都是只有一个文件可写,用于数据追加,称为活跃数据文件。

  1. 数据结构

每一项数据记录为:

在这里插入图片描述
内存中采用基于哈希表的索引数据结构,主要是为了通过主键快速定位 value 的位置。

哈希表的每一项包含三个定位数据的信息:file_id,value_pos,value_sz。
在这里插入图片描述
2. 快速恢复

索引文件,就是将索引关系保存在一个文件中。然后断电后就可以直接加载这个文件即可。

B 树存储引擎(会支持顺序扫描,对应关系数据库存储系统)

同 B 树索引

LSM 树存储引擎(通过批量转储技术规避磁盘随机写入问题,广泛应用,如:Google Bigtable,Google LevelDB,以及facebook 的 Cassandra)

将对于数据的修改保存在内存中,当达到大小限制时批量写入磁盘。

读取的时候合并磁盘中的历史数据和内存中最近的修改操作。有效规避磁盘随机写入问题。

  1. 存储结构

在这里插入图片描述
当 MemTable 达到一个上限时,就将旧的 MemTable 冻结为不可变,创建新的 MemTable接受新的数据。之后,将不可变的Memtable 排序转储到磁盘,形成新的 SSTable文件。

SSTable 中的文件是按照记录的主键排序的。

LevelDB 只支持随机读取单条记录,所以查询时的顺序就是:新的Memtable->旧的Memtable->从新到老去读取磁盘中的SSTable文件。

  1. 合并

会将这个层级与上一个层级的 SSTable 文件进行一个合并,如果没有保存价值,就会直接抛弃。否则,写入新的文件中。

数据模型

1.

分布式系统

基本概念

1. 异常
  • 异常类型
    • (1) 服务器宕机
      宕机的原因不再多说,需要面临的问题就是:服务器重启会导致丢失内存信息,如何持久化?如何通过持久化介质恢复内存信息,从而恢复服务器的之前的状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值