热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

虎哥与TokuDB的故事

听听虎哥谈Toku

张雁飞() Datafuse Labs 联合创始人

https://bohutang.me/2022/05/20/tokudb/

天天在知乎上装大佬给新手们指点迷津,告诉大家学习数据库技术的方法,今天就来聊聊虎哥是怎么进入数据库圈的,和 TokuDB 的故事。

TokuDB 又是个什么东东呢?

TokuDB 是一个“老古董“,在机械硬盘时代曾风靡一时,它有着不错的压缩,同时又兼具着不错的读、写能力,被各大厂用来解决容量+性能问题。

这个故事还得从 LevelDB 说起。

2011年,LevelDB 开放源代码,当时虎哥被这个清新的 kv 给吸引住了,很快就把它的源码翻了个底朝天,大概熟悉了这个 kv 的内部运行机制,从这个项目开始虎哥就正式开启了他的数据库之旅。

一边着手写原型,一边跟踪数据库技术的最新进展,当时虎哥把推上一些跟数据库相关的 tag 几乎都关注了,每天早上第一件事就是翻阅这些 tag 相关的推文,数据库这种高大上的技术太有吸引力了,每天都在琢磨着怎么能快速入门!

有趣的的事情是从 2012 年开始的,虎哥开始尝试实现 Skip List,然后琢磨怎么优化它,Skip List 玩腻了就开始玩 B-Tree,最后无聊到在饭馆门口等座的时候就可以写一个 B-Tree,当时想:数据库就这?于是决定再实现一个完整版的 kv ,项目代号 nessDB。

在研发 nessDB 过程中,偶然发现了来自 MIT CSAIL 的《Cache-Oblivious B-Trees》系列,他们通过对 B-Tree 做一个常数项优化从而让整体 IO 大幅降低,基于这个想法他们创立了 TokuTek 这家公司,全力研发 TokuDB 产品,干活的基本都是老板们最得意的学生,3 个学生做研发,外加贝尔实验室的老手 Rik 做架构(这位老哥是个神人,能力非常了得,贝尔实验室硬核精神的体现者,目前已经退休,前段时间还邀请他加入我们的初创公司,由于家庭原因,暂时无法全职工作)。

当时 TokuDB 还是闭源产品,很多资料都是来自 TokuTek 官网以及老板们的几篇 Paper,2012 年底终于跟 TokuDB 主程 Leif 取得了联系,每周我们都会通过gtalk 进行沟通,在 Leif 专业的指导下,虎哥在 2013 年实现一个非常简化的 TokuDB(Fractal-Tree Index),感觉到达了人生的巅峰,走路姿势都不一样了,成为了掌握数据库核心技术的人!

2013 年 4月 22 号,TokuDB 正式开源,虎哥开始研究其源码,最后发现跟之前推测的差不太多,但是 TokuDB 为了集成到 MySQL 作为一个 Storage Engine,做了大量的工作,比如 tokudb-engine 就是对接 MySQL Plugin 层的,而真正核心的是 ft-index,一个基于 Fractal-Tree 实现的 kv 存储。

随后,虎哥由于工作需要就全面投入 TokuDB 的研发工作,先是给 TokuDB 实现了一个 hot backup,让 Xtrabackup 也可以热备 TokuDB 的数据,这个过程需要对 TokuDB 内核做一些改动,虎哥把这个思路同步给了 TokuTek,结果他们当时的VP Tim 给发了一份邮件:Hey, send me your name/address, we owe you something as the "first TokuDB contributor"!

结果他们从美国给邮寄了一个 TokuMX 的T恤,TokuMX 是基于 TokuDB 的 MongoDB(当时的 MongoDB 还在使用 MMAP 苦苦挣扎,TokuMX 当时有不少用户),还有一个小小的 TokuDB 蓝色贴纸,上面简单的印着 “First TokuDB Contributor”。

虎哥内心是无比激动的,依然记得那个阳光明媚的下午,在繁华的 WFC 收到了一个被磨蜕皮的编织袋,由FedEx承运,这是来自大洋彼岸的关怀!

随后的一段时间内,开源 TokuDB 都是 TokuTek 在折腾,几乎没有社区可言,这种东西外人很难入手,而且他们的能力极强,重构一个大的模块几周就搞定,虎哥也孤独的维护着公司内部的 TokuDB 分支,修 bug,增加 feature。

2015 年 4 月份,虎哥盛情邀请 Leif 来中国,带他逛了一些知名景点,临走前一天,Leif 找了后海的一家酒吧,很豪情的说反正回到美国,换汇的人民币也用不着了,咱们不醉不归。

Leif 边点酒边介绍这个酒的味道以及在美国的欢迎度,每点一个新酒,自己先尝一口后再把口杯转 180 度,俩人整了半天,最后 Leif 透漏一个消息,TokuDB 已经被老板卖给了Percona,他们原班人马一个都不会过去,理由是 bla bla…,Google 给了他们团队发了 Offer,但他发誓这辈子再也不碰 Database 这个行业,说是太辛苦,看来 TokuDB 这个事情对他们伤害蛮大。

话说 TokuDB 被 Percona 收购后,很快成为了一个烂摊子,也慢慢停止维护,他们 CTO 也多次邀请虎哥加入,都被婉拒。

2016 年,虎哥和 Rik 成立了 XeLabs 组织,负责 TokuDB 版本的持续维护,这个版本被多家公司使用,稳定支撑着上万个 TokuDB 实例运行,最终由于精力有限,项目也逐渐停更,维护 MySQL 版本没那么容易,改一个小地方就需要做一堆测试,好歹 TokuDB 工程质量非常好,bug 已经很少,即使现在使用问题也不大,只是现在是 Cloud Database 的天下,很少有人再去部署 MySQL 了。

好了,这就是虎哥和 TokuDB 的故事。

虎哥还有和分布式数据库的故事,和数仓的故事,故事太多了,真惆怅.




推荐阅读
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • MongoDB用户验证auth的权限设置及角色说明
    本文介绍了MongoDB用户验证auth的权限设置,包括readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase、cluster相关的权限以及root权限等角色的说明和使用方法。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • tcp/ip 高清大图
    为什么80%的码农都做不了架构师?转载于:https:my.oschina.netgsbhzb ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
author-avatar
赤木律孑
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有