【編者按】MySQL體積小、速度快、成本低、結構穩定、便于查詢,可以保證數據的一致性,但缺乏靈活性。NoSQL高性能、高擴展、高可用,不用局限于固定的結構,減少了時間和空間上的開銷,卻又很難保證數據一致性。兩者都有大量的用戶和支持者,尋求兩者的結合無疑是個很好的解決方案。作者John Engates是Rackspace主機托管部門CTO,也是個開放云支持者,他為我們帶來了詳細的分析。
以下為譯文:
開源數據領域被分成了兩派,NoSQL狂熱支持者喜歡發表長篇大論批評關系型數據庫的局限性,MySQL愛好者則固執地捍衛關系型數據庫――堅持讓數據整齊地存放在表中。
但新技術的發展往往和過去的技術對立。當NoSQL發展起來時,光這個名字聽起來就像是要宣告關系數據庫的終結,但這是不可能的,至少不會這么快。
Craigslist的成功
Craigslist公司無縫集成結構化和非結構化數據檢索是個很好的例子。過去,該公司一直用MySQL處理頻繁的任務和分類廣告。
盡管工作量很大,MySQL還是能輕松地完成這項任務。只有當存檔數據達到超紀錄的級別時,才會產生對NoSQL的需求。由于管理的要求,Craigslist必須將所有歷史數據存檔――即使是SXSW期間為奧斯汀那昏暗、高價的公寓所做的廣告也得存檔。
如果一個關系型數據庫依靠數據之間的邏輯,那前端架構的更改必然會影響到存檔數據。這是一個高風險、高時耗的過程,而且它會造成停機時間損失。想象一下去更新帶有10億條記錄的MySQL服務器集群!
Craigslist發現需要以離散方式處理兩類數據――當前數據和歷史數據。Craigslist或許已經轉而使用MongoDB幫助應對數據的增長,但是與MySQL一起運行的NoSQL也從沒有出現過問題,這說明MySQL和NoSQL可以很好的結合。
開源同盟
越來越多的應用開發商和托管服務提供商認識到NoSQL和MySQL一直是開源同盟,沒有因數據庫類型不同而成為不相往來的仇敵。歸于一點,數據就是數據,它應該用來為應用程序和用戶服務,不應該受到后端數據庫的限制。
越來越多的Rackspace客戶發現自己面臨和Craigslist同樣的處境。當關系型數據庫涵蓋所有他們的數據領域時,他們構建了自己的數據結構,而現在他們已經進入應用時代了。
達到100萬客戶原先需要數年時間,現在只需要幾周就可以了,而且社會共享和實時查詢對數據提出了新的要求――也需要支持這些數據的基礎設施,這一系列變化使他們面臨的數據量達到了每月10億之巨。
他們不一定要挖掘MySQL數據庫,但他們需要增加數據引擎。為了增加數據庫的速度和靈活性,MongoDB、Cassandra或者Redis(這類數據庫)會被納入數據結構中。但這些開源數據庫不太可能用于存儲用戶機密信息或者財務記錄,因為這些內容必須始終保持一致性。
目前,技術公司在聘請傳統關系型數據庫管理員同時,組建一個NoSQL應用開發團隊也很常見。有時,基于關系型數據庫和非關系型數據庫的同一個應用甚至可以在Web層進行通信。
過去的數據庫管理員必須和新一代使用NoSQL編程的開發人員合作,進行有關部署和體系結構的決策(也許這些數據庫管理員和開發人員也能成為朋友)。
可能這類公司連數據庫管理員也沒有,它們將所有的應用和數據層外包給托管服務供應商,這樣的話,它們就得充分利用深厚的專業知識和團隊合作,才能跨越SQL與NoSQL之間的鴻溝。
選擇其中一個?還是兩者都要?
應用程序是否應該與關系型數據庫或NoSQL(也許是兩者)相一致,當然,這得基于被生成或被檢索數據的性質。和大多數科技領域的事物一樣,做決定時要折中考慮。
如果規模和性能比24小時的數據一致性更重要,那NoSQL是一個理想的選擇 (NoSQL依賴于BASE模型――基本可用、軟狀態、最終一致性)。
但如果要保證到“始終一致”,尤其是對于機密信息和財務信息,那么MySQL很可能是最優的選擇(MySQL依賴于ACID模型――原子性、一致性、獨立性和耐久性)。
作為開源數據庫,無論是關系型數據庫還是非關系型數據庫都在不斷成熟,我們可以期待還會有一大批基于ACID和BASE模型的新應用產生。
暫且把它稱為混合方案。有時這些應用程序的設計需要認真地權衡利弊,有時還能意外的得到發展,做出一系列調整以適應不斷變化的數據需求,畢竟,誰能預測到今天社會共享數據的大規模增加(即使是在五年前)?
像往常一樣,開發人員處于這種創新的最前沿,他們促使托管服務提供商將這兩個數據領域結合到一起。在必要時候,他們還會對開源數據技術進行修正。
比如,在Oracle占有了MySQL后,MySQL有閉源的風險,基于MySQL的MariaDB很好的替代了MySQL。開發者社區要求其開源工具完全透明,包括開放對測試用例bug修復的權限。
此混合方案在2014年將繼續發展,托管公司也會提供更好的支持。在媒體上,我們就不會再說“要么關系型數據庫,要么非關系型數據庫”這樣的話了。
這和混合云領域所用方法是類似的。專用硬件有著優越的性能,而公共云有很好的可擴展性,結合兩者優點可以帶來更大的靈活性,產生最合適的解決方案,這才是解決問題的最優辦法。
畢竟,數據收集和解釋的最終目標是捕獲這個瞬息萬變世界發生的每一條信息。數據,無論來自何處,都只是一個窗口,真正重要的是透過這個窗口看到的景象。
原文鏈接:
Open source data grows up: Choosing MySQL, NoSQL, or both(編譯/毛夢琪 審校/魏偉)