Ⅰ NewSQL為何使傳統關系資料庫黯然失色
傳統資料庫仍舊會有一席之地,至於NewSQL的優勢又是什麼,簡單和大家說說:
首先關於「中間件+關系資料庫分庫分表」算不算NewSQL分布式資料庫問題,國外有篇論文pavlo-newsql-sigmodrec,如果根據該文中的分類,Spanner、TiDB、OB算是第一種新架構型,Sharding-Sphere、Mycat、DRDS等中間件方案算是第二種(文中還有第三種雲資料庫,本文暫不詳細介紹)。
基於中間件(包括SDK和Proxy兩種形式)+傳統關系資料庫(分庫分表)模式是不是分布式架構?我覺得是的,因為存儲確實也分布式了,也能實現橫向擴展。但是不是「偽」分布式資料庫?從架構先進性來看,這么說也有一定道理。
「偽」主要體現在中間件層與底層DB重復的SQL解析與執行計劃生成、存儲引擎基於B+Tree等,這在分布式資料庫架構中實際上冗餘低效的。為了避免引起真偽分布式資料庫的口水戰,本文中NewSQL資料庫特指這種新架構NewSQL資料庫。
NewSQL資料庫相比中間件+分庫分表的先進在哪兒?畫一個簡單的架構對比圖:
Ⅱ 使用資料庫系統的優點和缺點是什麼
一、關系資料庫系統的優點
a.靈活性和建庫的簡單性:從軟體開發的前景來看,用戶與關系資料庫編程之間的介面是靈活與友好的。目前在多數RDDMS產品中使用標准查詢語言SQL,允許用戶幾乎毫無差別地從一個產品到另一個產品存取信息。與關系資料庫介面的應用軟體具有相似的程序訪問機制,提供大量標準的數據存取方法。
b.結構簡單:從數據建模的前景看,關系資料庫具有相當簡單的結構(元組),可為用戶或程序提供多個復雜的視圖。資料庫設計和規范化過程也簡單易行和易於理解。由於關系資料庫的強有力的、多方面的功能,已經有效地支持許多資料庫納應用。
二、關系資料庫系統的缺點
a.數據類型表達能力差:從下一代應用軟體的發展角度來看,關系資料庫的根本缺陷在於缺乏直接構造與這些應用有關的信息的類型表達能力,缺乏這種能力將產生以下有害的影響,例如:大多數RDBMS產品所採用的簡單類型在重構復雜數據的過程中將會出現性能問題;資料庫設計過程中的額外復雜性;RDBMS產品和編程語言在數據類型方面的不協調。
大多數現代的RDBMS產品已成熟地用於商務和財政方面,而這些領域不要求很高和很復雜的數據模型。雖然這些產品多多少少克服了一些以上所述的缺點,但從理論上看關系數據模型不直接支持復雜的數據類型,這是由於第一範式的要求,所有的數據必須轉換為簡單的類型,如整數、實數、雙精度數和字元串。
對於工程應用來說,這種不能支持復雜數據類型的典型結果就是需要額外地分解數據結構工作,這些被分解的結構不能直接表示應用數據,且從基本成分重構時也非常繁瑣和費時間。
b.復雜查詢功能差:關系資料庫系統的某些優點也同時是它的不足之處。雖然SQL語言為數據查詢提供了很好的定義方法,但當用於復雜信息的查詢時可能是非常繁瑣的。此外,在工程應用時規范化的過程通常會產生大量的簡單表。在這種環境下由存取信息產生的查詢必須處理大量的表和復雜的碼聯系以及連接運算。
除非這些查詢以固定的例行程序方式提供,否則用戶就必須對SQL非常熟悉,以便適當地瀏覽資料庫,查出所需的信息。然而,一旦查詢方式按固定例行程序方式進行,用戶最終就進行應用軟體的常規維護。但應用或人機介面軟體的變化又可能要求經常修改例行的查詢,資料庫結構的變化也可能導致例行查詢程序殲侍以及應用或人機介面軟體的失效。由於這些原因,關系資料庫系統的維護開銷可能是很大的。
由於關系資料庫不能提供足夠的構造能力及性能方面的原因,在進行較復雜的資料庫設計過程中,不可能將許多工程問題直接分解成一些簡單的部分。由於缺乏直接指針存取方法,所以查詢有關的信息需要花費時間。
c.支持長事務能力差;由於RDBMS記錄鎖機制的顆粒度限制,對於支持多種記錄類型的大段數據的登記和檢查來說,簡單的記錄級的鎖機制是不夠的,但基於鍵值關系的較復雜的鎖機制來說卻很難推廣也難以實現。
d.環境應變能力差:在要求系統頻繁改變的環境下,關系系統的成本高且修改困難。在工程應用中支持"模式演變"(schemaevolution)的功能是很重要的,而RDBMS不容易支持這種功能。另外,關系資料庫和編程語言所提供的數據類型的不一致,使得從一個環境轉換到另一個環境時需要多至30%的附加代碼。
三、面向對象資料庫系統的優點
a.能有效地表達客觀世界和有效地查詢信息:面向對象方法綜合了在關系資料庫中發展的全部工程原理、系統分析、軟體工程和專家系統領域的內容。面向對象的方法符合一般人的思維規律、即將現實世界分解成明確的對象,這些對象具有屬性和行為。系統設計人員用ODBMS創建的計算機模型能更直接反映客觀世界,最終用戶不管是否是計算機專業人員,都可以通過這些模型理解和評述資料庫系統。
工程中的一些問題對關系資料庫來說顯得太復雜,不採取面向對象的方法很難實現。從構造復雜數據的前景看,信息不再需要手工地分解為細小的單元。ODBMS擴展了面向對象的編程環境,該環境可以支持高度復雜數據結構的直接建模。
b.可維護性好:在耦合性和內聚性方面,面向對象資料庫的性能尤為突出。這使得資料庫設計者可在盡可能少影響現存代碼和數據的條件下修改資料庫結構,在發現有不能適合原始模型的特殊情況下,能增加一些特殊的類來處理這些情況而不影響現存的數據。如氏喊吵果資料庫的基本模式或設計發生變化,為與模式變化保持一致,資料庫可以建立原對象的修改版本。這種先滲游進的耦合性和內聚性也簡化了在異種硬體平台的網路上的分布式資料庫的運行。
c.能很好地解決"阻抗不匹配"(impedancemismatch)問題。面向對象資料庫還解決了一個關系資料庫運行中的典型問題:應用程序語言與資料庫管理系統對數據類型支持的不一致問題,這一問題通常稱之為阻抗不匹配問題。
四、面向對象資料庫系統的缺點
a.技術還不成熟。面向對象資料庫技術的根本缺點是這項技術還不成熟,還不廣為人知。與許多新技術一樣,風險就在於應用。從事面向對象資料庫產品和編程環境的銷售活動的公司還不令人信服,因為這些公司的歷史還相當短暫,就該十幾年前關系資料庫的情況一樣。ODBMS如今還存在著標准化問題,由於缺乏標准化,許多不同的ODBMS之間不能通用。此外,是否修改SQL以適應面向對象的程序,還是用新的對象查詢語言來代替它,目前還沒有解決,這些因素表明隨著標准化的出現,ODBMS還會變化。
b.面向對象技術需要一定的訓練時間:有面向對象系統開發經驗的公司的專業人員認為,要成功地開發這種系統的關鍵是正規的訓練,訓練之所以重要是由於面向對象資料庫的開發是從關系資料庫和功能分解方法轉化而來的,人們還需要學習一套新的開發方法使之與現有技術相結合。此外,面向對象系統開發的有關原理才剛開始具有雛形,還需一段時間在可靠性、成本等方面令人可接受。
c.理論還需完善:從正規的計算機科學方面看,還需要設計出堅實的演算或理論方法來支持ODBMS的產品。此外,既不存在一套資料庫設計方法學,也沒有關於面向對象分析的一套清晰的概念模型,怎樣設計獨立於物理存儲的信息還不明確。
面向對象資料庫和關系資料庫系統之間的爭論不同於70年代關系資料庫和網狀資料庫的爭論,那時的爭論是在同一主要領域(即商業事務應用)中究竟是誰代替誰的問題。現在是肯定關系資料庫系統基本適合商業事務處理的前提下,對非傳統的應用,特別是工程中的應用用面向對象資料庫來補充不足的問題。面向對象資料庫系統將成為下一代資料庫的典型代表,並和關系資料庫系統並存(而不是替代)。它將在不同的應用領域支持不同的應用需求。