From 9b156a2d8f6349b7156457edc84081cb3ac949ec Mon Sep 17 00:00:00 2001 From: jpwang Date: Sun, 3 Mar 2024 15:56:58 +0800 Subject: [PATCH] Site updated: 2024-03-03 15:56:58 --- 2024/03/01/DB04-Storage/index.html | 27 +++++++++++++++++++++++++-- atom.xml | 4 ++-- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/2024/03/01/DB04-Storage/index.html b/2024/03/01/DB04-Storage/index.html index 2f4fdd1..72965fb 100644 --- a/2024/03/01/DB04-Storage/index.html +++ b/2024/03/01/DB04-Storage/index.html @@ -222,7 +222,7 @@

Block

  • 用数据结构组织未分配的位置(链表/树/...)
  • 因为插入和删除的位置可以是任意的,所以用数组就会很呆。如果做过 oslab -就会知道需要加 header 各种挤 metadata 的空间

    +就会想到加 header 各种挤 metadata 的空间

    fixed-length

    这时候 fixed-length tuple 的假设就非常好了,回想 slab-page + bit flag 的设计,这里对应就是 block-tuple + bit flag

    @@ -232,6 +232,29 @@

    variable-length

    的问题了

    书上还列举了很多比较具体的做法,都不是很难

    File

    +

    和 block 管理是类似的,不同之处在于一些假设

    +

    Unordered

    +

    即 tuple 的顺序无所谓,每个 block +都是同等地位的。这个和内存分配是一样的

    +

    Ordered

    +

    要求 tuple 之间按照某个 key 排序。由于目前的架构是 tuple-block-file +三层的,这实际上提出了两个要求:

    +
      +
    1. block 内部的 tuple 要(逻辑上)有序
    2. +
    3. file 内部的 block 要(逻辑上)有序
    4. +
    +

    解决办法:

    +
      +
    1. 如果用数组就可以直接移动位置排序,如果用链表就可以操作引用来排序。总之是排个序
    2. +
    3. 数组可以定时合并,链表可以横跨 block 排序
    4. +
    +

    如果比我聪明的话应该马上就能想到用 B 树这样的数据结构来维护 +树-结点-数据 这样的三层结构了。

    +

    Tricks

    + @@ -276,7 +299,7 @@

    File

    目录
    -
    1. Storage Hierarchy
      1. Tuple
      2. Block
        1. fixed-length
        2. variable-length
      3. File
    +
    1. Storage Hierarchy
      1. Tuple
      2. Block
        1. fixed-length
        2. variable-length
      3. File
        1. Unordered
        2. Ordered
      4. Tricks
    diff --git a/atom.xml b/atom.xml index ea4f423..12de063 100644 --- a/atom.xml +++ b/atom.xml @@ -6,7 +6,7 @@ - 2024-03-01T12:53:06.361Z + 2024-03-03T07:56:50.115Z http://example.com/ @@ -21,7 +21,7 @@ http://example.com/2024/03/01/DB04-Storage/ 2024-03-01T11:47:15.000Z - 2024-03-01T12:53:06.361Z + 2024-03-03T07:56:50.115Z