国科大大数据复习笔记 陈世敏 关系型数据管理系统(2)RBDMS系统架构 数据的存储与访问 B+Trees 查询索引index
一:RBDMS系统架构
SQL Parse:
SQL 语句的程序解析好的内部表达
(例如:parsing tree)
语法解析,语法检查,表名、列名、类型检查
Query Optimizer :
SQL内部表达Query Plan (执行方案)
产生可行的query plan
估计query plan的运行时间和空间代价
在多个可行的query plans中选择最佳的query plan
Data storage and indexing
如何在硬盘上存储数据
如何高效地访问硬盘上的数据
• Buffer pool:
在内存中缓存硬盘的数据
Execution Engine :
• query planSQL语句的结果
根据query plan,完成相应的运算和操作
数据访问
关系型运算的实现
Transaction management:事务管理
目标是实现ACID
进行logging写日志,locking加锁
保证并行transactions事务的正确性
数据存储在外存(硬盘 )
二:数据的存储与访问
• 数据存储与访问数据表(Table)
索引(Index)
缓冲池(Buffer pool)
数据库 vs. 文件系统(数据存储角度比较)
• 文件系统
存储文件(file)
通用的,存储任何数据
和程序
文件是无结构的,是一
串字节组成的
操作系统内核中实现
提供基本的编程接口
– Open, close, read, write
13
• 数据库
存储数据表(table)
专用的,针对关系型数
据进行存储
数据表由记录组成,每
个记录由多个属性组成
用户态程序中实现
提供SQL接口
• 共同点
数据存储在外存(硬盘)
根据硬盘特征,数据分成定长的数据块
数据在硬盘上的存储
一个page 一个一维的地址空间
一个page 可以设置为1~多个文件系统的 page,例如,4KB, 8KB, 16KB, …
数据的访问:
Hash based index:
在硬盘上怎么存?
bucket = page
当chain上平均bucket数太多时,需要增大size,重新hashing
(存在hash table design可以降低re-hashing的代价)
一个bucket对应一个page
B+Trees:
B+Trees存储
B+Trees检索
进行二分查找
Search 然后在节点中插入
叶节点未满,插入叶节点
叶节点满了,node split(节点分裂)
Range Scan
找到起始叶结点,包括范围起始值
沿着叶的链接读下一个叶结点
直至遇到范围终止值
比较顺序访问与二级索引访问
• 顺序访问
需要处理每一个记录
顺序读每一个page
50
• 二级索引访问
有选择地处理记录
随机读相关的page
到底应该采用哪种方式呢?
• 由最终选中了多大比例的记录决定:selectivity
• 可以根据预测的selectivity、硬盘顺序读和随机读
的性能,估算两种方式的执行时间
• 选择时间小的方案
• 这就是query optimizer的一个任务
Buffer Pool
数据库数据放在硬盘上,buffer pool在内存里,减少I/O,提高性能
- 云方案,依托H3C彩虹云存储架构,结合UIA统一认证系统,实现了用户数据的集中存储和管理
- 一步步教你如何用疯狂.NET架构中的通用权限系统 -- 分布式管理(每个公司管理每个公司自己的数据)
- Android数据存储--SQLite 存储方式应用(日记管理系统)
- Mainframe的存储管理系统和架构
- 一步步教你如何用疯狂.NET架构中的通用权限系统 -- 分布式管理(每个公司管理每个公司自己的数据)
- 【分享】一个通用强大的主数据管理系统(架构设计讲解及源码下载)
- 学生信息管理系统V0.2(使用文件存储数据)【MVC模式、DAO模式、Factory模式】
- 数据、系统-大数据的存储和管理-by小雨
- The Data Warehouse ETL Toolkit学习笔记-架构(数据流主线―数据访问)
- 【分享】通用强大的主数据管理系统(最终分享版本)架构分析及源码下载
- 适宜于窗口访问模式的分布式瓦片数据存储系统TSS
- 数据迁移管理系统综述(在线近线离线分级存储)
- 数据库系统——关系型数据在磁盘上的存储布局
- 高性能Javascript笔记 数据的存储与访问性能优化
- SL复习笔记之平稳转型——基础篇(二、控件和数据访问)
- android(16)_数据存储与访问_SQLite数据库_数据库的创建管理
- NET 应用架构指导 V2 学习笔记(二十二) 设计数据访问组件
- 高性能Javascript笔记 数据的存储与访问性能优化
- 一步步教你如何用疯狂.NET架构中的通用权限系统 -- 分布式管理(每个公司管理每个公司自己的数据)
- 本人开发系统--新生报到与数据统计管理系统--数据库设计及相关查询SQL语句笔记