CMU15 445/645课程-Tree Based Indexes笔记

CMU15-445数据库】bustub 项目介绍及环境配置 突然想起来之前一直想做的 CMU 15-445 课程的 2022 Fall 学期开课了,所以决定把 Pintos 项目先放一放,开个新坑跟着 CMU 同步把这个项目做了。 阅读详情

B+Tree

一种搜索,插入,删除都是log(n)的数据结构
a.节点可以有超过两个的子节点
b.适合顺序存取
两种访问叶子节点值得方法
1.Record IDs:指针指向元祖位置
2.Tuple Data:远足内容存在叶子节点中

B+ Tree Operations

插入
流程图

这里写图片描述
这时我们插入70
这里写图片描述
删除
首先,删除键值为70的这条记录,删除后。
这里写图片描述
接着我们删除键值为25的记录,但是该值还是Index Page中的值,因此在删除Leaf Page中25的值后,还应将25的右兄弟节点的28更新到Page Index中,最后可得到图。
这里写图片描述
最后我们来看删除键值为60的情况,删除Leaf Page中键值为60的记录后,填充因子小于50%,这时需要做合并操作,同样,在删除Index Page中相关记录后需要做Index Page的合并操作,最后得到图。
这里写图片描述

B+Tree 设计准测

Merge:
1.当DBMS半满时不会总是merge
2.延迟的merge操作会减少重组的数量

有重复键的索引
1.Duplicate keys:使用同一个叶子节点,但是存储相同的keys很多次
2.Value lists:只存储一次key,维护一个独一值的链表

不同长度的keys:
1.指针:存储键值作为指向元组属性的键值
2.不同长度的节点:B+tree的每个节点大小不同,但是需要仔细的内存管理
3.Key Map:插入一个指针数组,映射到节点中的key-value

前缀压缩:
1.中间层节点,我们不需要整个key
2.存储一个最小的节点,你要保证正确的指向索引

Skip List:

这里写图片描述
插入:扔硬币决定该节点在第几层,然后插入
删除:每个节点有一个flag,要删除时,就设置flag,告诉进程忽略这个值,然后一层一侧把他的引用给忽略点

Advantage over B+ Tree:
a.使用更少的内存
b.插入和删除不需要再次平衡

Disadvantage over B+ Tree:
a.硬盘/缓存不友好,因为没有优化位置
b.调用随机数(实现抛硬币)多次非常慢

Radix Tree:

这里写图片描述
1.每个字母一个节点,不同于TRIE(同样字母为一个节点,剩下的全部为一个节点)

CMU15-445 Project1总结2021年 本篇博客是对CMU15-445课程project1的总结,代码的实现借鉴了一些其他前辈的代码,因为自己的C++实在是小白水平,对数据库的实现理解的也不够透彻,就抄了大家的代码,然后理解这些代码之后,再作此篇总结,加深对知识点的理解。 这里附上借鉴的博客:[已满分]CMU数据库(15-445)实验1-BufferPoolManager。 本次实验的原文要求在这里PROJECT #1 - BUFFER POOL 关于本门课程的知识点总结我推荐[CMU-15445] 总述 Project1要求我们实现一个数据库的 阅读详情

相关推荐

宇树机器狗go2—slam建图(1)点云格式

上一篇番外文章教大家如何在宇树机器狗go2的gazebo仿真环境中实现简单的导航运动,本期文章会教大家如何让宇树的机器狗go2在仿真环境中进行slam建图时经常会遇到的一些点云格式,在后续的slam建图和slam算法解析的时候会经常与这些点云信息打交道。宇树机器狗go2仿真会作为一个长期项目来进行不定期更新,仿真不只限于在gazebo上实现,后面还会在isaac sim等仿真平台上教大家如何搭建,其目的还是帮助各位都能以较低的成本加入到宇树机器狗go2的学习中。

古月居 3211

基于树的召回框架(二):Joint Optimization of Tree-based Index and Deep Model for Recommender Systems

阿里基于树结构的召回体系一共发了三篇paper,这是第二篇,其他两篇论文的阅读笔记见下方链接: 论文笔记:Learning Tree-based Deep Model for Recommender Systems 本文讲解论文的 supplementary files 下载,包括一些论断的证明过程以及 JTM 的代码实现 论文笔记:Learning Optimal Tree Models under Beam Search 此链接尚未更新 背景 在第一篇论文中提出的基于树结构的召回模型,优化树结构 T

pyxiea 1599

4、接收天线:接收电压、功率和传输系数

本文详细探讨了接收天线的性能参数,包括接收电压、功率和传输系数,通过建立等效电路模型分析接收偶极子的电流和开路电压,并定义电压和功率传输函数。研究揭示了天线长度、工作频率及极化失配对传输性能的影响,并提出了优化接收天线性能的策略,为天线系统的设计与优化提供了理论支持。

ll5678的博客 208

CMU 15-445】Extendible Hash Table 可扩展哈希详细理解

CMU 15-445 Database System, 可扩展哈希(Extendible Hash Table),详细理解。

MelroseLbt的博客 5386

CMU 15-445 -- 关系型数据库重点概念回顾 - 01

CMU 15-445 -- 关系型数据库重点概念回顾

m0_53157173的博客 1764

(全网最详细!!!)CMU15-445(Fall 2023)——从环境搭建开始的P0详细历程及踩坑经历

CMU15-445(Fall 2023)——从环境搭建开始的P0详细历程,以及各种各样的踩坑经历和解决办法,最最最最详细!

weixin_49614712的博客 8915

CMU-15445 课程和实验介绍

CMU-15445 课程和实验介绍 大家好, 我最近花了一个月的时间刷完了15445这门课程, 如果你还不知道这是一个怎样的课程或纠结要不要入坑, 建议看看我接下来对其的介绍 对课程感兴趣或有问题的小伙伴欢迎加我QQ: 1208264743交流哦, 这一个月内已经有十几个小伙伴加我了, 再多的话感觉可以拉个群了hh 课程内容? 深入的讲解数据库, 进行真实的数据库编程 你可能会说, 我们学校也讲数据库, 培训机构也讲MySQL, 我何必看外国人讲这玩意呢?? 首先, 中国学校的数据库课程几乎都是浅浅的讲一些

耀一世风光的博客 8435

CMU 15-445】学习笔记与Lab汇总

又来开新坑啦!本门课程CMU的数据库原理课程,我学习的版本为Fall2023,教授为Andy(上课有DJ)。准备跟着课程的Schedule来做,就是先看配套教材的相应章节(Database-System-Concept-7th),再看Lecture,最后做Project。在看完教材与Lecture之后,我会写出自己的学习笔记,在做完之后,我会写出相应的思考过程与自己的解题思路,但不会公开任何代码(应Andy强烈要求!

juruo_c的博客 4079

CMU 15-445 (2023 Spring)数据库实验p4记录--完结篇

全局的LM根据隔离级别授予或释放锁。

weixin_44835655的博客 812

CMU 15-445 Project #2 B+Tree 题解 通过B+树实现索引

B+

AntiO2的博客 2337

CMU 15-445 -- Introduction to Distributed Databases - 19

CMU 15-445 -- Introduction to Distributed Databases - 19

m0_53157173的博客 929

cmu 15-445学习笔记-3 存储引擎

上述方法 说的就是tuple存的不是数据是块的时候,在插入的时候就可以将随机的写转化为顺序的写(以前存数据的时候就是在需要改数据的时候把数据从页中加载进来,然后修改,然后将修改的数据协会去,之后在需要修改这个数据,就再从磁盘中页加载,修改,然后再写回去。查询走索引找到行,然后将数据取出。但是这样存储日志的数据库会比较大(就需要周期性的压缩日志),压缩之后应该保留当页操作之后的数据结果(但是仅仅可以压缩当前页的数据,如果该页中没有出现某个数据的插入只记录了数据的删除,那么这个操作就是不能压缩的)

m0_51765675的博客 2445

CMU15-445 C++ Primer

基本要求 这个项目使用编程语言C++,这个lab的目的劝退不会C++ 的同学。其实考察的知识点并不多,稍微了解点C++的同学都能轻易通过第一个lab的测试。 主要考察的知识点如下: 类的继承与虚函数 类模板编程 unique_ptr指针 矩阵的加法与乘法 (~ ̄▽ ̄)~ 需要完成的任务是实现3个关于矩阵的类,完成矩阵的元素赋值,元素查询,矩阵加法和乘法。 建立项目 首先创建一个存放项目的文件夹,mkdir 15.445 进入该文件夹后初始化git,cd 15.445; git init 然后添加该项目的

weixin_43977925的博客 1765

CMU15445 (Fall 2020) 数据库系统 Project#4 - Concurrency Control 详解

一个合格的事务处理系统,应该具备四个性质:原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。隔离性保证了一个活跃的事务(还没提交或者回滚)对数据库所做的系统对于其他的活跃事务是不可见的,看起来就像某一时刻就只有一个事务在操作数据库。然而完美的隔离性会导致数据库系统并发性能的下降,有些时候我们可以容忍数据的不一致性,所以可以牺牲一部分隔离性,来换取更好的并发性。

2301_78287784的博客 1279

CMU15-445/645 Database System/Fall2021 #Project1_BufferPoolManager详细解析

CMU 15-445/645 Database System/Fall2021 #Project1_BufferPoolManager CMU 15-445是一门数据库系统课程——官方主页CMU-15445。由于官方网站提示不能在公开网络张贴答案,所以本文不会有全面详细的代码,但是会有关键代码的部分。 一、LRU Replacement Policy 第一个任务是实现缓冲池的LRU算法,这里的LRU算法提供的接口和日常在LeetCode刷题中遇到的接口不一样: 在这里插入代码片 我们需要实现的是LRURe

AlexanderGan的博客 1637

CMU15-445环境配置

安装完之后,显示没有网络,调整网络问题:虚拟机VMware网络连接激活失败解决方案_虚拟机网络连接激活失败-CSDN博客。

qq_52174632的博客 953

CMU15-445 Spring2023 Project4 Concurrency Control个人详解

CMU15-445 Spring 23 Project4 总结以及思路介绍,包括实现细节、注意事项。

hey_we_go_的博客 1362

CMU15-445 Project.1总结

考虑到多线程的使用,而且会有多个直线指向同一个bucket,我们使用make_shared指针;使用resize函数会同时增加容器的size和capacity,而使用reserve只增加capacity,需要继续添加元素以免出现内存泄漏;在判断已满的bucket中键值对应如何分配时,显然此时他们的末local depth都是相等的,我们可以直接根据末local depth+1位进行判断即可;考虑到多线程进行操作,我们使用智能锁进行处理。

L.Wzz的博客 1063

CMU 15-445】Proj4 Concurrency Control

本文对应的project版本为CMU-Fall-2023的project4由于Andy要求,本博客只提供思路,不会公开任何代码终于要完结15445的所有project了(一些leaderboard没写,以后再说吧,至少基础的部分都完成啦)拖了好久,期间有实习毕设等各种各样的事情阻碍了进程。

juruo_c的博客 1531

一些常见的索引方法调研

KDTree kd 树是一种对k维特征空间中的实例点进行存储以便对其快速检索的树形数据结构。 kd树是二叉树,核心思想是对 k 维特征空间不断切分(假设特征维度是768,对于(0,1,2,…,767)中的每一个维度,以中值递归切分)构造的树,每一个节点是一个超矩形,小于结点的样本划分到左子树,大于结点的样本划分到右子树。 树构造完毕后,最终检索时(1)从根结点出发,递归地向下访问kd树。若目标点 [公式] 当前维的坐标小于切分点的坐标,移动到左子树,否则移动到右子树,直至到达叶结点;(2)以此叶结

weixin_36378508的博客 1024

Learn Harness Engineering 教你构建完整的"harness"环境,让AI代理可靠完成真实工程任务,从0到1官方风格入门教程

使用AI编程助手时,常常遇到模型聪明却不靠谱的问题:代码写得飞起,却跳步、坏测试、早早喊"done",结果一堆烂摊子需要手动修。Learn Harness Engineering 教你构建完整的"harness"环境,让AI代理可靠完成真实工程任务,从0到1官方风格入门教程。不仅有12节沉浸式讲解+6个实战项目,还提供现成模板(AGENTS.md、feature_list.json、init.sh等),直接拷进项目就能提升稳定性。主要功能:- 5大核心子系统:指令、状态、验证、范围、会话生命周期;- 实战演进Electron知识库桌面应用,从prompt-only到完整harness;- 资源库模板,支持Claude Code、Codex等多代理工具;- PDF课程手册+可视化文档网站,中英文双语;- 快速上手skills/harness-creator/,几分钟生成生产级工作环境。支持本地运行(npm install && npm run docs:dev),适合工程师、研究者和技术负责人使用。

上一篇: 可靠性,可扩展性,可维护性-Designing Data-Intensve Applications-Ch1
XuRuiIsCoding
博客等级 码龄10年 14粉丝 36原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值