技巧💡

access method ,是我们对数据库数据进行读或者写的方式。 数据结构无处不在。

  • 数据组织:如何将这些数据结构合理地放入 memory/pages 中,以及为了支持更高效的访问,应当存储哪些信息。
  • 并发性:如何支持数据的并发访问。
    在DBMS中,最重要的就是 哈希表trees

常用的数据存储,我们一般分为2类。

流派主要特点基本思想代表
log-structured 流只允许追加,所有修改都表现为文件的追加和文件整体增删变随机写为顺序写Bitcask、LevelDB、RocksDB、Cassandra、Lucene
update-in-place 流以页(page)为粒度对磁盘数据进行修改面向页、查找树B 族树,所有主流关系型数据库和一些非关系型数据库

结构

结构主义特点基本思想主要问题优化思路
哈希表主要适用于pagetable,自适应hash等通过hash函数,查找很快不支持范围查询。如mysiam存储引擎,hash冲突解决hash冲突,如拉链法等
Trees B树就地更新数据,直接覆盖。以页的力度对磁盘进行修改.主流关系型数据库的选择增加读性能,已经是排序好的最好数据。写的时候可能会存在页合并,页分裂等情况。并发控制不好B link树,解决B+树并发控制自下而上的问题
LSM树Log-structured的代表,数据通过日志的方式进行存储。KV数据库、大数据相关的数据库的选择.LSM-Tree 并不是一种严格的树结构,而是一种内存+磁盘的多层存储结构。HBase、LevelDB、RocksDB这些 NoSQL 存储都使用了 LSM-Tree增加写性能,通过随机写变顺序写(写日志很快)读的时候,获取最新数据需要根据日志进行推演1. 优化SSTABLE查找 Bloom过滤器2. 层级SSTABLE,进行compaction合并

资料

DDIA 读书笔记(三):B-Tree 和 LSM-Tree | 木鸟杂记

B+树,B-link树,LSM树…一个视频带你了解常用存储引擎数据结构(合集)_哔哩哔哩_bilibili

简述LSM-Tree - pedro7 - 博客园