云計算如何影響NoSQL數據庫的發展
Guy Harrison是Quest軟件研發經理和數據庫大師,最近他談及了在Quest云計算新產品Toad和下一代稱之為“NoSQL”的非關系型數據庫中所做的工作,并就非關系型數據庫的相關領域及云計算的推動作用回答了記者的提問。以下為訪談記錄:
Quest Software's Chief Officer, Guy Harrison
問:什么推動了新型非關系型數據庫的出現?是否是如今數量驚人的數據?
Guy Harrison:那是整個爭論的焦點所在。將數據保存在硬件中,然后使用一個不怎么合適且能力有限的引擎;或者支付一定的費用將數據保存在某些設施中,并在真正使用之前鎖存起來。如果你去看看Hadoop目前已初具規模的數據倉庫市場,它幾乎是一個不斷發生沖突、碰撞的過程。
Oracle正致力于海量數據、大規模并行處理、優化I/O、CPU和I/O之間的超高速通道等工作,并試圖通過相同的處理途徑和安全的文件格式在大量數據中進行相關操作,這就意味著你無需在數據庫中處理數據,你能夠將數據庫指向別處并清楚其結構,但是它仍然保存在它初次出現的地方。
那距離目前Hadoop的成就并不遙遠。雖然兩種技術之間還存在著一定的差距,但是兩者趨同性趨勢已相當明顯,他們將會變得幾乎完全一致。
問:那么目前NoSQL數據庫又存在著哪些缺點呢?它能否提供一個全面的解決方案?
Guy Harrison:它在很多方面都有具體的任務,同時還支持非常大型的應用實現。但是其中充斥著顯而易見的差距需要進一步彌補,這也反應了其成熟度水平。
我認為任何在這個行業中工作過一段時間的人,特別是如果他從企業的角度出發,都會理解數據不在數據庫中只是出于應用的原因。并不僅僅限于插入、更新和刪除等操作,還要進行挖掘和分析,以便用于決策和趨勢分析。擁有更詳盡的數據,在決策時就能擁有更精細準確的數據支持。但大多數NoSQL數據庫并沒有為之提供解決方案。
問:能否提供區別關系型數據庫和非關系型數據庫的實際示例?
Guy Harrison:你可以想象下諸如HBase沒有真正一致范圍的情況,如果你需要在HBase表格中完成類似SELECT COUNT *的功能,那么你基本上就需要開始讀取所有的標簽來計數行數,因為沒有現成的API可以告訴你表格中有多少行,而唯一可行的方法就是把它們都讀取出來。
如果與此同時,某人又在執行插入操作,那么就沒有辦法真正確保你查詢到所有數據,因此你就有可能遭遇到COUNT *操作永遠無法執行完畢的窘境。所以,我們就必須拿出些能夠解決問題的舉措出來,要么設置超時預設值并發出諸如“無法執行該任務,查詢時間過長”的提示,要么就應當試圖估算其大小。那是一個在任何關系型數據庫中都能夠順利執行的簡單關系型查詢例子,同時這也是在非關系型數據庫中一般不予以支持的應用。
問:那么它們的用途何在?
Guy Harrison:讓我們看看目前的景象,在一個直接使用NoSQL的組織中Hadoop以及Hive如何運用,一個在Hadoop基礎上使用類SQL界面的產品,你就能了解這兩種NoSQL的使用情況。一種用于具有無限可擴展性和相對簡單數據模型的高速OLTP,而另一種由Hadoop提供的是如同正在使用SQL層數據倉庫的使用體驗。
問:企業為什么對NoSQL如此地感興趣?
Guy Harrison:我們已經看到了最大型企業數據庫的容量已呈平穩的指數增長的趨勢,而數據倉庫技術大體上直到最近才能夠跟上這種增長趨勢的腳步。而目前該指數型增長已經剛剛超出了最大型數據庫的能力范圍。Oracle和Teradata為此苦苦支撐,但是Hadoop的出現為此提供了一個更為經濟的方案。
目前,也許我們的許多客戶并不愿意采用NoSQL,但是有許多客戶將在未來一年左右的時間內選擇采用Hadoop。與Oracle公司的Exadata相比,處理創建海量數據倉庫的大量記錄數據的經濟性將更具成本效益。
問:似乎云計算和這些非關系型數據處理模型有著齊頭并進的發展趨勢,為什么會這樣?
Guy Harrison:首先,所有的云計算平臺必須提供一些彈性存儲模型,否則其經濟模式將受到損害。使用的應用程序越來越多,我希望能夠根據我實際使用情況來計算我在數據庫方面的費用,然后我希望根據實際使用情況來計算我消耗的資源,事實上這是很難使用關系型數據庫來實現的。從理論上來說,Oracle公司的RAC可以做到這一點,但是你無法自動分享MySQL。分享它的人必須要投入龐大的手動工作量,并規劃各種東西。現實中這是難以實現的。
因此Amazon的SimpleDB和微軟公司的Azure Table都是一種非關系型數據庫。Google公司也擁有類似的產品。
問:那是供應商端的狀況,但是企業客戶是否正在使用這些技術和產品呢?
Guy Harrison:Netflix是SimpleDB的大客戶,此外,我們還未能看到許多令人鼓舞的案例。如果身處云中,那么你很可能更想嘗試NoSQL解決方案,并希望以這種方法調整規模和支付費用,而傳統的關系型數據庫則會顯得無能為力。
這又推動了NoSQL數據庫托管機制。Rackspace公司正在研究提供Cassandra,SimpleDB也同樣在努力中。業界正在努力推動 Hadoop以及其他類型適用于云計算的大型數據分析應用。Amazon提供了一個相當成熟的Hadoop實現,你可以按運行小時付費,可在打開成千上萬節點完成短期處理之后再次全部關閉。而如果你在自有集群中進行這樣的操作,效率是非常低的,但是如果你希望以極具成本效益的方法來處理大量數據時,這又不失為一個好的解決方案。目前,已有多個成功的公司實施案例。
問:那么對于期待廉價數據處理的企業來說,這應當是一個最佳的數據處理方案?
Guy Harrison:當然,問題在于數據如何接觸到云計算。如果你有TB或PB級別的數據,那么數據進入云中的成本和時間都是非常驚人的。Amazon宣稱的“你給我們一個硬盤驅動器,我們來安裝”的解決方案則顯得相當笨拙。
此外,對于某些企業來說,數據外遷還可能存在技術問題,事實上將數據置于外部的數據中心往往會引發所有權等各種各樣的問題,這樣的做法可能是違法的。在許多情況下,公司必須按照法律或公司政策而放棄這樣的方案。從我個人來看,我信任Amazon,但是我并不確定我是否愿意拿我的業務去打賭,他們是否能夠保護數據,不會丟失等等。
問:展望未來,NoSQL是否會取代關系型數據庫?
Guy Harrison:我當然不認為關系型數據庫會退出市場,它仍然將占據主導地位。但是關系型數據庫處理所有的數據面臨的限制是它的薄弱之處。但是,我們寄希望于新型數據庫,除少數幾個非常特殊地點外我們幾乎沒有現實世界的范例。
你已經擁有了用于Twitter和Facebook的Cassandra,但是它們是世界上最大網站之一,并不能夠代表企業客戶,或代表一般網站。關系型數據庫提供了這么多的功能,有這么多知道如何使用的專業人士,它還是如此的可靠和安全,因此它可能將是95%數據處理需求的最佳選擇。盡管如此,專業的 NoSQL數據庫還是有可能成為最合適的選擇。
作者簡介:Guy Harrison是Quest軟件公司的研發董事,他在數據庫設計、開發、管理和優化方面擁有者20年的工作經驗。Guy是一位Oracle ACE,是《Oracle性能生存指南》(Prentice Hall出版社,2009)和《MySQL存儲過程編程》(O’Reilly和Steven Feuerstein)以及其他數據庫技術書籍、文章、演講的作者。Guy是Quest公司Spotlight系列產品的架構師,并領導開發了Quest 公司的云數據庫產品Toad。