CMU15-445(2)Project 0
主要记录一些注意事项
关于第一次运行项目的一些坑
本地测试都使用了DISABLE标记,需要加上参数--gtest_also_run_disabled_tests才能运行测试用例,一种方便的解决方法是这样配置launch.json文件
123456789101112131415161718192021222324252627{ "version": "0.2.0", "configurations": [ { "name": "Debug disabled test", "type": "cppdbg", "request": "launch", "program": "${command:cmake.launchTargetPath ...
CMU15-445(1)Database
暂时只是零散的记录一些东西,等有了整体的认知之后再整理
数据库领域最重要的一句话: 天下没有免费的午餐,各种设计都有其优缺点。
数据库系统结构,从上往下
Query Plan 查询计划
Operator Execution 执行操作
Access Methods 访问方法(向上提供访问方法)
Buffer Pool Manager 缓冲区管理器(将磁盘内容载入内存)
Disk Manager 磁盘管理器
Page
硬件Page,通常大小为4kb,操作是原子的
操作系统Page,通常大小为4kb,有巨页
数据库系统Page,数据库系统自己定义的Page
面向元组存储
行存储常使用槽页,槽数组从前往后扩展,元组从后往前扩展。槽数组存储偏移值。
日志结构存储
内存中有一个mem表,用于快速更新,如果mem表满了就写入disk中的SSTable,在disk中有层级,每当一层满了后就合并SSTable并将新的SSTable放入下一层级。
缺点:元组生命周期伴随整个数据库,
索引组织存储
CMU15-445(0)开始
不知不觉好久没有写博客,自从开始考虑工作之后就日渐焦虑,打了一年铁开始准备找工作才发现自己只会C++,再加上可能是生涯最后一场XCPC的CCPC东北邀请赛因为不会看钟喜提铜牌,一直都感觉干什么都提不起劲,
直到昨天看到C++群群主的回答想走数据库内核方向,该怎么办? - soulmate的回答 - 知乎,才又明确了方向。我一直都希望以后的工作能够是偏向计算机底层的基础设施,比如系统、引擎、框架,但又担心找不到工作,毕竟计算机大部分都是前端后端,很少看到招这些的厂商。也因此学了Go,准备走后端路线。但是现在既然看到了一条理想中的全新道路,并且有一点希望,我还是决定拼一把,遵从内心的选择,选择一条虽然难度可能很大但是喜欢的道路,就像当年选择打ACM一样。