![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
CMU-15/445
文章平均质量分 87
CMU-15/445
yyy_3y
这个作者很懒,什么都没留下…
展开
-
CMU 15-445/645 Lab3-Query Execution
0.写在前面Lab3的地址:https://15445.courses.cs.cmu.edu/fall2020/project3/本文主要总结一下在写Lab3需要的基础知识以及Task的解决思路(不公开代码,如果有问题可以留言)。Lab3的主要内容是TableIndex1.Task #1 - SYSTEM CATALOG数据库维护一个内部目录(catalog)记录了整个数据库中的table和index信息。有了catalog,我们就可以从table/index的名字或id,找到这个table/i原创 2022-03-16 15:04:27 · 2307 阅读 · 0 评论 -
CMU 15-445/645-Note7-执行篇-Optimization
0.写在前面based on CMU 15-445/645 2020fall, Lecture #14~Lecture #15.由于SQL语句是以声明式的方式给出要求,所以在执行的过程中有很多的优化空间。Overview:1)在第一个阶段进行SQL Rewriter(对于规则的优化),将一些常量进行累加计算等等。2)接下来会把引用格式转换成内部的标识符,构建语法树(对应3)。(一个逻辑计划可能会对应许个物理计划)3)最后Optimizer的作用就是选择代价最小的物理计划(基于代价的搜索)。1原创 2022-03-13 22:37:07 · 431 阅读 · 0 评论 -
CMU 15-445/645-Note6-执行篇-Query Execution
0.写在前面based on CMU 15-445/645 2020fall, Lecture #12~Lecture #13.1:执行模型(PROCESSING MODEL)DBMS 的执行模型定义了系统执行查询计划(query plan)。每一个query plan都要实现一个next函数和一个init函数,对于next函数每次调用时,返回一个元组或空标记(如果没有更多元组)。主要有三种方法:Approach #1: Iterator ModelApproach #2: Materializ原创 2022-03-13 19:37:04 · 1935 阅读 · 0 评论 -
CMU 15-445/645-Note5-执行篇-Join
0.写在前面based on CMU 15-445/645 2020fall, Lecture #11.Join是数据库中非常常见的操作。对于Join操作,大致可以分为三种:Loop、Sort、Hash;下面是算法以及其时间的介绍。1:Join算法1.1Simple loop join最最最暴力的算法,二重循环。1.2 Block loop join由于可以用B - 2 个buffer来scan 关系R所以时间复杂度就可以减少非常多。也可以利用Index来进行优化:对于外层循环中的每原创 2022-03-13 16:19:49 · 343 阅读 · 0 评论 -
CMU 15-445/645-Note4-执行篇-Sort
0.写在前面based on CMU 15-445/645 2020fall, Lecture #10 ~ Lecture #.在关系型数据库中,我们通过声明式(Declarative)的语言SQL暴露统一的接口,屏蔽底层的实现。SQL语句在底层是通过执行器来进行执行的。1:数据库中的算法-Sort面向磁盘的数据库的主要特征就是其数据不能全部装入内存(如果能够全部装入内存,很多排序算法都可能应用),这时候我们需要溢出到磁盘的外部排序。order by、建立索引、去重(DISTINCT)等等操作原创 2022-03-13 15:49:40 · 1089 阅读 · 0 评论 -
CMU 15-445/645-Note2-数据库存储(下)
0.写在前面based on CMU 15-445/645 2020fall, Lecture #5.1: Buffer Pool Manager(BMP)一般数据库的标准配置是这样的前端 OLTP 数据库后端 OLAP 大型数据仓库(back-end data warehouse)这两者有时候被称为 Data Silo,即数据孤岛,数据存储相互独立,彼此之间不会真的交流,然后就可以进行 ETL(Extract Transform Load) 的操作,即将业务系统的数据经过抽取、清洗、转换之原创 2022-03-07 22:34:20 · 469 阅读 · 0 评论 -
CMU 15-445/645-Note10-Database Logging & Recovery
0.写在前面based on CMU 15-445/645 2020fall, Lecture #20 ~ Lecture #21.1: CRASH RECOVERYMotivation:当我们遇到崩溃和故障的时候,我们想要持久化对数据库的修改。恢复算法有2个part:1)针对DB运行中的transaction。2)当遇上重启或者崩溃的时候,利用第一个part中的信息来恢复。1.1 TypeType #1 – Transaction FailuresType #2 – System Fai原创 2022-02-19 21:16:29 · 535 阅读 · 0 评论 -
CMU 15-445/645 Homework #2
0.写在前面Homework2的一些知识总结。题目和sol可以去cmu-15-445 2020上找到。个人学习总结:https://github.com/kaniel-outis/CMU15-445Question 1: Cuckoo Hashingcuckoo是布谷鸟的意思,这种鸟有一种即狡猾又贪婪的习性,它不肯自己筑巢, 而是把蛋下到别的鸟巢里,而且它的幼鸟又会比别的鸟早出生,布谷幼鸟天生有一种残忍的动作,幼鸟会拼命把未出生的其它鸟蛋挤出窝巢,今后以便独享“养父 母”的食物。cuckoo has原创 2022-01-03 16:13:11 · 521 阅读 · 0 评论 -
CMU 15-445/645-Note3-索引篇
0.写在前面based on CMU 15-445/645 2020fall, Lecture #6 ~ Lecture #8.1: 数据库中的数据结构设计数据结构的目的:如何弄一个数据结构,使得无须对该数据结构进行大改或者每次要重新转换整个数据结构的情况下,支持快速读写。该如何让多个线程或者多个查询去访问这个数据结构,并且该数据结构表示的数据不会再物理存储层面出现问题,因为同时被线程修改的某个地址的数据会变成脏数据,从而让它们访问到某些无效的 page 或者是某些无效的内存位置。这里最关心的原创 2022-03-08 15:40:34 · 459 阅读 · 0 评论 -
CMU 15-445/645-Note8-CONCURRENCY CONTROL(上)
0.写在前面based on CMU 15-445/645 2020fall, Lecture #16 ~ Lecture #16.1: 事务(transaction)1.1定义它是指一些列操作序列(一个或一个以上)当一个事务被提交给了DBMS(数据库管理系统),则DBMS需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库中,如果事务中有的操作没有成功完成,则事务中的所有操作都需要被回滚,回到事务执行前的状态(要么全执行,要么全都不执行);同时,该事务对数据库或者其他事务的执行无影响,所原创 2022-02-17 20:26:48 · 607 阅读 · 0 评论 -
CMU 15-445/645 Lab2-B+Tree Index
0.写在前面GitHub同步更新,欢迎star~ https://github.com/kaniel-outis/CMU15-445Lab2的地址:https://15445.courses.cs.cmu.edu/fall2020/project2/本文主要总结一下在写Lab2遇到的几个问题,然后是Task的解决思路(不公开代码,如果有问题可以留言)。对应lab2-check point 1.Task #2.a - B+Tree Data Structure (Insertion & P原创 2022-03-12 21:22:00 · 1764 阅读 · 0 评论 -
CMU 15-445/645-Note11-Distributed Databases
0.写在前面based on CMU 15-445/645 2020fall, Lecture #21 ~ Lecture #24.1: SYSTEM ARCHITECTURE1)SHARED Everything:非分布式系统使用。2)SHARED Memory:多个CPU通过一个通信层去使用同一个内存。3)SHARED Disk:CPU上运行的worker有自己的本地内存,通过通信层共享磁盘。(可以直接扩充node,cpu之间需要通信来了解当前的状态)(云架构)4)SHARED Nothi原创 2022-02-22 23:39:07 · 362 阅读 · 0 评论 -
CMU 15-445/645 Lab1-BUFFER POOL
0.写在前面GitHub同步更新,欢迎star~ https://github.com/kaniel-outis/CMU15-445写这篇文章的时候看到 lecture 5:Buffer Pool. 写完homework 1,然后准备动手Lab1。Lab1的地址:https://15445.courses.cs.cmu.edu/fall2020/project1/Task1 - LRU REPLACEMENT POLICY这一部分的Lab在 lecture 5:Buffer Pool中有一些讲解原创 2021-12-26 21:48:34 · 1066 阅读 · 0 评论 -
CMU 15-445/645-Note1-数据库存储(上)
0.写在前面Lecture #1-2 是基础的sql知识。based on CMU 15-445/645 2020fall, Lecture #3 ~ Lecture #4.这门课是面向磁盘(Disk-Oriented)的数据库管理系统,之后的课程实验也都是以此为基础。Disk-Oriented:数据库的主要存储都是放在磁盘上的,意味着每次执行查询时,所要访问的数据都不在内存(Memory)中 (区别于Redis)。1: 计算机的存储结构1. 越上面的容量越小,速度越快,也越贵2. 越下面的原创 2022-03-07 16:52:47 · 715 阅读 · 0 评论 -
CMU 15-445/645-Note9-CONCURRENCY CONTROL(下)
0.写在前面based on CMU 15-445/645 2020fall, Lecture #18 ~ Lecture #19.1: 并发控制 - Timestamp Ordering (T/O)(上)中主要介绍2PL,在下中我们介绍并发控制的另一种方法Timestamp Ordering (T/O)。1.1 关于timestamp选择1.system clock:如果使用clock,那么在分布式系统中时间同步可能出现问题。(夏令时回调时间)2.logic counter:(32位或者64原创 2022-02-17 20:27:38 · 619 阅读 · 0 评论