![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库系统实现
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 · 959 阅读 · 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 · 2648 阅读 · 0 评论 -
历史拉链表
使用UDW创建历史拉链表。 介绍 历史拉链表 历史拉链表是一种数据模型,主要针对数据仓库设计中表存储数据的方式而定义的。**它记录一个事物从开始到当前状态的所有变化的信息。**拉链表可以避免按每一天存储所有记录造成的海量存储问题,同时也是处理缓慢变化数据的一种常见方式。 也就是说,对于表中的任何数据,不进行真正的删除,只记录操作和有效日期。 流程 其中,tmp0表有两个分区,表...原创 2019-03-20 18:36:12 · 3762 阅读 · 0 评论 -
基于锁的并发控制
实现基于2PL的事务处理原型。 基本概念 Short duration lock 短锁 动作开始前申请锁,动作结束立即把锁释放 Long duration Lock 长锁 动作开始前申请锁,动作结束继续持有锁 2PL的思路 事务从锁的角度看分为加锁和解锁两个阶段 Growing 加锁阶段,事务只获取锁,不释放锁 Shrinking 解锁阶段,事务只能释放锁,不能加新锁 ...原创 2019-05-22 21:01:34 · 1169 阅读 · 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 · 5052 阅读 · 0 评论