
数据库
文章平均质量分 81
分布式数据管理
这个作者很懒,什么都没留下…
展开
-
【论文阅读】Zeus: Locality-aware Distributed Transactions
Zeus将事务需要修改的数据集中到单个节点,通过将分布式事务转变成单机事务来提高在具有高度访问局部性负载下系统的性能。与此同时,Zeus具有副本间强一致、支持非确定性事务、便于应用移植的特点。......原创 2022-06-05 17:22:15 · 1988 阅读 · 0 评论 -
[CMU 15-445] 19 多版本并发控制协议
1. Overview上一届介绍的2PL属于悲观的并发策略,事务的每一步操作都需要获得相应的锁才可以,大量的锁管理操作降低了事务处理性能。若本身负载中的不同事务发生读写冲突的概率很低甚至不会发生冲突的话,锁操作显得非常多余,等事务再执行过程中发生冲突时再终止就可以了,即一种乐观的并发控制思想。 2. Multi-Version Concurrency Control3. MVCC Control Design...原创 2021-11-08 21:22:36 · 2837 阅读 · 2 评论 -
[CMU 15-445] 18 基于时间戳的乐观并发协议
1. Overview上一届介绍的2PL属于悲观的并发策略,事务的每一步操作都需要获得相应的锁才可以,大量的锁管理操作降低了事务处理性能。若本身负载中的不同事务发生读写冲突的概率很低甚至不会发生冲突的话,锁操作显得非常多余,等事务再执行过程中发生冲突时再终止就可以了,即一种乐观的并发控制思想。 本小节主要介绍基于时间戳的客观并发控制策略。 2. Basic Timestamp Ordering(T/O) Protocol在基于时间戳并发控制协议中,每个事务都拥有一个唯一的时间戳标记,原创 2021-11-04 00:11:30 · 1375 阅读 · 0 评论 -
[CMU 15-445] 17 两阶段封锁协议
1. Overview前面一小节(并发控制理论)介绍了如何并发执行多个事务,设置检测机制判断执行调度满足可串行化。那些方法假设DBMS已知所有负载,然而,在真实系统中,系统往往并不知道用户在未来可能发送的所有请求,在这种情况下如何保证最终产生可串行化调度是一个新的问题。本小节介绍的两阶段封锁协议(2PL)是其中一种解决方式,它是一种悲观的解决策略,相应的,还有一类乐观的解决策略。 2. Lock Types在索引并发控制那一小节提到过,Lock和Latch的区别。Latch指物理层面对数据结构原创 2021-11-01 19:13:50 · 1736 阅读 · 0 评论 -
[CMU 15-445] 16 并发控制理论
1. Overview本小节主要介绍DBMS中并发控制和故障恢复,以及事务(Transaction)的相关内容。DBMS的存储和执行都可能涉及到并发控制,在DBMS中正确的将I/O和执行操作并行化将极大的提升系统性能。原本串行化执行的操作并行化执行将带来许多新的问题,例如更新丢失。同时,DBMS为了保证所有操作最终持久化到磁盘,需要具备故障恢复机制,当从故障中恢复后能够快速恢复到正确的状态。...原创 2021-10-27 20:57:43 · 466 阅读 · 0 评论 -
[CMU 15-445] 15 查询计划生成与优化 -Ⅱ
1. OverviewSQL作为声明式语句,不透露查询的具体实现细节。DBMS首先解析SQL语句得到逻辑计划,随后优化逻辑计划,最后为逻辑计划中的每个算子选择效率最高的物理执行方式,即物理查询计划。逻辑计划优化和物理计划优化统称为查询优化,决定了SQL语句的最终执行效率。2. Plan Cost Estimation3. Plan Enumeration4. Nested Sub-queries关注我的微信订阅号,交流数据管理与分布式系统相关技术:...原创 2021-10-23 19:04:00 · 360 阅读 · 0 评论 -
[CMU 15-445] 14 查询计划生成与优化 -Ⅰ
1. OverviewSQL作为声明式语句,不透露具体的查询实现细节。DBMS首先解析SQL语句得到逻辑计划,然后为逻辑计划中的每个算子选择效率最高的物理执行方式,即物理查询计划。逻辑计划优化和物理计划优化统称为查询优化,是DBMS中最难的部分,它决定了一条SQL语句的执行效率。最早的查询优化工作起源于70年代System R的工作,许多概念和技术沿用至今(涉及到CS底层的技术挥发性很低)查询优化方法可以分为两类,分别是基于规则的启发式方法和基于代价估计的方法。第一种方法最多只需要检查ca原创 2021-09-28 23:44:39 · 415 阅读 · 0 评论 -
[CMU 15-445] 13 查询执行 -Ⅱ
1. Overview前面介绍的都是基于单个Worker(线程)的查询树执行方式,本节主要介绍查询树的并发执行.并发执行查询树可以降低延时(单个任务的处理时间变少了),降低系统响应时长,提高吞吐率和可用性.并行数据库与分布式数据库的资源都不是集中的,区别在于资源的可靠性和通信的成本不同,分布式数据库的资源之间跨越不同物理机器,由于经过网络传输的原因,资源可靠性低且网络开销大.本节首先介绍几种并行处理模型,然后包括执行并行和I/O并行的问题.2. Process Model原创 2021-09-10 23:28:46 · 445 阅读 · 0 评论 -
[CMU 15-445] 12 查询执行 -Ⅰ
1. 概览本节介绍查询执行相关内容,包括查询处理模型、查询树叶节点磁盘访问效率和 Where 表达式性能评估.数据库中将查询算子组织成一棵查询树,数据从叶节点逐层传递到根节点,根节点的输出是查询最终的输出.2. Processing Models查询树的处理模型分为三种,分别是Iteration Model(就是常说的火山模型)、Materation Model 和 Vectorized/Batch Model. 没有适用于所有场景的模型,每种都有最适合的任务场景.Iterati原创 2021-09-06 08:32:34 · 304 阅读 · 0 评论 -
[CMU 15-445] 10 排序&聚合算子
1. 概览对于面向磁盘的DBMS而言,内存可能无法完全容纳一次任务的中间结果,这时算法需要将部分临时数据放在磁盘中,需要使用的时候再和内存中已有数据替换. 另外,为了在硬件访问速率上加快去重/聚合操作,预先也需要对内存和磁盘中的所有数据进行排序.基于以上原因,本小节主要介绍外部归并排序与数据库中的聚合操作实现原理.2. 外部归并排序数据库表中的tuple默认是无序的,但是对于某些算子而言,若数据是有序的将很容易实现(例如 DISTINCT, Bulk Loading, GROUP BY)原创 2021-08-21 10:54:36 · 405 阅读 · 0 评论 -
[CMU 15-445] 09 索引并发控制
1. 内容概览前面假设单个线程对索引进行操作,为了充分利用现代处理器多个核心以及弥补I/O延迟,这里讨论了多线程索引操作中的相关问题. 包括Latches,Hash Table Latching,B+ Tree Latching,叶节点扫描以及父节点延迟更新.2. LatchesLock指是数据库事务在执行阶段中一种逻辑上的锁,表示整个事务执行阶段对数据的占用. Latch指线程级别的锁,表示一个线程执行阶段对数据的占用. 具体区别如下:事务并发中的死锁一般可以通过死锁检测和处理机制处理原创 2021-08-15 22:04:32 · 522 阅读 · 0 评论 -
[CMU 15-445] 08 树索引 -Ⅱ
1. 内容概览本节介绍B+树的更多知识,包括重复的KEY处理、部分索引、Tries索引,倒排索引等.2. 处理重复Key前面一节讲过B+中处理重复KEY的方法,这里是从更宏观的角度看. 介绍了两种方案:在KEY后面加上Record ID使每个KEY变得唯一,或者给叶节点添加溢出节点专门存放重复的KEY.第一种方案中,每个叶节点的KEY都加上了Record ID,Record ID中包括Page和Offset,DBMS依然可以根据KEY前面的部分进行搜索.第二种方案中,重复的KEY原创 2021-08-14 16:23:13 · 255 阅读 · 0 评论 -
《CUDA并行程序设计:GPU编程指南》笔记 Chaper 3 CUDA 硬件描述
传统PC架构GPU硬件架构SM内部组成结构图原创 2018-09-22 20:00:50 · 323 阅读 · 0 评论 -
《CUDA并行程序设计:GPU编程指南》笔记 Chaper 4 环境搭建
关于平台:Windows、Linux、Mac OS都支持Windows下环境搭建顺序:(1) VS 2010 (必须先安装VS!,然后再安装其他)(2) CUDA ToolKit (在9.0版本中,显卡驱动以及Nsight调试器都已经集成在ToolKit中一并安装)Windows上支持Nsight调试器,这一点极为方便CUDA程序支持向后兼容INVIDIA 支持CUDA编程的GPU:h...原创 2018-09-27 11:24:46 · 416 阅读 · 2 评论 -
《CUDA并行程序设计:GPU编程指南》笔记 Chaper 2 使用GPU理解并行计算
并行计算中需要解决的问题资源共享多个线程与多个进程经常使用到同一个资源,产生临界资源,操作系统需要使用信号量来解决,这里不再赘述。并发性在面临的任务中,有一部分属于“易并行”,例如矩阵乘法,每个计算单元的输出相互独立,这类问题在GPU上可以得到很好的解决并且编程非常简单。对于“不易并行”的任务,各个计算单元之间存在依赖性。CUDA中,涉及块内的通信通过共享内存实现,块间通信需则要全局内存...原创 2018-09-19 15:38:35 · 417 阅读 · 0 评论 -
《CUDA并行程序设计:GPU编程指南》笔记 Chaper 1 超级计算简史
Chaper 1 超级计算简史超级计算机和桌面计算正在向着异构计算发展—人们试图通过将中央处理器(CPU)和图形处理器(GPU)技术混合在一起来实现更高的性能,让适合CPU的计算类型让CPU算,适合GPU的运算让GPU算,这也是一种分布式计算架构现大多数计算属于“内存受限型”,现代计算机三级缓存技术受到成本的考验历史上出现的超算发展实例:克雷(Cray)系列连接机,出现单指令多...原创 2018-09-12 21:05:09 · 506 阅读 · 0 评论 -
知识图谱1—概览
知识图谱1—概览知识图谱前世今生知识图谱由最早的语义网络发展过来而来,语义网是通过图结构来记录词语之间的语义关系(之后的还有本体论,Web,语义网,链接数据),而知识图谱对图中的节点意义进行扩充,每个节点对应于现实世界中的实体,整个图谱通过图记录现实世界中不同实体之间的关系,现在还有人提出”知识库”概念知识图谱技术意义由于Web中的数据会以不同的格式(结构、非结构、半结构)存在,这样而言,对于这些海原创 2017-10-29 09:17:26 · 725 阅读 · 0 评论 -
gStore 之 VS*-Tree
gStore:gStore是由北京大学计算机所数据管理实验室研发面向RDF知识图谱的开源图数据库系统(通常称为Triple Store)。不同于传统基于关系数据库的知识图谱数据管理方法,gStore是一种原生基于图数据模型(Native Graph Model)的RDF数据管理系统,维持了原始RDF知识图谱的图结构;其数据模型是有标签、有向的多边图,每个顶点对应着一个主体或客体。我们将面向RDF的S原创 2017-10-10 10:32:53 · 1365 阅读 · 0 评论