挖坑: 来分析分析多维分析系统 Doris

目前可能并不那么好用,但无碍它是一个设计精妙的 OLAP 系统。 基本背景 名词 解释 FE Frontend 角色,提供 SQL 解析与调度 BE Backend 角色,提供计算与存储 Broker 通过 Broker 隐藏访问远程文件系统(主要是 HDFS)的具体实现细节 Tablet 一张表的分片,分片数量由分区与分桶数的乘积决定 Rowset 一次新的导入可理解为记录新版本的数据,Rows…

深入 Kafka Core 的设计(事务篇)

本篇主要讨论幂等与事务特性。 生产者的幂等与顺序特性 生产者通过配置 enable.idempotence=true 开启幂等特性时,会同时自动配置 acks=all 与 retries=INT_MAX_VALUE 以辅助幂等特性的工作。 实现原理 生产者端 在生产者端,持有 TransactionManager 事务管理器,其记录了 <TopicPartition, ProducerIdA…

深入 Kafka Core 的设计(核心设计篇)

本篇主要讨论网络层基础架构、生产消费链路。 网络层 Broker 端 Reactor 模型 Broker 端的网络层设计基于 Reactor 模型。 在实际实现就是,EndPoint 对象提供监听的地址信息给 SocketServer 服务端对象,然后服务端启动一条 Acceptor 线程,专门用于 accept(2),并由 Acceptor 派生出 num.network.threads=3 条…

深入 Kafka Core 的设计(基础理论篇)

本篇主要围绕一致性副本复制协议、消息格式演进、消息落地上天以及其他细节的设计展开。 术语定义 名词 解释 Broker 又称 Kafka Server,是最基础的角色 Controller 一个 Broker 中活跃着 ZK 元数据管理服务的角色 Consumer GroupCoordinator 一个 Broker 中活跃着消费组元数据管理服务的角色 Consumer Group Leader/…

一个自制简易数据库 KxDB

背景 启发自一位富裕的女同事推荐的 CMU-15-445: CMU 的数据库系统课程,于是改头换脸地实现。 设计初衷: 实现高性能的存储引擎,减少内存复制延迟,以及实现更深入的 I/O 性能优化, 实现查询引擎,希望基于 KV 实现出复杂的查询优化场景, 使用 Lustre 类似的并行文件系统,并发对文件块进行查询(解决 LSM 树过分依赖 Compaction 来减少随机 I/O), 最终实现分…

数据仓库维度建模笔记

维度建模模型本质是对关系模型的修补,提出缓慢变化维度的处理方案,使其更适用于记录历史数据,同时由于数据仓库与业务数据库是独立的,因此提出一致性理论,使得新的业务也可以复用原有的数仓表。 数据仓库的建模第一步与关系建模过程一样,从业务过程开始分析,关系模型关注业务过程所需的字段,而服务于分析系统的维度建模,在此基础上还需要关心分析需求的指标(推动埋点的设计);然后构建总线矩阵梳理出原子粒度的维度表与…

探究 HBase Cluster Replication

Cluster Replication 在 HBase 中不是一件容易的事情(但似乎 HBase 中就没有容易的事情 🙃)。 在阅读本文之前,首先需要了解 Sequence ID(以下简称 SeqId),在 HBase 中,一个 Region 的 SeqId 相当于代表该 Region 的“年龄”,新的 Region(比如新表刚创建,或者刚由父 Region Split 出来的两个子 Region…