Redis背后的故事
導語
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編程語言的一種小型實現,以及一些設備驅動程序。簡而言之,他不是閑坐在那里等著光輝時刻。他很忙。
忙碌的部分原因在于他為擴大自己的創業公司所做的努力,特別是與名為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,“開發人員是女王還是國王-完全由他們自己來決定。”
總結
以上是生活随笔為你收集整理的Redis背后的故事的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 【视频回放与课件】零基础入门AI开发
- 下一篇: 第五站 使用winHex利器加深理解数据
