从摩托罗拉、诺基亚再到航空领域应用,这款开源数据库的成功如何成就天才程序员?

本文主要是介绍从摩托罗拉、诺基亚再到航空领域应用,这款开源数据库的成功如何成就天才程序员?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

从摩托罗拉、诺基亚再到航空领域应用,这款开源数据库的成功如何成就天才程序员?...

40+行业专场、100+科技成果、300+大咖云集,相约2021 腾讯数字生态大会
描绘云、AI、大数据、安全等关键技术的发展蓝图,展示腾讯最新的研究成果、战略规划、技术产品、解决方案!直播通道已开启,马上预约!

作者 | Richard Hipp     

编译 | 马超

出品 | CSDN(ID:CSDNnews)

如果说有什么事物能够使男程序员心中的父爱完全觉醒,那我想一定是投身于自己创建的开源项目中去了。在和熊谱翔、黄东旭等储多开源大神的接触中,我可以明显感到他们对于自身开源项目的那份执着与热爱。虽然说贝佐斯、盖茨等IT巨头创始人都能在公司走上正轨后卸任CEO,完成华丽转身,但是为了维护自己的开源项目,程序员们往往都是从一而终,从不始乱终弃。

不过这也带来了一个衍生的问题,那就是开源项目尤其是由初创团队建立的开源项目到底如何赚钱,怎么保持持续活力?我们看到之前Linux的创始人林纳斯就吐槽说现在的社区几乎靠他们这一代年过50的老年程序员维系,年轻人似乎不喜欢内核编程,甚至还有不少大学及企业只热衷于在内核中“注水”去刷KPI,真不知道再过20年Linux会路向何方,可见即使是顶级的开源项目也有着自己的隐忧,更遑论其它小众的开源项目了。

还有一个现象也特别值得我们注意,那就是很多开源项目承担了巨大的责任,不过其营收却非常惨淡。熟悉信息安全方面的读者肯定知道,很多安全检测所找到的漏洞都来自于开源项目 OpenSSL,这个实现SSL安全加密的C代码库,承载了全球17%的加密流量,不过令人震惊的是这个项目每年却仅能收到2000美元的捐款。

将心比心像笔者这样经常写文章的程序员也会极力维护自己的文字,虽然也有梦想建立一个开源项目,但是开源到底意味着什么我却根本没有能力思考清楚,不过最近我在无意听到一个名为CoRecursive的播客,并在其中听到了Richard Hipp亲身介绍SQLite成长过程中,初创人员口述的心路历程颇令人触动,Richard在访谈中所做的表述非常真实坦率,接下来就对原文(https://corecursive.com/066-sqlite-with-richard-hipp/)进行了简译,与大家共享SQLite不为人知的故事。

无处不在的Sqlite

SQLite目前正在成为世界的核心基础设施,变得无处不在。SQLite存在于网络浏览器中,存在于手机中,存在于汽车中,甚至存在于飞机中。Sqlite几乎垄断了社交软件,不管是iMessages还是微信、WhatsApp,消息存储引擎都是SQLite,哪怕只是在计算机上简单的查找*.db文件,你也会惊讶于为什么电脑中会存在这么多的Sqlite 数据库,它是世界上装机最多的数据库,没有之一。从Richard 的分享中我们看到,SQLite的诞生最早源于他对Informix的失望。

目前的信息系统像是一艘大且复杂的巨轮,假如行驶过程中出现管道破裂,那么船员通过关闭管道一侧的阀门来隔离损坏,随后还需要打开其他地方的阀门以将工作流体恢复到下游的其他系统中,这样操作的话它们就不会造成重大损失。但想找到这些阀门却越来越复杂,拆了东墙补西墙的情况笔笔皆是。像Informix这样的传统数据库和这样一艘巨轮的情况非常相似,虽然程序员按照操作手册去维护系统可以解决问题,但是手册却越来越厚,查阅手册所需要的时间更是越来越长。

P or NP这是个问题

一般咱们程序员在设计系统时,往往都会在性能可以接受的情况下,先寻求快速的近似解,而不会考虑做极致的优化,虽然程序员们试图编写代码来解决问题,但却很少真正深入的分析问题。

在创立SQLite之前,Richard正在领导一个致力于极致技术优化的团队,但他们使用的数据库产品Informix却没有获得团队的一致认可。一旦数据库宕机,应用程序就无法运行,由于一般的应用开发者对数据库服务器没有太多控制权,但却对应用的可用性承担绝对责任,因此经常有程序员因为数据的问题而背锅。

Richard的团队开始用原认知来分析这样的问题,他们一连问了三个问题,为什么我们需要专门的服务器?为什么不直接从磁盘中读取数据?为什么不能尽量减轻数据库服务的依赖项?环顾四周,Richard发现几乎每个数据库产品都附带了一个庞大的产品线,一个个近似解堆砌的结果就是变得异常的低效臃肿。这也让Richard萌生了自己写一个轻量级数据库的想法。

初版本的诞生

2000 年的时候,网民们大多还只能选择用电话拨号的方式上网,即使在美国家庭拥有宽带普及率也就只有1%。Richard在创立SQLite之初并没有谷歌等神器来帮忙,只能靠自己动手丰衣足食。在最初的版本中,Richard将每个SQL语句视为一个程序,他们实际上构建了一个编译器,将SQL语句转化成了可执行的汇编代码,这其实就是最早的SQLite了。后来Richard的团队将SQLite发布在互联网上,出乎他们的意料,很多人开始使用这个并不成熟的轻量级数据库产品,并给出了热情洋溢的评价与反馈,可能恰恰就是这些最初的鼓励,SQLite正式开启了开源之路。

从摩托罗拉到诺基亚-Sqlite连获大单

在SQLite诞生一年以后,Richard接到了摩托罗拉的电话,当时摩托罗拉正在设计一个新的手机操作系统,他们希望SQLite成为其手机上的数据库引擎。收到邀请后,Richard立刻给出了肯定的答复。

经过团队内部的协商,Richard最终给出了8万美元的报价。虽然按照实际的工作量来说,这钱不多,但对于当时那个正在开源方面苦苦找寻方向的初创团队来讲,第一桶金的价值根本无法用金钱衡量。

在顺利完成摩托罗拉的项目之后,美国在线(AOL)也开始与Richard接触,美国在线与Richard一道,完成了CD当中的数据库需求。

接下来是诺基亚的Symbian OS团队,在诺基亚的选型中,SQLite打败了其它10个数据库引擎,成为了最终的胜出者。后续在接连得到Mozilla和Adobe的支持后,他们和Symbian共同组成了SQLite联盟,这也为SQLite后续发展壮大添砖加瓦。 

当然SQLite能有今天的成就,最关键的一点在于他们在移动互联网上的眼光非常超前,早在2005年,Richard就开始与Android的开发人员进行了沟通,要知道3年之后Android被谷歌以4亿美元收购后才真正在业界扬名。不仅如此他们还为黑莓与IPhone,Windows Mobile都进行了适配工作,这种押注赛道而非单品的风格也值得我们学习。

可能是由于同性相吸,在全面进行了验证工作后,SQLite团队选择全力支持同样也是开源项目的Android,因为Richard的团队完全可以在Android的Linux环境下用GDB调试SQLite,这个吸引力太大了。

升华-航空标准的严格测试

在经历了一段颇为顺利的发展期之后,Richard和他的团队开始四处吹嘘 SQLite是一款不存在任何错误可能性的数据库,不过在为航天公司罗克韦尔柯林斯工作的时候,Richard开始明白消费级电子与航空技术对于基础软件的要求,完全不可同日而语。

罗克韦尔柯林斯向Richard介绍了 DO-178B 标准的概念,由于笔者并没有在网上查到这项航空产品质量标准的原文,所以下面就只能引用访谈原文中的大多介绍了,与许多质量标准不同,DO-178B可读性很强,虽然也有一些官话套话,但只要遵守这个标准就可以真正提高软件的质量,虽然这是一本要花费几百美元却还很薄的书,但Richard认为这笔钱花得很值,达到航空标准的关键在于100% 的 MCDC 测试覆盖率。

按照笔者的理解MCDC实际是一个形式化验证的过程,有点类似于操作系统SEL4的概念,这个验证标准不但要覆盖所有的分支,还要覆盖达到分支前所有可达的路径,比如代码执行到第4个分支之前可以有1-2-3、3-2-1、3-1-2等等可达路径,那么验证就要100% 覆盖上述所有执行路径,而且这个覆盖还要以汇编语言为基准进行。

Richard的团队用了整整一年996的代价,完成了数十亿个测试用例,才最终完成MCDC的工作。不过完成了这项工作后,SQLite也升级了,没有重大错误不再是一句空谈的口号。

第一性构建原则

个人认为SQLite能够成功最重要的原因还是在于,Richard团队使用第一性来构建产品,随着产品的不断迭代,Richard总是自己动手去实现算法,而不是从网上照搬原有的解决方案。就如Richard所说,在实际工作中,学校里学习的数据结构知识可能早就忘光了,不过在SQLite用到B+树的时候,Richard直接抄起《The Art of Computer Programming》,翻到搜索的章节,找到B+树的伪代码,学习相关思想然后动手实现,光是这份执着就值得我们学习。

给开源开发者的建议

现在的SQLite已经是一个可以自我生长的完整生态了,Richard 的数据库是世界上使用最多的数据库,从某些方面来说,它是SQLite甚至是部署最广泛的软件模块。

最初的SQLite仅仅源于一个不需要实体服务器,直接与磁盘交互的疯狂想法,如果你当时去问任何数据库方面的专家,得到的结论都会是这种方案永远行不通。不过幸运的是,Richard当时不认识任何专家,后来自己还成了专家,可以说开源最需要的是对梦想的执着,而不是理性的分析,这也是对我最大的启发。

原文:https://corecursive.com/066-sqlite-with-richard-hipp/

声明:本文由CSDN编译,转载请注明来源。

  1. ☞马化腾:《王者荣耀》将举办AI电竞赛;美团发布自研无人机,15分钟配送到家;微软将为员工发放1500美元奖金|极客头条☞为什么大家都喜欢在开源社区“吵架”?
  2. ☞谷歌弃用 APK 格式!替代品 AAB 有何优势?

http://www.taodudu.cc/news/show-8422000.html

相关文章:

  • Onlyoffice本地部署超详细教程(附协作空间2.0新资讯)
  • Office2022下载安装教程
  • PSM流程
  • 举一个通俗的例子理解psm、did、psm-did
  • 因果推断--PSM的原理和应用(二)
  • PSM:协议状态机(Protocol State Machine),一款用于流式传输的数据协议解析组件
  • 嵌入式入门教学——C51(中)
  • CMake从零开始—新手入门(一)
  • C#入门
  • LaTeX极简入门
  • 搞IT一定要计算机专业吗?这些硅谷大佬都不是CS专业的...
  • 饭否经典
  • ProGuard Version5.2(4.2)Manual--Usage
  • 据说是贫语,相当有才
  • 不要再用 APP 监管孩子了,背后的代价承担不起!
  • 下列组合中可以迅速锁定计算机的是,与流动负债相比,非流动负债具有()等特点。...
  • 为啥你还在用powerpoint?
  • 超前预告 | 云原生?大模型?这届乌镇双态IT大会亮点有点多
  • 强化学习研究进展:在工业过程控制中的介绍与应用
  • 雅思听力全薇机经免费分享 雅思听力相关基础必懂知识
  • 主观世界模型的3类4组18个惊奇的理论分析
  • 医疗领域构建自然语言处理系统的经验教训
  • 基于字符的NLP
  • SAP-跨模块知识Tips-分类管理(01)-概览
  • RHCE-B4. 使用 RHEL 系统角色软件包创建配置时间角色
  • 纯数组实现三子棋版本三
  • 13、Android SDK命令行工具dumpsys
  • linux 服务端抓包,服务端的抓包
  • 地沟油 swill-cooked dirty oil
  • tcpdump 命令的常用选项:二
  • 这篇关于从摩托罗拉、诺基亚再到航空领域应用,这款开源数据库的成功如何成就天才程序员?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



    http://www.chinasem.cn/article/600798

    相关文章

    关于如何更好管理好数据库的一点思考

    本文尝试从数据库设计理论、ER图简介、性能优化、避免过度设计及权限管理方面进行思考阐述。 一、数据库范式 以下通过详细的示例说明数据库范式的概念,将逐步规范化一个例子,逐级说明每个范式的要求和变换过程。 示例:学生课程登记系统 初始表格如下: 学生ID学生姓名课程ID课程名称教师教师办公室1张三101数学王老师101室2李四102英语李老师102室3王五101数学王老师101室4赵六103物理陈

    数据库期末复习知识点

    A卷 1. 选择题(30') 2. 判断范式(10') 判断到第三范式 3. 程序填空(20') 4. 分析填空(15') 5. 写SQL(25') 5'一题 恶性 B卷 1. 单选(30') 2. 填空 (20') 3. 程序填空(20') 4. 写SQL(30') 知识点 第一章 数据库管理系统(DBMS)  主要功能 数据定义功能 (DDL, 数据定义语

    给数据库的表添加字段

    周五有一个需求是这样的: 原来数据库有一个表B,现在需要添加一个字段C,我把代码中增删改查部分进行了修改, 比如insert中也添入了字段C。 但没有考虑到一个问题,数据库的兼容性。因为之前的版本已经投入使用了,再升级的话,需要进行兼容处理,当时脑子都蒙了,转不过来,后来同事解决了这个问题。 现在想想,思路就是,把数据库的表结构存入文件中,如xxx.sql 实时更新该文件: CREAT

    亮相WOT全球技术创新大会,揭秘火山引擎边缘容器技术在泛CDN场景的应用与实践

    2024年6月21日-22日,51CTO“WOT全球技术创新大会2024”在北京举办。火山引擎边缘计算架构师李志明受邀参与,以“边缘容器技术在泛CDN场景的应用和实践”为主题,与多位行业资深专家,共同探讨泛CDN行业技术架构以及云原生与边缘计算的发展和展望。 火山引擎边缘计算架构师李志明表示:为更好地解决传统泛CDN类业务运行中的问题,火山引擎边缘容器团队参考行业做法,结合实践经验,打造火山

    自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用

    自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用。如果你看不懂,请留言。 完整代码: <!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><ti

    Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

    st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

    SQL Server中,查询数据库中有多少个表,以及数据库其余类型数据统计查询

    sqlserver查询数据库中有多少个表 sql server 数表:select count(1) from sysobjects where xtype='U'数视图:select count(1) from sysobjects where xtype='V'数存储过程select count(1) from sysobjects where xtype='P' SE

    SQL Server中,添加数据库到AlwaysOn高可用性组条件

    1、将数据添加到AlwaysOn高可用性组,需要满足以下条件: 2、更多具体AlwaysOn设置,参考:https://msdn.microsoft.com/zh-cn/library/windows/apps/ff878487(v=sql.120).aspx 注:上述资源来自MSDN。

    SQL Server中,用Restore DataBase把数据库还原到指定的路径

    restore database 数据库名 from disk='备份文件路径' with move '数据库文件名' to '数据库文件放置路径', move '日志文件名' to '日志文件存放置路径' Go 如: restore database EaseWe from disk='H:\EaseWe.bak' with move 'Ease

    探索Elastic Search:强大的开源搜索引擎,详解及使用

    🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选,相信大家多多少少的都听说过它。它可以快速地储存、搜索和分析海量数据。就连维基百科、Stack Overflow、