创业故事:创始人1年完成8万行内核代码核心功能!

2022-01-20 00:00:00 用户 数据库 产品 技术 分布式

问题1:赵老师,您好!很荣幸有机会采访您,先简单介绍一下您自己?

各位读者大家好谢谢DTCCITPUB社区)给我这个机会让更多同行知道我和我们的公司泽拓科技以及我们的产品昆仑分布式数据库
我一直在数据库管理系统DBMS)设计和研发这个领域之前主要在OracleTeraData和腾讯等公司工作分别从事Berkeley DBMySQLPostgreSQL和TDSQL数据库的设计和研发
我的职业生涯起始于2007年的Oracle Berkeley DB全球研发团队Berkeley DB当时是MySQL的个支持事务的存储引擎即使现在的MySQL 的事务处理和handler接口的代码中仍然可以看到Berkeley DB的影子我初在Berkeley DB团队协助Berkeley DB的创始开发者Keith Bostic先生做一些简单的开发工作在他的帮助和指导之下我也学到了很多很多数据库系统的知识和技能用现在的流行语说是底层逻辑从而后来可以逐步做一些更高难度的开发工作所以我要感谢Keith Bostic, Michael Cahill, Mo Shen等同事对我的帮助和指导他们带我入门了数据库系统内核设计和研发的殿堂

2010年中我加入了Teradata我所在的小组负责基于PostgreSQL开发一个高性能的事务存储引擎我是小组的核心开发者之一完成了诸多核心功能的开发Jupiter项目使用这个项目由一位华人高管Jason Chen牵头产品设计和技术由Teradata当时的首席数据库科学家负责其构思非常的类似后来火起来的HTAP概念

我在2013年重新回到Oracle加入MySQL Optimizer团队从事MySQL查询优化的功能开发我负责重构MySQL的GIS查询处理利用InnoDB当时新增的rtree索引实现空间查询优化并且基于Boost.Geometry重新实现了MySQL的空间查询功能这些工作实现了MySQL的空间数据管理能力的飞跃在空间查询的精度和性能方面取得领先在此我要感谢Manyi Lu,NorvaldRoyOysteinTor等MySQL同事对我的帮助和支持

2015年底我加入了腾讯从事TDSQL的开发我加入时TDSQL1.的工作已经完成具备了强同步和扩容等功能不过当时的TDSQL1.还只是一个分库分表系统因为它当时还不具备分布式事务处理和分布式查询处理功能

我在2016年开始牵头设计和开发了TDSQL的分布式事务处理功能基于经典的两阶段提交2PC)算法实现了TDSQL的分布式事务处理功能在这个过程中解决了MySQL的一系列XA事务分布式事务的分支的容灾问题这样TDSQL的分布式事务处理就具备了坚不可摧的容错能力在此期间还指导我的同事实现了TDSQL的初步的分布式查询处理功能这样TDSQL就演变为一个分布式数据库系统了也就是TDSQL2.0。

直到今天 TDSQL2.0仍然支撑着腾讯公司内部大量业务并且在腾讯公有云服务和私有云产品中有大量外部用户包括众多头部银行客户

 

 问题2:2019年7月底从腾讯离职,便创立了泽拓科技,请问是怎样一个契机促使做的这个决定?


当时觉得分布式数据库是一个充满机遇的领域业界的产品还存在各种不足因而一个更好的产品和服务是有很多潜在用户的特别是DBaaS云服务有巨大的增长空间

在需求端人类生活深度的数字化还只是开了个头所以未来各行业的数据管理需求还会持续增加2019美国对中国在技术层面持续施压预测Oracle数据库也会在未来某个时间使用范围受限后来的信创和新基建证明这个预测是基本准确的

在产品端基于MySQL的分布式数据库当时只有TDSQL一家但是TDSQL在技术层面由于基于中间件迭代而来在查询处理方面有一些硬伤

基于MySQL做存储节点的分布式数据库具备天然的优势基于成熟的MySQL作为存储节点产品质量更加有保障借力MySQL生态有大量现成的人力资源DBA和应用开发者培训机构和讲师),互联网上也有大量开放的技术资源包括文档经验方案第三方工具等等因而用户迁移业务到这样的分布式数据库的心理负担会小化这是其他分布式数据库比如TiDBCockRoachDBOceanBase等不具备的

另外就是云计算大大简化了后端产品的交付工作量因为用户只要购买DBaaS服务即可完全省去了安装部署升级维护等日常工作甚至大大降低了DBA的工作量DBaaS在国内即使今天也只是刚开始在用户的观念层面还在逐渐接受的阶段我当时估计云服务和云平台未来一定会分开来现在已经有此趋势比如MongoDBRedisSparkKafkaSnowflake等明星产品都是各自背后的开发团队公司在各大公有云上面提供云服务的这种趋势未来还会继续发展公有云平台将会发展成为Mall各个产品就是Mall里面开的店面现在国内公有云平台主要是百货商场模式我认为这样的业务模式的人效较低云平台团队需要做的产品研发和服务的种类过多复杂性较高对估值不利因而将会进一步调整

 

 问题3:您之前在腾讯主要负责的工作是?现在创业后主要做的事情


我在腾讯负责主导TDSQL2.分布式数据库的设计和开发主要是分布式事务处理和分布式查询处理等核心功能集合

我的创业经历挺特别的2019年刚离开腾讯时我一个人开始了昆仑数据库这个项目我经过了1个月的思考和选型确定了昆仑数据库的产品定位系统架构接下来的一年多时间中我完成了昆仑数据库的基础的核心功能设计并且昆仑数据库的前8万行内核代码都是我一个人写的 --- 昆仑数据库的基本的核心功能括数据增删改查节点通信分布式事务处理分布式DDL执行和复制分布式查询处理等等那段时间充满了成就感像是在一大块荒无人烟的土地上面规划然后开拓探索充满乐趣和挑战性也非常辛苦

后来陆续有几位以前的同事和朋友加入大家一起工作更快也更有趣了大家在我初的工作的基础之上做了大量扩展改进和增强也增加了更多新功能新模块和组件使得产品更加完善和健壮功能更加全面性能更高在这个工作的过程中我们充分的讨论和沟通结合各自过往的工作经验和教训对技术路线方法做出取舍和决策所有人都收获了更多技术经验和认知看着团队一天天壮大我非常高兴打造一个高效协作的团队是创业公司在打造一个产品和服务之外的另一件‘产品’我现在会花更多时间在打造这件艺术品上面帮助团队每个人成长提高团队协作效率 同时还要观察行业发展动向在全局层面把握公司发展的方向

 

 问题4:当初为什么考虑进入数据库这个领域?


我们那届应届生拿到Oracle的offer时都有机会选择团队我当时选择了Berkeley DB这个团队我当时考虑的是数据是IT系统和IT产业的核心各种IT技术都是围绕数据展开的包括数据存储管理数据库文件系统),数据分析利用数据处理应用系统的后端技术数据中台等),数据传输各种网络技术),数据展示CG互联网前端等等因此数据库系统是数据存储管理利用的核心技术之一IT产业中具有极高的价值同时我一直对后端技术包括操作系统数据库网络等有很大的兴趣觉得里面的技术问题充满了挑战性和乐趣后台服务器软件系统的挑战性和魅力在于它要具备的稳定性可靠性和性能以及可维护性可观察性和安全性对各行各业的生产实践具备极其关键的作用这一系列技术目标组合起来全部实现在工程层面构成了的挑战设计和实现服务器软件系统需要全盘综合考虑业务和通用技术各方面的需求才能实现出的产品

特别是对于数据库系统来说它又是后台服务器系统中理论基础和要求高的其理论和技术基础包括关系代数SQL查询解析和优化事务处理高可用和容错网络通信等一系列基础的计算机理论和技术可以说是计算机科学和工程技术领域的少数顶峰之一具有无与伦比的魅力具有极高的使用价值对人类各行各业信息技术应用具有极其重要的作用和影响力所以我特别希望为这座高峰增添几块石头把它垒的更高雕刻的更加雄伟壮阔所以就选择了数据库系统这个方向加入了Berkeley DB团队在数据库系统的设计和研发这条道路上走到现在

 

 问题5:基于您这些年的工作经验您觉得分布式数据库进入到传统企业的核心交易系统有多长的路要走?


从需求层面说传统行业包括金融行业等有切实的分布式数据库的使用需求这些需求来自

1. 存储管理的热数据的规模TB级别很大而且持续增长

2. 需要承载的实时访问负载面向终端消费者的场景数千个数据库连接数十万QPS甚至更多较高波动范围较大促销活动以及其他用户活动随时间的自然波动等)。

所以一些传统行业已经在积极使用分布式数据库了

由于政策法规的要求以及业务和数据的极端重要性银行等金融机构对于采用新的数据库管理系统DBMS)产品是相当谨慎的这完全可以理解所以金融行业基本都是从外围业务以及服务开始逐步采用分布式数据库产品

什么时候可以进入银行的核心交易系统估计还要510年的时间这依赖于一系列核心技术的出现和应用包括高性能的非x86 CPUarm系列CPU在性能方面目前来说还无法完全替代x86),也包括分布式数据库产品在可靠性性能安全性等方面的进一步成熟和完善以及相关生态人员技术资源的进一步普及和发展

 

 问题6:分布式数据库解决高扩展高性能,同样数据一致性的问题也会凸显出来,还会有一些数据安全问题您怎么看


理论上完美的一致性就是一个一个地依次执行事务也就是所谓‘线性一致性’但是这种方法在实际中没有任何价值工程领域任何实用的技术都是为了在满足既定的正确性模型的基础之上达到高的性能甚至这个模型需要依照不同的问题而定义和供用户选择这也就是为什么数据库理论中有3种常用的事务隔离级别以及1种不实用的隔离级别dirty read)。为了在理论层面追求完美的一致性而失去性能和实用性的话就只是理论家的思维玩具了

数据库理论对于事务的数据一致性的定义ACID非常成熟可靠几十年的应用实践证明了其实用性和可靠性之间的完美平衡这些理论对分布式数据库也完全适用因为数据库事务处理的理论模型并没有假定数据存储的策略可以集中存储也可以分开存储

确保分布式事务数据一致性的手段和技术30年前就有国外学者研究通透了也就是两阶段提交等算法即two phase commit, 2PC,这些算法在过去30国外知名产品中都有广泛应用尽管经典的2PC算法的容错能力仍有漏洞而容错能力是昆仑数据库的强项我们对2PC做了一系列增强得到了生产实践的验证

在用户层面数据库系统的性能一致性的平衡和取舍是可以也需要动态调整的这通常依赖于场景和需求所以在昆仑数据库中我们给用户充分的调整空间让用户在性能和一致性之间取得对他们适当的平衡

数据安全方面目前业界的一些产品确实还有较大的进步的空间而昆仑数据库在数据安全方面具有巨大的优势例如我们支持多层级多粒度schema视图的访问控制以及全流程的加密数据传输数据文件和日志文件的加密存储等防止SQL注入的运行时安全技术prepared statement等等确保数据全生命周期的安全性

 

 问题7:您对未来国产数据库的发展是否看好 


我总体看好未来国产数据库的发展不过我希望给国内的同行们一些粗浅的建议我认为国内的基础软件厂商要着眼全球向全球用户中国市场虽然非常巨大并且国家对国产数据库等基础软件厂商有不少鼓励政策但是大家也不要忽略了中国以外的市场这个开拓的过程肯定更难国外的竞争也会更加激烈不过长远发展来看是很值得的

在思考昆仑数据库的天我们就着眼全球用户比如在产品层面目前昆仑数据库所有的源代码中代码注释和运行日志输出都是英文的同时昆仑数据库支持用户做所有标准的国际化internationalization, i18n和本地化localization, l10n)配置在研发流程方面我们的任务管理系统中几乎所有的bug报告和功能设计文档都是用英文写的并且我们也写了很多英文用户文档

总的来说我们的产品设计和开发过程中有完整的国际化思考这么做就是想让全球用户都能看懂方便全球用户使用昆仑数据库

我们的底层逻辑是计算机技术本来就没有国界限制所以要大化适用人群也就是全球化“国产”的思维有很大的局限性如果总想着国家的帮扶像温室里的花朵不会长的强壮自己的路还是要靠自己走华为是我们所有中国企业‘走出去’的榜样

 

 问题8:目前数据库百家齐放功能性比较全,您觉得在未来DBA是否会被人工智能取代?


DBA不会被人工智能取代也不会被云计算取代换句话说,目前为止机器技术和工具无法取代人类因为把这些技术和产品有效地运用起来还是需要通过有效训练和学习的人来实现所有自动化的产品都是对人类已有知识和经验的封装和固化却无法处理未知情况即使机器学习也是基于已有的框架和模型在学习也就是调整参数而已),无法自动建立新的框架和模型人类到目前为止还没有突破人类大脑的认知能力来建立与之匹配或者接近的新技术新产品来取代人类的认知能力和创造力因而人工智能无法在需要创造力也就是从1)的领域取代人类

以飞行员为例现代的主流客机都具备自动起飞巡航驾驶和自动降落的技术但是为什么仍然需要飞行员驾驶呢因为人写的飞机自动驾驶软件只能基于已有的航空空气动力学机械电子电气知识处理可以预知和遇到过的情况但是无法处理意外情况比如中国机长里面讲述的2018年5月14日四川航空3U8633航班英雄机组成功处置万米高空风挡破裂的事件机长刘传健完成了一系列高难度驾驶动作成功挽救了机上所有人员这样的超高难度处置措施是飞机的自动驾驶软件完全无法处理的

未来的DBA就像是飞行员一样其核心价值和需求是要能够处理紧急情况特殊情况和例外情况而不是执行常规操作因为常规操作是完全可以自动化和程序化的在昆仑数据库中我们根据过去在各大厂的分布式数据库开发和应用经验自动化了所有常规数据管理操作大化地降低DBA的日常繁碎劳动让他们聚焦真正高价值高难度的工作

 

 问题9:未来昆仑数据库是否持续开源?


昆仑数据库未来会持续开源并且维护社区版本分支开源对于我们来说是有益的我们希望达到的理想情况是昆仑数据库的客户大量来自开源社区升级为企业版本用户也就是Product Lead Growth PLG这方面我们目前做的不仅有开放源代码到githubgitee还包括开放我们的bug系统每天的自动化测试结果方便大家近距离关注我们的研发过程关注我们已经解决正在解决和将要解决的问题

未来我们还会增加更多的文档教程培训目前在我们官网的文档博客里面已经有很多文档和用法说明下载页面有很多ppt和pdf文档我们还会持续增加内容输出争取用户可以通过阅读这些技术资料靠自己就把昆仑数据库使用起来self service)。

 

 问题10:后,您对未来DBA或即将进入DBA这个行业的小伙伴有什么建议?


在人类生活持续数字化的今天和未来DBA是数据库系统的船长每个公司的数据库系统这艘大船或者舰队里面都装着这个公司有价值的信息都支撑着这个公司的各种业务的运行是这个公司的命脉所在因而这个船长的责任非常重大DBA的工作也就有非常高的价值希望大家多学习数据库系统的知识和技能并且结合实际工作观察和理解数据库系统的工作机制和原理不要满足于和止步于系统日常不出错就好否则一旦遇到关键情况就扛不住了那样就不是一个称职的船长了祝大家成功

相关文章