数据库系统实现
zealscott
https://tech.zealscott.com
展开
-
并发链表
实现支持并发安全的有序链表。 C++并发头文件<atomic>该头文主要声明了两个类, std::atomic 和 std::atomic_flag,另外还声明了一套 C 风格的原子类型和与 C 兼容的原子操作的函数。<thread>该头文件主要声明了 std::thread 类,另外 std::this_thread 命名空间也在该头文件中。...原创 2019-03-20 18:29:33 · 973 阅读 · 0 评论 -
LevelDB安装及使用
安装并使用LevelDB。 环境安装本项目基于Ubuntu 16.04.1 LTS,参考链接。建议预留50G空间,根目录20G,boot 500m,swap 2到4G,其他的都给home若使用虚拟机,建议使用sudo apt-get install gparted进行可视化分区及扩容(需要删除之前的wap分区)安装Clion官网下载解压并安装,运行clion.s...原创 2019-03-20 18:30:23 · 2740 阅读 · 0 评论 -
历史拉链表
使用UDW创建历史拉链表。 介绍历史拉链表历史拉链表是一种数据模型,主要针对数据仓库设计中表存储数据的方式而定义的。**它记录一个事物从开始到当前状态的所有变化的信息。**拉链表可以避免按每一天存储所有记录造成的海量存储问题,同时也是处理缓慢变化数据的一种常见方式。也就是说,对于表中的任何数据,不进行真正的删除,只记录操作和有效日期。流程其中,tmp0表有两个分区,表...原创 2019-03-20 18:36:12 · 3821 阅读 · 0 评论 -
基于锁的并发控制
实现基于2PL的事务处理原型。 基本概念Short duration lock 短锁动作开始前申请锁,动作结束立即把锁释放Long duration Lock 长锁动作开始前申请锁,动作结束继续持有锁2PL的思路事务从锁的角度看分为加锁和解锁两个阶段Growing加锁阶段,事务只获取锁,不释放锁Shrinking解锁阶段,事务只能释放锁,不能加新锁...原创 2019-05-22 21:01:34 · 1177 阅读 · 0 评论 -
基于时间戳的并发控制
实现基于时间戳的事务处理原型。 TO算法流程维护若干时间戳事务时间戳:以事务开始时间标识事务的先后顺序,表示为ts(T)数据项读写时间戳:记录读写该数据的最新事务的时间戳,表示为r_ts(X), w_ts(X)另每个数据项x有三个队列,分别为读队列dm_read(x),写队列dm_write(x),预写队列dm_pre(x)。min_R_ts(x),min_P_ts(x)分别为...原创 2019-05-22 21:02:28 · 5087 阅读 · 0 评论