索引与视图
数据库索引:提升查询效率;降低添加、修改、删除效率;采用B树,B+树等
关系的三种类型
- 基本关系(通常又称为基本表或基表):实际存在的表,实际存储数据的逻辑表示
- 查询表:查询结果对应的表
- 视图表:由基表或其他视图导出的表,本身不独立存储,数据库只存放它的定义,常称为虚表,其内容由查询定义(仅存放SQL查询语句)。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并没有真正的存储这些数据,而是通过查询原始表动态生成所需要的数据。
视图的优点
- 视图能够简化用户的操作
- 视图机制可以使用户以不同的方式查询同一数据
- 视图对数据库重构提供了一定程度的逻辑独立性
- 视图可以对机密的数据提供安全保护
物化视图:将视图的内容物理存储起来,其数据随原始表变化,同步更新。它不是传统意义上的虚拟视图,是实体化视图,其本身会存储数据。同时当原始表中的数据更新时,物化视图也会更新。
分布式数据库
分布式数据库可以分为分区和分表,分区和分表的共性为:
1、都针对数据表
2、都使用了分布式存储
3、都提升了查询效率
4、都降低了数据库的频繁I/O压力值。
但是,分区方法逻辑上还是一张表,分表方法逻辑上已经是多张表
常见的分区方式包括:范围分区、哈希分区和列表分区
分区策略 | 分区方式 | 说明 |
---|---|---|
范围分区【Range】 | 按数据范围值来作分区 | 例:按用户编号分区,0-99999映射到分区A,100000-199999映射到分区B |
散列分区【HASH】 | 通过key进行hash运算分区 | 例:可以把数据分配到不同的分区,这类似于取余的操作,余数相同的,放在一个分区上 |
列表分区【LIST】 | 根据某字段的某个具体值进行分区 | 例:长沙用户分成一个区,北京用户分成一个区 |
分区的优点
- 相对于单个文件或者硬盘,分区可以存储更多的数据
- 数据管理比较方便,比如要清理或废弃某年的数据,就可以直接删除该日期的分区数据即可
- 精准定位分区查询数据,不需要全表扫描查询,大大提升数据检索效率
- 可跨多个分区磁盘查询,来提高查询的吞吐量
- 在涉及聚合函数查询时,可以很容易的进行数据的合并
分布式数据库
- LDBMS
- GDBMS
- 全局数据字典
- 通信管理(CM)
分布式数据库管理系统-结构:
- 全局控制集中的DDBMS
- 全局控制分散的DDBMS
- 全局控制部分分散的DDBMS
分布透明性
分片方式包括:水平切分:按记录分;垂直切分:按字段分;混合分片
- 分片透明性:分布分片,用户感受不到(不关系如何分片存储)
- 位置透明性:数据存放在哪里,用户不用管(用户无需知道数据存放的物理位置)
- 复制透明:不关心结点的复制情况
- 局部数据模型透明性(逻辑透明):用户或应用程序无需知道局部场地使用的是哪种数据模型
分布式事务管理
两阶段提交协议2PC
2PC事务提交的两个阶段:
表决阶段:目的是形成一个共同的决定
执行阶段:目的是实现这个协调者的决定
两条全局提交规则:
只要有一个参与者撤销事务,协调这就必须做出全局撤销的决定。
只要所有的参与者都同意提交事务,协调者才能做出全局提交决定
Comments NOTHING