自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(978)
  • 资源 (10)
  • 收藏
  • 关注

原创 Doris数据库FE——FeServer

如下即为初始化中关于FeServer类的构造函数和start函数的具体代码。其start函数流程和构建thrift server行为一致,这里不介绍,仅说明其提供的接口。来承载,而查看代码仅用于 snapshot 的管理过程,其他的并非通过该接口实现。注 这里存在疑问 gRpc 和 thrift 接口混着用的目的,不太明确。在 FE 端与 BE 端均存在一个任务 Queue,如上图所示,从当前版本来看 thrift 实现的与 BE 之间的交互主要是用。

2023-10-31 00:00:00 316

原创 Doris数据库FE——全局事务状态机

从上述报错可以看出begin、commit、rollback等操作只有和insert操作结合使用。从上述可以猜测Doris数据库的事务性仅限于此。如下为全局事务支持的相关插入数据的操作。

2023-10-31 00:00:00 603

翻译 Diving Into Delta Lake: Unpacking The Transaction Log

The transaction log is key to understanding Delta Lake because it is the common thread that runs through many of its most important features, including ACID transactions, scalable metadata handling, time travel, and more. In this article, we’ll explore wha

2023-10-29 16:51:12 202

翻译 Understanding Modern Storage APIs: A systematic study of libaio, SPDK, and io_uring

Recent high-performance storage devices have exposed software inefficiencies in existing storage stacks, leading to a new breed of I/O stacks. The newest storage API of the Linux kernel is io_uring. We perform one of the first in-depth studies of io_uring,

2023-10-27 00:00:00 196

原创 Linux网络流量监控iftop

在 Linux 系统下即时监控服务器的网络带宽使用情况,有很多工具,比如 iptraf、nethogs 等等,但是推荐使用小巧但功能很强大的 iftop 工具【官网:http://www.ex-parrot.com/~pdw/iftop/】。iftop 是 Linux 系统一个免费的网卡实时流量监控工具,类似于 top 命令。

2023-10-26 00:00:00 166

翻译 How we built a vectorized execution engine

How we built a vectorized execution engine Written byAlfonso Subiotto Marques and Rafi Shamim on October 31, 2019CockroachDB is an OLTP database, specialized for serving high-throughput queries that read or write a small number of rows. As we gained more

2023-10-21 00:00:00 65

原创 Assembling a Query Engine From Spare Parts

构建一个新的云数据仓库是一项艰巨的挑战,需要对查询引擎和周围的云基础设施进行大量投资。考虑到成熟的空间,作为一家小型初创公司进入市场似乎是一项艰巨的任务。在Firebolt,我们在不到18个月的时间里组装了一个可工作的高性能云数据仓库。我们通过在现有项目的基础上构建查询引擎,然后在差异化功能上投入巨资来实现这一点。本文介绍了我们的决策过程和经验教训。

2023-10-20 00:00:00 254

原创 Internal and Tape Sorting Using the Replacement-Selection Technique

A general technique for sequencing unsorted records is presented. The technique is shown to be applicable for the first stage of a generalized sort program (the formation of initial strings) as well as for sorting records within a memory storage (an intern

2023-10-19 00:00:00 190

翻译 分布式原子提交协议——2PC

2PC says nothing about this behavior - it’s outside of the system model defined by the protocol. The read behavior isn’t defined by the protocol but rather the deployment configuration. 对于数据库,读取请求在提交之前到达。可以想象,一个邪恶的用户操作一个特制的协调器,故意让事务处于“停滞状态”,从而耗尽参与者的资源。

2023-10-17 00:00:00 91

翻译 Substrait: Cross-Language Serialization for Relational Algebra

For extensions, we need to provide extensionUris with the locations of the YAML files we used and extensions with the list of functions we used and which extension they come from. 对于扩展,我们需要为extensionUris提供我们使用的YAML文件的位置,以及我们使用的函数列表和它们来自哪个扩展的扩展。

2023-10-16 00:00:00 236

原创 Lakehouse: A New Generation of Open Platforms that Unify Data Warehousing and Advanced Analytics

本文认为,我们今天所知的数据仓库架构将在未来几年消亡,取而代之的是一种新的架构模式Lakehouse,它将(i)基于开放的直接访问数据格式,如Apache Parquet,(ii)对机器学习和数据科学具有一流的支持,以及(iii)提供最先进的性能。Lakehouses可以帮助解决数据仓库的几个主要挑战,包括数据的陈旧性、可靠性、总体拥有成本、数据锁定和有限的用例支持。我们讨论了该行业是如何向Lakehouses发展的,以及这种转变可能会如何影响数据管理工作。

2023-10-09 00:00:00 217

原创 Linux I/O schedulers类型简介

Changing an I/O scheduler is performed on a per block device basis. For example, for non-multi queue device /dev/sda one can see the current I/O schedulers available using the following: 更改I/O调度程序是在每个块设备的基础上执行的。I/O调度器试图平衡对高吞吐量的需求,同时试图在进程之间公平地共享I/O请求。

2023-10-06 00:00:00 223

原创 Doris数据库BE——冷热数据方案

其中 ROWSET 代表着数据导入批次,同一个ROWSET 一般代表着一个批次的导入任务,比如一次 stream load,一个 begin/commit 事务等,都对应一个 ROWSET,ROWSET 的这种特性,意味着其具有着事务的特点,即是说,同一个rowset可以作为一个独立的数据单元存在,其中的数据要么全部有效,要么全部无效。当数据需要转冷的时候,为该热数据分片创建一个冷数据的副本分片,然后将数据转储到冷数据指定的外部集群上,当冷数据副本生成完毕后,将热数据分片删除。

2023-10-05 00:00:00 363

原创 Doris数据库FE——启动流程源码详细解析

Doris中FE主要负责接收和返回客户端请求、元数据以及集群管理、查询计划生成等工作。代码路径:doris/fe/fe-core/src/main/java/org/apache/doris/DorisFE.java。

2023-09-28 00:00:00 553

原创 Doris数据库FE——SQL handleQuery

SQL解析在下文中指的是将一条sql语句经过一系列的解析最后生成一个完整的物理执行计划的过程。这个过程包括以下四个步骤:词法分析、语法分析、生成逻辑计划、生成物理计划。Doris SQL解析具体包括了六个步骤:词法分析,语法分析、语义分析,生成单机逻辑计划,生成分布式逻辑计划,生成物理计划。具体代码实现上包含以下五个步骤:Parse、Analyze、SinglePlan、DistributedPlan、Schedule。

2023-09-24 00:00:00 300

原创 Doris数据库FE——SQL 接收

不同类型的查询select, insert, show, set, alter table, create table等经过Parse阶段后生成不同的数据结构(SelectStmt, InsertStmt, ShowStmt, SetStmt, AlterStmt, AlterTableStmt, CreateTableStmt等),但他们都继承自Statement,并根据自己的语法规则进行一些特定的处理。然后提供start成员函数,其主要是调用mysqlServer.start()函数。

2023-09-18 00:00:00 270

原创 PostgreSQL数据库IPC——SI Message Queue

SI Message Queue代码位于src/backend/storage/ipc/sinvaladt.c和src/backend/storage/ipc/sinval.c文件中,属于PostgreSQL数据库IPC进程间通信的一种方式【之前介绍过PostgreSQL数据库PMsignal——后端进程\Postmaster信号通信也是作为PostgreSQL数据库IPC进程间通信的一种方式,主要用于进程间信号通信】,主要用于POSTGRES shared cache invalidation共享缓存失效

2023-09-14 00:00:00 170

原创 PostgreSQL数据库事务系统——获取virtual transaction id

如果一个事务没有进行INSERT、UPDATE、DELETE操作,那么就步会分配事务ID,但事务仍然用一个虚拟事务ID代表自己。虚拟事务ID由两部分组成,第一部分是Backend ID,另一个是每个会话自己维护的本地事务ID计数器。通过两部分组合,能保证这个虚拟事务ID的唯一性。在PostgreSQL数据库IPC——SI Message Queue中描述了Backend ID和local transaction id的产生流程。

2023-09-11 00:00:00 292

原创 StarRocks数据库FE——Catalog层

为了更简单地直接分析开放数据湖上的数据,StarRocks 提供了统一 Catalog 管理的能力,用户可以通过一键创建 Apache Hive/Apache Hudi/Apache Iceberg(以下简称 Hive/Hudi/Iceberg) 的 Catalog,轻松地分析湖上的所有数据,而无需逐个表进行 schema 建模。其中有一个字典对象catalogs,存放的是CatalogName到Catalog对象的映射,通过该catalog的名字查找catalogs就是获取对应的Catalog对象。

2023-09-08 00:00:00 517

原创 Doris数据库BE——Stream load

Doris是一款快速、可靠的分布式大数据仓库,是由阿里巴巴集团在2016年底开源发起的。它采用了分布式存储和计算技术,可以处理海量的数据,并且可以实现实时查询和快速分析。总体来说,Doris数据仓库是一套强大的分布式大数据处理系统,适用于需要处理海量数据的企业和组织。

2023-08-31 00:00:00 301

原创 Doris数据库BE——Stream load流程中事务状态

当数据在所有Executor BE节点完成写入之后,Coordinator BE节点会向FE发送Commit Transaction请求,FE会判断每一个Tablet成功写入数据的副本数量是否超过了Tablet副本总数的一半,如果每一个Tablet成功写入数据的副本数量都超过Tablet副本总数的一半(多数成功),则Commit Transaction成功,并将事务状态设置为COMMITTED;但是因为TCC是业务上的实现,所以他的适用范围更广,可以跨数据库、跨不同的业务系统来实现事务。

2023-08-31 00:00:00 658

原创 Doris数据库BE——rowset版本追踪

Doris构建一个版图来为维护上述版本的变更过程,实现过程:[0-0],[1-1],[2-2],[3-3],[4-4],[5-5],[6-6],[7-7],[8-8],[9-9],[10,10]。那么会生成10个rowset,rowset从1到10编号分别[0-0],[1-1],[2-2],[3-3],[4-4],[5-5],[6-6],[7-7],[8-8],[9-9],[10,10]。给定[0-10],从节点0开始,从下标最大的边开始,发现[0-10] 就是我们要找的最小的连续一致的rowset。

2023-08-30 00:00:00 237

原创 ORCA优化器浅析——DXLToPlStmt[CTranslatorDXLToPlStmt]

如上图所示是将plan_dxl转为plan_stmt的主入口函数。其主要工作就是创建plan_id_generator、motion_id_generator、param_id_generator和table_list、subplans_list,并将其设置到CContextDXLToPlStmt dxl_to_plan_stmt_ctxt中供后续流程调用;初始化CTranslatorDXLToPlStmt类,形参为MDACCESSOR和CContextDXLToPlStmt;

2023-08-22 00:00:00 226

原创 ORCA优化器浅析——DXLToPlStmt ForeignScan

将dyn_foreign_scan的foreignscan成员设置为foreign_scan_first_part,将dyn_foreign_scan->foreignscan.scan.plan.type设置为T_DynamicForeignScan,将dyn_foreign_scan->foreignscan.scan.scanrelid设置为index。1 提取形参tbl_scan_dxlnode有效信息【获取CDXLNode的m_dxl_op成员,转化为CDXLPhysicalTableScan;

2023-08-21 00:00:00 197

原创 ORCA优化器浅析——CDXLScalar Base class for representing scalar DXL operators

CDXLScalar类作为Base class for representing scalar DXL operators,该类只是定义一些接口,其中实现了GetDXLOperatorType函数,其返回EdxloptypeScalar,代表scalar DXL operators。

2023-08-17 00:00:00 157

原创 ORCA优化器浅析——IMDRelation Storage type of a relation GP6与GP7对比

下面是ErelstorageVirtual存储类型所涉及到的代码:CTranslatorRelcacheToDXL::RetrieveRelStorageType Get relation storage type根据存储类型字符获取其Erelstoragetype枚举类型。该枚举类型应该是不用的。从上面的对比可以看出AP7将分区表子分区混合存储这种情况单独作为了一种存储类型ErelstorageMixedPartitioned。

2023-08-15 06:00:00 222

原创 ORCA优化器浅析——CXform base class for all transformations

CXforml类作为所有transformation的基础类,其包含了pattern成员m_pexpr。主要是在exploration和implementation expression流程中使用,主要调用Transform函数。其还包含返回相关xforms的集合函数,比如PbsIndexJoinXforms等。

2023-08-14 02:30:00 195

原创 ORCA优化器浅析——CDXLOperator Base class for operators in a DXL tree

如上图所示,CDXLOperator作为Base class for operators in a DXL tree,其子类CDXLLogical、CDXLScalar、CDXLPhysical作为逻辑节点、物理节点和Scalar节点的DXL表示类,因此其包含了这些类的共同部分特性,比如获取其DXL节点表示的函数GetDXLOperator、获取其Operator类型的函数GetDXLOperatorType,如下图右侧所示。,即为AggFunc。

2023-08-14 00:00:00 174

原创 ORCA优化器浅析——CDXLScalarFilter Class for DXL filter operators

但是该函数在greeplum使用orca优化器流程中都没有调用,因为ScalarFilter是在Expr Tree转化为DXL Tree的流程中创建的,而非在QueryToDXL流程中调用,因此Query树中的qual表达式是被转化为其他CDXLScalar子类,而不是CDXLScalarFilter。CDXLScalarFilter相对于CDXLScalar没有增加其他数据成员。CDXLScalarFilter及其子类在CTranslatorExprToDXL流程中实例化,调用流程如下所示。

2023-08-14 00:00:00 193

转载 ORCA优化器浅析——Lifecyle Exploration, Implementation Optimization

一旦当前子组优化任务完成,它将检查继续是否有意义(例如,我们是否为前一个子组找到了有效的计划,以及我们是否已经超过了成本限制)。Once the group exploration of the children is done, the expression exploration job schedules all applicable exploration transforms for this expression. 一旦完成了子对象的组探索,表达式探索作业就为该表达式安排所有适用的探索转换。

2023-08-14 00:00:00 124

原创 ORCA优化器浅析——CFunctionProp function properties

从代码实现可以看出其也是通过CExpressionHandle接口来获取对应子表达式的CFunctionProp function properties,从而获取其易变属性值的。而COperator::PfpDeriveFromChildren则是调用EfsDeriveFromChildren函数获取易变属性,然后调用CFunctionProp构造函数创建函数属性变量。只要子表达式中的函数出现易变属性,将会掩盖其他函数的非易变属性。

2023-08-08 00:00:00 188

翻译 ORCA优化器浅析——Query DXL high level

Instead of rewritten parse tree, will use the term query tree going forward. In order to view the below serialized DXL Representation (generate the minidump) of the query tree, do the following:If the GUC optimize_minidump=always is not set, the Query Tre

2023-08-07 00:00:00 133

原创 ORCA优化器浅析——CQueryContext对优化器的要求

从ORCA优化器浅析——重要主流程概述中可以知道进入真正优化器引擎执行流程之前需要对优化器提出要求,比如后面会提到的required columns、required sort orders等。首先CQueryContext类是通过PqcGenerate函数构造的,其函数签名如下。由于CQueryContext实例将在CEngine::Init流程中被赋值给CEngine的m_pqc成员,所以CQueryContext对优化器的要求也将由CEngine管理,通过对m_pqc的跟踪,其主要调用的函数是。

2023-08-06 00:00:00 225

原创 ORCA优化器浅析——重要主流程概述

优化流程的重要函数如上所示,首先需要介绍一下最重要的类CSchedulerContext,如下图右上角所示,其包含三个重要成员:CJobFactory *m_pjf【生成CJOB任务类实例的工厂函数】、CScheduler *m_psched【调度器类用于调度任务类实例】、CEngine *m_peng【Optimization engine】。m_pexprBest用于存放当前search stage的最佳执行计划,m_costBest用于存放当前search stage的最佳执行计划的COST。

2023-08-04 00:00:00 210

原创 ORCA优化器浅析——QueryToDXL(CDXLLogical+CDXLScalar)主流程

Orca是Pivotal数据管理产品的新查询优化器,包括GPDB和HAWQ。Orca是一个基于Cascades操作时序框架的现代自上而下的查询优化器。虽然许多Cascades优化器与其主机系统紧密耦合,但Orca的一个独特功能是它能够作为独立的优化器在数据库系统之外运行。这种能力对于使用一个优化器支持具有不同计算架构(例如MPP和Hadoop)的产品至关重要。它还允许在Hadoop等新的查询处理范式中利用关系优化的广泛遗留问题。

2023-07-30 00:00:00 387 1

原创 ORCA优化器浅析——Exploration and Implementation Apply CXform Phase

GPORCA,规则分为两类:Exploration,是对逻辑表达式做等价变换的;Implementation,是把逻辑操作符转换为物理操作符。由于Exploration和Implementation流程一致,因此合在一起描述主要流程:(本篇文章仅关注第一步和第二步)

2023-07-27 00:00:00 221

原创 PostgreSQL数据库动态共享内存管理器——Dynamic shared memory areas

dsm.c提供的功能允许创建后端进程间共享的共享内存段。DSA利用多个DSM段提供共享内存heap;DSA可以利用已经存在的共享内存(DSM段)也可以创建额外的DSM段。和系统heap使用指针不同的是,DSA提供伪指针,可以转换为backend-local指针,但是该伪指针可以在后端进程之间共享,可以用于构建共享数据结构。每个DSA管理多个DSM段,可以向其中添加新段,不需要时detach它们。

2023-07-25 11:02:42 724

翻译 ORCA优化器浅析——Query Life Cycle

【代码】ORCA优化器浅析——Query Life Cycle。

2023-07-25 00:00:00 136

翻译 ORCA优化器浅析——How to use ORCA on Greenplum

【代码】ORCA优化器浅析——How to use ORCA on Greenplum。

2023-07-24 13:30:00 143

原创 ORCA优化器浅析——CJobGroupExpressionExploration探究

CJobGroupExpressionExploration类作为Explore group expression optimization job,主要负责创建给定组表达式的逻辑重写。

2023-07-24 00:00:00 200

etcd-main依赖包

etcd依赖包

2022-07-06

qttest.rar

博客Qt Creator源码分析系列——UI界面:FancyActionBar类,附带测试的代码。主要是从Qt Creator源代码中剥离出的一些关于界面的代码进行测试和分析。

2020-02-21

信息可视化 交互设计

本书是英国著名信息可视化专家Robert Spence教授的代表作,也是世界范围内信息可视化领域最为经典的教材之一。该书结构清晰,内容丰富,案例翔实,系统地介绍了信息可视化的概念、技术和应用。通过本书的学习,读者可以了解信息可视化的基本概念和知识,同时培养可视化和交互设计的基本技能。

2019-01-21

实时碰撞检测算法技术

本书详细阐述了与碰撞检测问题相关的高效解决方案及相应的数据结构和算法,主要包括:碰撞检测系统中的设计问题、数学和几何学入门、包围体、基本图元测试、层次包围体技术、空间划分、BSP树层次结构、凸体算法、基于GPU的碰撞检测、数值健壮性、几何健壮性以及优化操作。另外,本书还提供了相应的算法、代码以及伪代码,以帮助读者进一步理解计算方案的实现过程。

2019-01-21

GPU Pro 7 - Advanced Rendering Techniques

游戏开发、计算机图形学和渲染领域的业界大牛们优秀经验的分享合辑汇编,是江湖各大武林门派绝学经典招式的精华荟萃,可谓游戏开发、图形学和渲染领域进阶知识精彩绝伦的饕餮盛宴。

2019-01-18

嵌入式系统 硬件与软件架构

书中涵盖了嵌入式系统的各个方面,内容分为4个部分:第一部分包括嵌入式系统的基本介绍以及一些必备的知识;第二部分介绍嵌入式硬件,包括处理器、存储器、I/O以及总线;第三部分是关于嵌入式软件的介绍,包括设备驱动、操作系统及中间件和应用软件;第四部分介绍了嵌入式系统的设计与开发。此外,书中还包括大量图和计算机代码,帮助读者理解嵌入式系统的理论知识。

2019-01-18

时间触发嵌入式系统设计模式

时间触发嵌入式系统设计模式 使用8051系列微控制器开发可靠应用

2018-02-04

DVCC-8086实验指导书

DVCC-8086实验指导书 计算机实验箱实验手册及具体电路

2015-07-10

HTML入门教材

入门级别的html教材,帮助新手快速入门

2015-01-25

经典算法大全

c语言算法大全,适合新手提升自我的书籍,真的就只能说这模多了

2014-11-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除