数据库数据架构

一、常见索引数据结构 1、跳表(Skiplist) 内存中常用索引类型 典型应用:Redis 特点:快速搜索、插入、删除 2、哈希索引(Hash Index) Map 或 Collection 的常见实现 特点:查找速度快,但不适合范围查询 3、SSTable 不可变的磁盘 Map 实现 特点:高顺序写入效率,适合持久化存储 4、LSM 树(Log-Structured Merge Tree) 结合 Skiplist 和 SSTable 特点:高写入吞吐量,适合写密集型系统 5、B 树(B-Tree) 基于磁盘的索引方案 特点:读写性能稳定,支持范围查询 6、倒排索引(Inverted Index) 用于文档索引 典型应用:Lucene 搜索引擎 特点:快速全文搜索 7、后缀树(Suffix Tree) 用于字符串模式匹配 特点:支持快速子串查询 8、R 树(R-Tree) 多维数据索引,如空间数据(地理坐标) 特点:支持最近邻查询和范围查询

March 30, 2024 · 1 min · 44 words · Guangyang Zhong

数据库锁类型

一、常见锁类型 1、共享锁(Shared Lock, S Lock) 允许多个事务同时读取资源,但不允许修改 其他事务也可以对同一资源加共享锁 2、排他锁(Exclusive Lock, X Lock) 允许事务读取和修改资源 其他事务不能对该资源加任何锁 3、更新锁(Update Lock, U Lock) 用于事务准备更新资源时,防止死锁 4、模式锁(Schema Lock) 用于保护数据库对象的结构(如表结构) 5、大批量更新锁(Bulk Update Lock, BU Lock) 用于批量插入操作,通过减少锁数量提升性能 6、键范围锁(Key-Range Lock) 用于索引数据,防止幻读(事务已读范围内有新行插入) 7、行级锁(Row-Level Lock) 锁定表中的特定行,其他行仍可并发访问 8、页级锁(Page-Level Lock) 锁定数据库中的特定页(固定大小的数据块) MySQL InnoDB 默认不使用页锁,而是使用行锁;MyISAM 使用页级锁 9、表级锁(Table-Level Lock) 锁定整张表 实现简单,但可能显著降低并发性能

March 26, 2024 · 1 min · 44 words · Guangyang Zhong

B-Tree vs LSM-Tress

B-Tree(平衡树) 核心特性 主要应用:几乎所有关系型数据库使用的索引数据结构 存储单元:基本存储单元通常称为"页" 工作原理:通过向下追踪键的范围直到找到实际值 优势特点 读取性能优秀:实现更快的读取速度 范围查询高效:支持顺序扫描 事务友好:天然支持ACID事务 典型应用 MySQL InnoDB、PostgreSQL、Oracle、SQL Server LSM-Tree(日志结构合并树) 核心特性 主要应用:许多NoSQL数据库使用,如Cassandra、LevelDB、RocksDB 数据结构:维护键值对,使用排序字符串表持久化到磁盘 键排序:SSTable中的键保持排序状态 核心机制:合并 合并过程:Level 0段定期合并到Level 1段 目的:减少文件数量,优化存储和读取 优势特点 写入性能极佳:实现快速写入 高吞吐量:适合写密集型场景 顺序写入:追加写入模式避免随机写 典型应用 Cassandra、LevelDB、RocksDB、HBase 核心差异对比 维度 B-Tree LSM-Tree 主要优势 读取更快 写入更快 读取速度 快速 较慢 写入速度 较慢 快速 存储模式 原地更新 追加写后合并 设计哲学 读优化 写优化

March 20, 2024 · 1 min · 48 words · Guangyang Zhong

数据库 类型大全

一、关系型数据库(Relational DB) 数据以表格形式组织(Rows & Columns) 遵循严格的模式(Schema) 适合事务处理和结构化数据 例子:MySQL, PostgreSQL, Oracle 二、联机分析处理数据库(OLAP DB) OLAP(Online Analytical Processing):用于数据分析和报表 优化复杂查询和多维分析 适合商业智能(BI)场景 例子:ClickHouse, Amazon Redshift, Google BigQuery 三、NoSQL 数据库 不使用传统 SQL 或严格模式 适合非结构化或半结构化数据 四种主要类型: 1、图数据库(Graph DB) 强调数据之间的关系 常用于社交网络、推荐系统 例子:Neo4j, ArangoDB 2、键值存储(Key-Value Store DB) 每个数据都有唯一键(Key)和对应的值(Value) 访问快速,适合缓存、会话存储 例子:Redis, Memcached 3、文档数据库(Document DB) 数据以文档形式存储,类似 JSON 或 BSON 每个文档可有不同结构,灵活存储半结构化数据 例子:MongoDB, CouchDB 4、列式数据库(Column DB) 数据按列而不是按行存储 适合分析型查询,减少 I/O,提高查询速度 例子:HBase, Cassandra, ClickHouse

March 20, 2024 · 1 min · 59 words · Guangyang Zhong