譯 SQL資料庫整合NoSQL類特性

2021-09-20 00:07:37 字數 2984 閱讀 2074

【源文】

【譯文】

過去的幾十年間,關係型資料庫(sql)在全世界幾乎應用到所有型別的業務。其技術可靠,標準穩定,整體成熟已超過20多年。

非關係型資料庫(nosql)的概念實際早於關係型資料庫,但他們只是在10年前變成切實可行。然而,在他們開始做後,主要在兩類業務中快速被推廣應用。第一類是大型數字經濟公司,他們需要前所未有的擴充套件,第二類是技術初創公司,他們尋找廉價易用的資料庫解決方案,以滿足其擴充套件要求。

鑑於nosql功能流行度的提公升,sql資料庫廠商開始注意,並在其資料庫架構中實現類nosql類的功能。

在我們深入討論之前,有必要先更好的理解為什麼nosql會取得現在的地位。

nosql資料庫主要的亮點體現在兩個方面:擴充套件性和彈性。

在基礎設施和擴充套件性方面,幾十年間隨著業務的增長,資料量也同步增長,傳統的手段是垂直擴充套件,即公升級至更強的資料庫伺服器。然而,基於雲計算、商業伺服器,企業現在可以實現水平擴充套件解決效能和高可用需求,即分布式部署nosql資料庫,跨資料中心複製資料(如果必要,跨全球也可實現)。

管理關係型資料庫是一項有技巧、成本高的運維工作,既是是使用開源產品,這就阻礙了其在初創企業的應用。使用nosql資料庫將大幅削減對dba角色對需求,尤其是當使用雲服務時,該角色甚至消失。

在資料架構中,彈性已成為關鍵。傳統做法是,遵循正規化規則建立資料模型,該方法成型的年代,儲存裝置非常昂貴,人們盡力避免資料冗餘。但正規化規則對改進產生了巨大對束縛。對於資料庫模式做的任何變更都意味著繁重的操作和高成本的協調,既是是為了改進應用,這限制了企業的靈活性。除了上面提到的基礎設施的革新,nosql的真正革命性的方面是其彈性,可以快速適應業務改變的需求。nosql資料庫這方面被錯誤的稱之為「無模式」。

這個詞一方面有效的抓住了人們的注意力,但也傳遞了錯誤但印象,即開發者不需要思考待存資料但結構。事實上,在使用nosql資料庫時,資料建模甚至比之前更家重要。為了表達持續的彈性,更好的術語可能是「動態模式」。

感謝上面的兩個特性,應用的總體擁有成本(tco)得到了大幅降低,因為企業開發變得更加靈活,it部門可以更加快速的響應競爭環境的變化。

nosql易入門、擴充套件性好、可靠性高、彈性好,且靈活,這些因素導致只需更少成本的程式就能滿足業務需求。這可能不足以證明翻寫已有的應用,但對於任何新專案,採用nosql就有意義了,它可以阻止技術債的增長和創造高成本的資產。

選擇關係型資料庫的常見論點是,它們的一致性、引用完整性以及能基於兩階段提交來處理事務。的確如此,當今這些功能技術對於大型、本地複雜應用依然有用。然而,在以非同步、無狀態web服務組成的相互連線的世界中,這種優勢正在快速消失,這這種應用環境中要求應用能容忍事務處理的失敗。基於nosql資料庫,大部分業務可以接受和實現最終一致性,尤其是這能讓**使用者保持耐心。

對於特定的應用有許多不同的方式來設計關係型資料庫,正規化規則和引用完整性提供來一種防護措施來應對各種設計問題。對於nosql文件資料庫,json的特點是靈活性和功能強大,它給新使用者一種錯誤的安全感。相比關係型資料庫,對於nosql資料庫而言,資料建模變得更加重要,它使使用者建立不同的what-if指令碼。

nosql資料庫開始成為主流後,sql資料庫廠商感受到一些影響。對於傳統資料庫廠商最簡單的事情是增加對json文件對支援。這種方式對應了nosql文件資料庫對靈活性的優點。需要小心的是,每個廠商本地檢索複雜物件的能力是否與這種新能力匹配。同時,每個廠商擴充套件策略仍然沒有太多改變。這就意味著你不能自然的使用nosql技術來真正的實現水平擴充套件。

儘管如此,也很少發現在sql資料庫中實際儲存json資料的使用者。廠商們或許不知道這個比例,但依然好不猶豫的採取防禦措施,嘗試將nosql資料庫排除在企業it部門之外。無論如何,在sql資料庫中增加json儲存似乎只是一種附加物,而nosql文件資料庫則明顯是有意內建的。同時,我們也觀察到一些大的sql資料庫廠商收購了一些nosql資料庫,這也反應了nosql市場的增長。有人會認為這是產品經理忙於將不同的產品打包至乙個解決方案中。

幾乎每個月都有一款新nosql產品發布,但這難以持續下去。面對快速發展的每個細分市場,我們可能更關注改組、強化、合併。已確立的運動員會防衛他們的場地,以捍衛現有的得分,另一面挑戰者會出創新牌。一些挑戰者會壯大,而另一些挑戰者會被收購、兼併。讓我們期待最好的技術能勝出,而不是最好的市場推廣能力。

當然,nosql廠商並不會坐而待斃。首先,他們從單一功能,轉變為多模型方法。而且,在宣稱nosql資料庫為「非關係型」後,人們意識到關係存在於資料語義學中,無論資料庫是否支援外來鍵約束。結果,使用者要求nosql資料庫廠商增加關係特徵,例如,mongodb引入了跨多集合的lookup功能和唯讀檢視,以應對執行使用者的請求,還有增加acid能力來應對缺乏事務支援對非議。另外,一些增加了類似sql對查詢句法來幫助開發者過渡。

最後乙個需要考慮的是,如果你從沒有強制規範化過,那麼使用json來進行資料建模會很自然,但是習慣的力量是頑固的,尤其你是sql老手。結果,如果你從事過關聯式資料庫,使用json建模則需要換思路,不論是在傳統資料庫中內建json元件,還是nosql文件資料庫。你需要取挑戰那些不可改變的原則,那些正規化和事務原子性。

為了合理的利用nosql的優勢,你需要強迫自己忘記第三正規化,而從如何訪問資料的角度來思考。你想要寫資料庫是連線資料,所以你要做的是當你讀取時將其儲存在一起。這種思想轉變很難,尤其是在同樣的資料庫裡,你可能暫時需要能以傳統規範的方式儲存資料。

nosql玩家持續增加特性以幫助該技術的成熟,nosql資料庫會佔據一席之地,最終會成為主流,走入企業it的視線。同時,sql廠商可能會說服已安裝的資料庫保持現狀。標準化乙份老的技術也許會很安全,it部門也不會使自己喪失新技術帶來的益處。他們會實驗和判斷,以選擇合適的的工具來完成各自的業務需求。

pascal desmarets為hackolade創始人、ceo,他帶領團隊打造來一系列視覺化工具,以幫助nosql技術在it架構中應用推廣。hackolade軟體讓nosql文件資料庫的資料建模更加舒適和易用。[email protected].

資料庫分類 SQL資料庫 NoSQL資料庫

一 資料庫產品 二.sql資料庫 sql 是所有關係型資料庫的公共語言 關係型資料庫,是建立在關係模型基礎上的資料庫,借助於集合代數等數學概念和方法來處理資料庫中的資料,我們平常使用的資料庫,像mysql,oracle,sql server等都是傳統的關係型資料庫。關係模型指的就是二維 模型,而乙個...

sql資料庫和nosql資料庫的區別

sql資料庫雖然教程多,支援也很強大,但是隨著網際網路應用的出現,sql資料庫遇到設計上的弊端,sql對錶的定義使得資料橫向擴充套件困難,而且sql資料庫的很多特性也沒有用武之地,例如及時訪問不是必要的,也沒有特別多的事物需求,這些特性都在消耗著sql資料庫的效能 因此nosql資料庫出現 sql資...

關於SQL資料庫和NoSql資料庫的資料庫選擇案例

一 sql和nosql資料庫的特點對比 sql 資料庫的特點 在表中儲存相關聯的資料 在使用之前需要定義表的乙個模式 鼓勵標準化減少資料冗餘 支援從多個表中檢索相關資料表連線在乙個單一的命令 實現資料完整性規則 提供事務使兩個或兩個以上的成功或失敗的資料更改作為乙個原子單元 可以擴充套件 有一些努力...