微軟想要打造一統天下的單一資料庫:Cosmos DB!
微軟在今天召開的Build開發者大會上發布了新的全局分布式資料庫:Cosmos DB,微軟技術院士達爾瑪·舒克拉(Dharma Shukla)與我聊起該資料庫時說:「我們希望這是未來的資料庫,能夠在今後延續幾十年。」而對於舒克拉來說,這是一個始於七年前的項目,當時他開始建立原型,研究全局分布式資料庫會是什麼樣子,微軟經常喜歡將全局分布式稱之為「全球規模」(planet-scale)。這個項目(當初名為「Project Florence」)最初變成了Azure的NoSQL資料庫服務:DocumentDB,該資料庫服務於2015年發布,現在演變成了Cosmos DB。
用舒克拉的話來說,相比DocumentDB所提供的功能,Cosmos DB「向前邁出了一大步」。DocumentDB提供的功能只是如今的Cosmos DB的一小部分,難怪知名IT網站ZDNet將Cosmos DB稱為是DocumentDB的超集。DocumentDB實際上是存儲JavaScript對象標註(JSON)數據的資料庫,而Cosmos DB覆蓋的範圍要廣泛得多。它拓展了無索引資料庫系統這個概念,增添了支持多種新型數據的功能,這讓Cosmos DB擁有足夠的靈活性,比如說足以充當圖形資料庫,或者充當鍵值資料庫。對於期望存儲較為傳統的列式關係型數據的那些人來說,Cosmos DB還將提供支持那類數據的功能。
這一切都秉承這年頭你與微軟開發部門的人員交談時,幾乎免不了都會聽到的這句口號:「我們想要滿足開發人員的需要,無論他們在什麼地方。」所以,雖然你也可以使用MongoDB API來訪問DocumentDB中的數據,但是Cosmos DB還支持SQL表、Gremlin表和Azure表,開發團隊計劃在不遠的將來發布一大批類似的驅動層和轉換層。
舒克拉告訴我:「沒有數據天生就是關係型數據。在現實世界中,沒有人從模式(schema)方面來考慮――他們考慮圖形,或者如果面對的是物聯網設備,可能考慮JSON文檔。我們想要確保,我們開發的系統有一個通用引擎,可以高效地處理不同的數據模型。」
考慮到其淵源,Cosmos DB在許多方面借鑒了DocumentDB,這不足為奇。其中一個方面就是擁有可調整的一致性模型(consistency model)。如果你平時不常考慮全局分布式資料庫,那麼一致性模型對你來說根本不是那麼重要,但是大多數與之競爭的資料庫系統(包括谷歌最近發布的Cloud Spanner,https://cloud.google.com/spanner/)只有兩種一致性模型:強一致性(strong consistency)和最終一致性(eventual consistency)。比如說,就強一致性而言,只要數據被寫入到資料庫,所有的不同節點(這些節點可能分布於全球各地的數據中心)都要先就一個新的值達成一致,之後新的值才出現在應用程序中。任何時刻,任何用戶或節點都可以讀到最近一次成功更新的副本數據。由於這種方法增添了延遲,這在性能方面顯然存在著一些不足。最終一致性實際上是一種比較寬容的系統;所有節點並不同時更新,而是只有在一段時間沒有任何最近的更新後,才就某個值達成一致。
圖靈獎得主萊斯利·蘭伯特(Leslie Lamport)對我說:「Cosmos DB不同尋常的地方在於,它提供了不同的一致性模型,那樣用戶可以在獲得多強的一致性與承受多大的性能開銷之間作一個取捨。」許多這些概念都離不開蘭伯特的研究工作,他還開發了LaTeX文檔準備系統(https://en.wikipedia.org/wiki/LaTeX),2001年加入了微軟研究中心。Cosmos DB為不同的使用場景提供了三種不同類型的一致性。蘭伯特解釋道:「那種中間一致性保證機制之前就存在於人們為了編寫論文而開發的學術系統。」Cosmos DB是最先商用化的提供這多種一致性模型的資料庫系統之一。
比如說,對於Cosmos DB(以及之前的DocumentDB)而言,那意味著,你可以選擇這種一致性模型:允許讀取操作比寫入操作只延後某一段時間(毫秒級),也可以選擇這種一致性模型:專註於為某種特定的客戶會話提供一致性(比如在類似Twitter的應用中),但是每個用戶在同一時間(或者以完全一樣的順序)看到每次寫入的數據又不是那麼重要。
不過正如舒克拉特別指出,他在這裡的想法是,開發一種可以延續幾十年之久的資料庫系統。為此,他還請來蘭伯特教團隊TLA+(http://lamport.azurewebsites.net/tla/tla.html)。蘭伯特長期以來對於開發人員如何為應用軟體編寫規範有著特別濃厚的興趣。TLA+實際上就是一種完全適用於此的正規語言。舒克拉對我說:「我們在2010年開始著手時,想開發一種經久不衰的系統。這就是微軟眼裡的未來資料庫。我們努力確保為自己的工程團隊賦予盡量嚴謹的理念……TLA+的魅力在於,它可以將這種嚴謹的設計理念灌輸給工程師團隊,以便樹立很高的質量標準。」蘭伯特特別指出,TLA+讓你可以以一種完全正規的方式,做好系統的概要性設計――又由於它是以正規方式完成的,所以還可以檢查正確性(客觀地說,AWS及其他公司也使用TLA+為分布式系統編寫規範,詳見http://lamport.azurewebsites.net/tla/amazon.html)。蘭伯特補充道:「我倒不是想炫耀TLA+有多棒、我有多出色。TLA+之所以很棒,是因為它幾乎完全基於數學。」
Cosmos DB對於自己的技術很有自信,現在它還提供許多在資料庫領域不太常見的服務級別協議(SLA)。雖說保證一定程度的正常運行時間很常見,但是微軟還針對吞吐量、一致性和延遲提供了相應的SLA。舒克拉說:「我特別引以為豪的就是,它是用高超的技術開發出來的,我們認為這是寶貴的遺產。」
值得一提的是,Cosmos DB長期以來就在微軟內部使用,先在內部使用新技術現在是微軟的一個傳統。微軟表示,Cosmos DB之前的版本稱為DocumentDB,Cosmos DB目前服務於「成千上萬個客戶」,存儲數PB的數據。
如今Cosmos DB在34個Azure地理區域投入使用,向公眾開放,並且附有SLA方面的所有承諾。現有的DocumentDB客戶(及其數據)將一律自動成為Cosmos DB用戶。


※揭秘Volta:世界上最先進的數據中心GPU!
※好難堪!這邊微軟在Build大會上猛誇Office,那邊Office 365歇菜!
※台灣當局封殺谷歌的公共DNS,改用HiNet的公共DNS
※中國股票交易員黑入美國律師事務所,靠英特爾收購Altera的內幕消息發橫財,現被罰900萬美元!
TAG:雲頭條 |
※微軟低頭,Chrome 一統瀏覽器!
※Chrome 將一統天下?
※今年NIKE可能靠Air Jordan 3,就能一統天下
※一統所有AI晶元:Facebook揭秘深度學習編譯器Glow
※即使在微軟 Azure 上,Linux 也大有一統天下之勢
※EF Core:一統SQL和NoSQL資料庫
※Google 要用 Flutter 一統移動、桌面開發江湖?
※業界 | 一統所有AI晶元:Facebook揭秘深度學習編譯器Glow
※Apple News要一統江湖了,但註定征服不了中國市場
※Khronos推出OpenXR 0.90暫定規範,一統XR軟硬體標準
※CES2019|Anker,Belkin,USB-C已一統天下
※Google 正在研發神秘操作系統,想要一統江湖?
※曾在NBA球場上一統江湖,如今橫行街頭,Converse再次讓復古新生
※蘋果將迎來埠改變,USB Type-C有何魅力一統手機埠?
※賽靈思發布ACAP產品細節,Versal一統產品核心硬體設計
※喜大普奔!USB 4標準發布,Type-C將一統天下!
※蘋果將一統iPhone和Mac生態 源於喬布斯12年前的創新
※WebRTC 將一統實時音視頻天下?
※USB PD 3.0 是怎樣一統快充天下的?
※「邪教GUCCI,一統人心。」