Postgres Blink-tree 的工程实现
Postgres Blink-tree 的实现参考了三篇论文: 论文 1:《Efficient Locking for Concurrent Operations on B-Trees》—— Blink-tree 的原始论文,但仅提出了 insert 的实现方案。 论文 2:《A symmetric c...
Postgres Blink-tree 的实现参考了三篇论文: 论文 1:《Efficient Locking for Concurrent Operations on B-Trees》—— Blink-tree 的原始论文,但仅提出了 insert 的实现方案。 论文 2:《A symmetric c...
列存具有「读友好,写不友好」的特点。这个特点使列存和 AP 数据库仿佛王八看绿豆一样 —— 对上眼了。因为 AP 数据库正好重视读性能(大查询吞吐量),不重视写性能(能容忍 T+1h/1d 更新)。 于是,列存顺理成章地霸占了 AP 数据库的存储底座。
网络上有很多贬低分布式数据库(e.g., TiDB, OceanBase),吹捧传统(单机)数据库(e.g., Postgres, MySQL)的文章,这类文章通常列出的一个关键论据是:传统数据库的性能可以全方位(各种负载下)击败分布式数据库(基于单机环境测试结果)。然而事实真的是这样的吗?作为一个利益相关的分布...
开局一张 DuckDB 团队提供的性能测试 checklist,然后再开始编本文的内容。
你是玩大数据的,你发现主流的湖仓存储都支持 Z-order clustering,你 TM 的还不知道这个是什么玩意儿。我 TM 的花了半个小时,画了 TM 的几张图,九浅一深地给你说明下,什么叫 TM 的 Z-order clustering。
你是否有疑问,为什么有的系统用一个活跃事务列表(e.g., PG 的 Snapshot,MySQL 的 ReadView)来实现 MVCC,有的系统(e.g., Spanner,TiDB,CockroachDB)用时间戳(Timestamp)来实现 MVCC?这两种技术的优缺点是什么样的,各自适合什么样的场景?本...
本文的主要内容: 介绍 LevelDB 的写入流程。 介绍 RocksDB 对 LevelDB 写入流程的部分优化(下一篇文章再补充其他优化)。
我宣布,Apache Kudu 项目,死了!
本文的主要内容: 介绍 LSM-tree 在 delete 上面临的一些性能问题。 介绍 RocksDB 和 Lethe 提供的一些优化方案。
改造 RocksDB 使其支持存算分离,这类工作之前就有团队做过,e.g., RockSet 的 RocksDB-cloud。眼看云时代的存储计算分离是大势所趋(从 share nothing 转向 share storage),RocksDB 官方再也按捺不住自己的大刀了,亲自下场,先搞了一个 RocksDB ...
本文来聊一下数据库中的 B-tree 压缩技术,探讨以下几个问题: 为什么 B-tree 需要压缩? 工业界都是怎么干的?包括 Postgres,Oracle,SQL Server,DB2,MySQL 等老油条数据库。
最近要在组内做个分享,讲一下 B-tree 并发控制的演进。由于最近大半年我一直在搞 LSM-tree,B-tree 的东西有点忘了,于是打算写下这篇文章打个草稿回忆一下,同时也希望对看到这篇文章的读者有一些帮助。
最近几天看了两篇 LSM-tree 优化的文章,简单总结一下。
之前有听说 CockroachDB 在跨地域部署(multi-region)方面的能力还不错,前段时间就花了几天时间研究了一下。主要是看了看 CockroachDB 在 SIGMOD 2022 上的一篇文章「Enabling the Next Generation of Multi-Region Applicat...
最近,我在工作中遇到了一个性能有问题的场景:客户的某种查询负载的 TPS 不满足他们的预期。经排查发现,瓶颈在二级索引 B-tree 的 range scan 上。老板知晓此事后,郑重其事的告诉我,赶紧把 B-tree 的 range scan 性能优化一下,这个客户是我们最头部的客户,要是优化不好,客户不满意,...
本文介绍一下 Facebook 的论文:MyRocks: LSM-Tree Database Storage Engine Serving Facebook’s Social Graph.
这篇文章直接贴上一个之前写的 PPT :)
Redshift 是 cloud-native 数据仓库的鼻祖,是值得我们持续重点关注的数据库产品之一。前段时间,Redshift 团队在 SIMMOD ‘22 上发表了一篇论文介绍 Redshift 的最新进展,本文来跟进解读一下。
本文的主要内容是介绍 ARIES 这一经典的 Recovery 算法。写作目的有两个,其一是尽我所能来帮助各位亲爱的读者快速地理解这个算法,其二是笔者想借助写这篇文章来加深一下对 ARIES 论文的理解。
1 Introduction 本文的写作目的是将分布式锁这一重要的分布式基础组件的几种典型设计与实现「剔肤见骨」地展示给各位读者(老毛病了,开头先自吹自擂一下)。写作背景是笔者在过去一段时间从事过分布式锁的研发工作,期间调研过多篇分布式锁典型实现的论文,在这里挑出比较优秀的三篇介绍一下。
F1 团队发表的论文 Online, Asynchronous schema change in F1 针对具有「无状态计算层」,「共享存储层」和「没有全局成员列表」的分布式数据库提出了一种 Schema 变更的方案,该方案具备在线(不加锁,不阻塞 DML),异步(允许集群中的不同节点在不同的时刻切换到新版本的 ...
最近在知乎上看到一个问题,大致问的是「PingCAP 裁员,国产数据库是不是要凉凉了」?PingCAP 的 TiDB 是我心目中的最牛的国产数据库,居然有人怀疑最牛的国产数据库和它所在的行业要凉凉了,我觉得这个想法很大胆,按捺不住写下这篇文章给出一个我的回答。
论证(Argument)是个人的核心能力之一。论证能力直接影响个人思想的表达与影响力的建立,进一步影响个人的前途。 我曾经花过一些时间思考这一重要技能,包括论证的理论和方法论。本文是对个人思考的一些总结,分享给大家,希望对大家有所帮助。
准确估算软件项目的时间有什么价值?低估和高估哪个危害更大?为什么准确估算很困难?我们又该如何实现准确估算?本文将探讨这些问题。
今天我用三个小时一口气读完了这本书。这本书是作者凯文·凯利(Kevin Kelly)为子女总结的人生建议,涵盖了为人处世的方方面面。