Redis已成为世界上最受欢迎的数据库之一,但当初正是因为Sanfilippo对数据库“缺乏经验”,使他敢于打破“良好”数据库工程的各种神圣规则,创建了Redis。正文
如果Redis之父萨尔瓦多·桑菲利波普(Salvatore Sanfilippo)打算颠覆数据库市场,那么他至少本来可以拥有数据库血统的。您知道,在Oracle或SQL Server的工程领域工作了10年后,他辞职去实现自己梦想的工作。Sanfilippo说,当他于2009年开始为Redis写作时,他是数据库爱好者,并且是数据库界的新手。实际上,他对数据库的“缺乏经验”,使得他敢于打破了“良好”数据库工程的各种神圣规则。
如今,Redis已成为世界上最受欢迎的数据库之一,让我们都成为了Sanfilippo打破规则的受益者。尽管没有通过在Redis各种产品和服务上贴“ Redis Inside”标签做品宣,但是开发者们仍每天都可能使用Redis,诸如Uber,Instacart,Slack,Hulu,Twitter,Instagram 等公司正在使用它。Sanfilippo也不会告诉您应该如何使用Redis。他说:“ Redis的优势不是我的选择,而是应用程序开发人员知道该如何更好地使用它。”
为了更好地了解Sanfilippo是如何创建这种企业计算所需的这种开源组建,以及它从何而来,笔者与Redis创始人进行了交谈。
无需DBA专业知识
在撰写Redis之前,Sanfilippo也曾在安全界以及其他领域为自己正名。在安全方面,他创建了网络安全工具hping,还有Idle Scan——一种端口扫描技术。他还创建了Visitors,一个博客分析器。Jim解释器,是Tcl编程语言的一种小型实现,以及一些设备驱动程序。简而言之,他不是闲坐在那里等着光辉时刻。他很忙。
忙碌的部分原因在于他为扩大自己的创业公司所做的努力,特别是与名为http://lloogg.com的实时分析服务有关。Sanfilippo努力使其与关系数据库(MySQL)一起扩展。它确实有效,但是他说,与应用程序的经济性相比,10,000个用户所需的硬件数量太多了。这个想法使他感到震惊,认为采用内存方式是理想的选择,更重要的是,他的工作量(将数据推送到列表然后将其修整为固定大小)根本不适合关系模型。于是,在这个时候,他开始创建Redis。
创建Redis并不是要在不同的数据库之间进行选择。Sanfilippo必须对基础数据模型进行不同的思考。他最终建立了一个内存内NoSQL数据库,该数据库既是数据存储又是缓存,并且在此过程中破坏了各种数据库“规则”。
确实,Sanfilippo的方法遭到数据库知识分子的全面批评。首先,人们谴责Redis的内存不足。他们还取消了使用fork系统调用和使用其正文的SHA1而不是名称的 Lua脚本在磁盘上持久化的Redis模型。关于传统数据库的构建方式,他们也许是正确的。但对数据库的未来完全错误。
做女王还是国外由自己来定
Sanfilippo说,尽管数据库专家大多批评他的工作,但他却可以自由地创新一种新型的数据库。毫不奇怪,由于开放源代码长期以来一直是他的核心部分,因此他选择了开放式创新。他说:“总的来说,我相信与他人共享事物。” 根据Sanfilippo的说法,他的职业生涯是在18岁时通过安装Slackware 1.2.3产生的,他意识到里面有C编译器,并且还有更多。他说:“实际上,作为软件开发人员的整个故事都是从开源开始的,所以对我来说,这是显而易见的方式。”
但是开源不仅仅是Sanfilippo的许可问题。
Sanfilippo说:“我坚信软件是以人为本的,需要人们讲故事,所以我到处都在讲述Redis的故事。” 很快,人们开始聆听并开始拥抱Redis,最初是在开源社区里,后来是在成熟的企业里。
尽管最初,Sanfilippo注意到他比起所谓的数据库专家更重视自由,但随着时间的流逝,开源社区聚集在Redis周围。Sanfilippo表示,十年后,“ Redis核心绝对是许多人之间的协作。”
并不是说他放开了手:Sanfilippo有时承认他在分配工作方面做得很不好,以至于他仍然自己编写了Redis所有文档。
尽管Sanfilippo欢迎对社区Redis做出贡献,但他也说,社区中的好主意和坏主意混在一起。例如,某人可能正在尝试使用该软件解决不同于Sanfilippo希望征服的那些问题。同样,事实是系统软件很困难。他说:“您往往只会从大多数情况下得到报酬的人那里得到严肃的贡献,”他说,尽管当然也有例外。他承认,为像Redis这样严肃的数据库系统做贡献并不是您周日早上可以放松的事情。
Sanfilippo在过去十年中承受着很大的压力,想知道Redis是否会成功,以及他是否有足够的钱来满足自己的需求。幸运的是,他说这些担忧已经自动解决了,因为Redis越来越受欢迎。今天,Sanfilippo很幸运能够将所有的时间都花在Redis上,成为Redis Labs的雇员。只是,仍然不要期望他会告诉您如何使用Redis。
“Redis的优势不是我的选择;每个应用程序都有其目标,必须提供的保证以及对延迟和可伸缩性的关注。”Sanfilippo表示,他希望在Redis解决问题时使用它:它是一个主数据库,只是另一个数据库的索引,一些智能缓存,消息传递等等。
Sanfilippo提供了一组构建模块,而不是“预烘焙” Redis的未来,因此人们可以找到创造性组装它们的方法。这让Redis很容易修改。“因此,开发人员经常进行一些更改,使Redis进行一些原本不希望的工作。” 但Sanfilippo说,这没关系。
Sanfilippo并不认为自己是权威人士。他说:“我更喜欢设计新事物并编写代码。”如果其他人效仿,那就太好了。Sanfilippo总结说,因为使用Redis,“开发人员是女王还是国王-完全由他们自己来决定。”