CMU 15-445 I 学习

date
Jan 6, 2023
slug
2023-01-06
status
Published
tags
技术
学习记录
summary
type
Post
看下来的收获:
  1. 数据库存储类似操作系统的内存管理。
  1. 设计数据库最好不使用os内置的内存管理机制mmap,自定义能获取更好的性能。
  1. 链表形式不能直接应用在数据连接上,但是思想可以使用。页表形式就是以链表的思想连接的。通过page id构建page目录表,让我想起以前学习os的段页式了。
  1. 数据存储的地址大概是 page_id + offset。
  1. 原子性很重要。无论是存储大小还是操作粒度。
  1. 不用过于在意范式(理解比较困难,并且实际使用率低)。明白要使用外键来分表,知道什么时候要join连接就可以。
  1. 很多数据库系统会进行反范式化(Denormalized Tuple Data)
  1. 行存储用OLTP(On-line Transaction Processing),列存储用OLAP(On-line Analytical Processing)。
    1. notion image
  1. 大多数数据库是行存储。行存储的读写较方便,因此工业上可以采取混合形式。呈现给消费者的使用行存储,在企业进行分析时采用列存储,通过OLAP进行分析。

下面引用自Data Storage Models
NSM(行存储) 的优缺点如下:
-   Advantages
    -   高效插入、更新、删除,涉及表中小部分 tuples
    -   有利于需要整个 tuple (所有 attributes)的查询
-   Disadvantages
    -   不利于需要检索表内大部分 tuples,或者只需要一小部分 attributes 的查询
 
DSM (列存储)的优缺点如下:
-   Advantages
    -   减少 I/O 操作
    -   更好的查询处理和数据压缩支持
-   Disadvantages
    -   涉及少量 tuples、多数 attributes 的查询低效

© chz8bit 2018 - 2024