CMU15-445/645 Lecture#4 Database Storage II

日志结构的文件组织

DBMS只存储日志记录,而不是在页面中存储元组。

系统将日志记录追加到有关如何修改数据库的文件中:

→插入存储整个元组。

→删除将元组标记为已删除。

→更新仅包含已修改属性的增量。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hl8iYF87-1588930079073)(./img/04-01.png)]

建立索引以使其跳至日志中的位置。

定期压缩日志。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WYVE6tSf-1588930079078)(./img/04-02.png)]

数据表示

元组本质上是字节序列。

DBMS的工作是将这些字节解释为属性类型和值。

DBMS的目录包含有关表的模式信息,系统使用这些表来确定元组的布局。

INTEGER/BIGINT/SMALLINT/TINYINT

→ C/C++ 原生数据类型

FLOAT/REAL vs. NUMERIC/DECIMAL

→ IEEE-754 浮点数标准/ 定点小数

VARCHAR/VARBINARY/TEXT/BLOB

→ Header中含有长度信息, 后面跟着字节数组。

TIME/DATE/TIMESTAMP

→ 自Unix时代以来的32/64位整数(微秒)

可变精度数

使用 C / C ++原生的数据类型的不精确,精度可变的数字类型。

→例如:FLOATREAL /DOUBLE

按照IEEE-754的规定直接存储。

通常比任意精度的数字快,但可能会有舍入误差。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q096dFcZ-1588930079080)(./img/04-03.png)]

固定精度数

具有任意精度和小数位数的数值数据类型。 在无法接受舍入误差时使用。

→例如:NUMERICDECIMAL

通常以精确的,可变长度的二进制表示形式存储,并带有其他元数据。

→类似于VARCHAR,但不存储为字符串

POSTGRES: NUMERIC

实现类似于高精度加减法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JShkhDTK-1588930079085)(./img/04-04.png)]

超大数据

OverFlow Page

大多数DBMS不允许元组超过单个页面的大小。

为了存储大于页面的值,DBMS使用单独的溢出存储页面。

→Postgres:TOAST(> 2KB)

→MySQL:溢出(> 1/2页大小)

→SQL Server:溢出(>页面大小)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JIMueSHo-1588930079088)(./img/04-12.png)]

External File

某些系统允许您将很大的值存储在外部文件中。

视为BLOB类型。

→Oracle:BFILE数据类型

→Microsoft:FILESTREAM数据类型

DBMS无法操纵外部文件的内容。

→没有耐用性保护。

→没有交易保护。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JOJ0YtTp-1588930079090)(./img/04-05.png)]

系统目录

DBMS在其内部目录中存储有关数据库的元数据。

→表,列,索引,视图

→用户,权限

→内部统计

几乎每个DBMS都会自己存储数据库的目录。

→将对象抽象包装在元组周围。

→用于“引导”目录表的专用代码。

您可以查询DBMS的内部INFORMATION_SCHEMA目录以获取有关数据库的信息。

→ANSI标准的只读视图集,可提供有关数据库中所有表,视图,列和过程的信息

DBMS还具有非标准的快捷方式来检索此信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m7WTdz4h-1588930079091)(./img/04-06.png)]

存储模型

关系模型没有指定我们必须将所有元组的属性一起存储在单个页面中。

对于某些workloads (工作情况),这实际上可能不是最佳的布局

OLTP

On-line Transaction Processing (联机事务处理),简单查询,读取/更新与数据库中单个实体有关的少量数据。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qymwuwbu-1588930079093)(./img/04-07.png)]

OL AP

On-line Analytical Processing(联机分析处理),复杂查询读取跨多个实体的数据库的大部分内容。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DctmJNCh-1588930079095)(./img/04-08.png)]

N-ARY 存储模型

DBMS在页面中连续存储单个元组的所有属性。

OLTP工作负载的理想选择,在这些工作负载中查询往往只对单个实体进行操作并插入大量工作负载。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K1GTheHS-1588930079097)(./img/04-09.png)]

DECOMPOSITION 存储模型

DBMS在页面中连续存储所有元组的单个属性的值。

→也称为“列存储”

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ti65sC4E-1588930079099)(./img/04-10.png)]

元组ID

选择1:固定长度的偏移

→每个值的属性长度相同。

选择2:嵌入式元组ID

→每个值及其元组ID存储在列中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jf1NBp5H-1588930079101)(./img/04-11.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值