本文轉載自韓鋒頻道,作者韓鋒
近些年來,資料庫產業發展迅猛,各種資料庫產品層出不窮。那麼如何選擇一款資料庫產品成為很多企業面臨的問題?特別是隨著資料規模、計算能力等需求,分散式資料庫產品成為很多企業的新寵。那麼這類資料庫較傳統資料庫又有何差異?在資料庫選型中,需要注意哪些方面?本文嘗試描述資料庫(特別是分散式資料庫)選型需考慮維度,希望幫助企業可以做出最適合的選擇。
1。 資料庫評估維度概覽
人生基本上就是兩件事,選題和解題。最好的人生是在每個關鍵點上,既選對題,又解好題。人生最大的痛苦在於解對了題,但選錯了題,而且還不知道自己選錯了題。正如人生最大的遺憾就是,不是你不行,而是你本可以。
因需對比的維度很多,故將其大致做了個分類,歸納為下面腦圖所示。下文將按各分類詳細描述。在各對比維度分類之上,又抽象出非互動式測試與互動測試兩大類。之所以做了這樣的劃分,是因為曾參與過多款資料庫產品評測,大量的人工測試方式非常低效。這裡是嘗試將部分對比維度分類提取出來,可嘗試使用自動化方式解決上述問題。則後者的互動式測試,則還需要人工介入;但可透過此方法固化對比維度,減少互動成本。
2。 評估維度:基本功能篇
人生基本上就是兩件事,選題和解題。最好的人生是在每個關鍵點上,既選對題,又解好題。人生最大的痛苦在於解對了題,但選錯了題,而且還不知道自己選錯了題。正如人生最大的遺憾就是,不是你不行,而是你本可以。
表示式
運算子
字符集:支援常規的UTF8MB4及定長字符集GBK等。
函式:支援基本函式、擴充套件函式(如正則函式、安全函式、視窗分析函式等)、自定義函式。
計算:雖然不提倡在資料庫端進行計算,但如果支援計算的話,將有利於將傳統資料庫應用遷移到新型資料庫中。在分散式架構下,這部分實現較難。
3。 評估維度:資料物件篇
人生基本上就是兩件事,選題和解題。最好的人生是在每個關鍵點上,既選對題,又解好題。人生最大的痛苦在於解對了題,但選錯了題,而且還不知道自己選錯了題。正如人生最大的遺憾就是,不是你不行,而是你本可以。
序列:對分散式資料庫,需提供全域性唯一、單調遞增的序列物件。
檢視:對分散式資料庫,需提供滿足全域性性、一致性的檢視訪問。擴充套件要求,可提供引數檢視、動態檢視、物化檢視等能力。
約束:支援常規的主鍵(PK)、外來鍵(FK)、唯一(UK)、非空(NULL)、條件(CHECK),特別是分散式條件下的約束能力。此外,支援非分佈鍵下的約束。
表:支援常規的表(例如堆表、簇表)。表的儲存方式是行存、列存亦或是混存。支援全域性表(廣播表)、ER表、追加表、只讀表等特殊表型別。
索引:支援多種型別索引(如B樹、雜湊等),支援函式索引等。對於分散式環境支援全域性索引、二級索引。對於分割槽條件下,是否支援本地、全域性分割槽索引。
同義詞
資料型別:對多模場景,豐富的資料型別十分必要。此外,在金融場景中,對高精度資料型別也有特殊的要求。
分片:支援的分片演算法,支援自定義分片策略。在單分片鍵基礎上,支援多欄位分片或自定義分片等。
分割槽:支援的分割槽型別(如HASH、LIST、RANGE等),支援複合分割槽。常規分割槽操作支援增加、刪除、移動、截斷、分裂、合併等。
4。 評估維度:SQL篇
人生基本上就是兩件事,選題和解題。最好的人生是在每個關鍵點上,既選對題,又解好題。人生最大的痛苦在於解對了題,但選錯了題,而且還不知道自己選錯了題。正如人生最大的遺憾就是,不是你不行,而是你本可以。
DML
DDL
DQL:對於分散式資料庫而言,靈活複雜的查詢能力實現難度較高。很多產品在這部分都有所取捨,沒有實現全集。
5。 評估維度:核心功能篇
人生基本上就是兩件事,選題和解題。最好的人生是在每個關鍵點上,既選對題,又解好題。人生最大的痛苦在於解對了題,但選錯了題,而且還不知道自己選錯了題。正如人生最大的遺憾就是,不是你不行,而是你本可以。
鎖:支援樂觀、悲觀鎖機制。提供完善的死鎖檢測機制。
事務:支援標準的ACID能力。
隔離級:提供常規的RC、RR等隔離級別,支援MVCC,提供全域性一致性資料讀取能力,支援強一致性的資料讀取並可讀到最新資料。
並行:支援平行計算,已利用多核能力加速執行。
6。 評估維度:效能篇
人生基本上就是兩件事,選題和解題。最好的人生是在每個關鍵點上,既選對題,又解好題。人生最大的痛苦在於解對了題,但選錯了題,而且還不知道自己選錯了題。正如人生最大的遺憾就是,不是你不行,而是你本可以。
通用模型:支援透過常規的事務型、分析型測試標準,提供基礎的效能測試指標。
業務模型:透過抽象業務模型,提供近似業務訪問的效能指標。
其他場景:提供諸如匯入匯出等場景的效能資料。
7。 評估維度:安全篇
人生基本上就是兩件事,選題和解題。最好的人生是在每個關鍵點上,既選對題,又解好題。人生最大的痛苦在於解對了題,但選錯了題,而且還不知道自己選錯了題。正如人生最大的遺憾就是,不是你不行,而是你本可以。
❖ 資料管理
資料加密:資料儲存加密,是保證資料安全的根本方法。即使發生了資料洩漏,也不用擔心資料為他人所用。針對加密的要點在於加密演算法及效率,除常規加密演算法外,是否支援國密演算法及自定義演算法?此外,最為重要的是對應用透明。
資料傳輸:在資料傳輸方面,支援資料的加密傳輸方式。
資料訪問:在資料訪問方面,支援行級、列級資料訪問控制。
生命週期管理:建立全生命週期的資料安全策略,在後續的資料歸檔、備份、匯出直至銷燬階段均需考慮必要的資料安全。
敏感資料:具備建立敏感資料識別、分級,根據不同級別採取不同策略,支援資料脫敏訪問。
❖ 使用者管理
使用者:具備唯一標識的使用者名稱,採用滿足複雜度要求的口令策略並加密儲存。同時,具備多種鑑權方式。
角色(組):透過角色或角色組方式,簡化許可權管理。支援所謂“三權分立”,即系統管理員、審計管理員、安全管理員三權分立
許可權:具備多種物件不同粒度的許可權控制能力。
❖ 訪問控制
物件:針對不同物件,可設定訪問、執行、變更等不同的控制權限。
叢集:在多個應用共享叢集時,應支援多個應用間自有資料庫物件的訪問控制。
會話:支援基於IP、埠、資料庫、使用者和密碼的連線認證功能,會話應進行安全隔離,不同會話應具備獨立的上下文。
節點:分散式資料庫的不同節點(如計算節點、儲存節點),支援白名單信任策略,複合要求的地址才能連線訪問。
❖ 安全管理
金鑰管理
安全告警
安全審計:支援安全審計的長久儲存。
8。 評估維度:相容篇
人生基本
客戶端:支援標準的客戶端訪問方式。提供不同語言的訪問驅動。
應用:支援常規資料應用的訪問。
語法:相容部分事實標準,例如Oracle、MySQL等。這對於業務的遷移意義很大。
硬體:支援多種硬體平臺,特別是國產化硬體平臺。
9。 評估維度:運維篇
人生基本
備份恢復:支援物理備份、邏輯備份。支援全量、增量備份。提供時點還原能力。提供物件級閃回能力。
資料遷移:在分散式環境下,提供全域性一致性的資料遷移能力。
系統配置
租戶管理
審計管理
容量管理
版本升級
監控
10。 評估維度:架構篇
人生基本
讀寫分離
11。 評估維度:例項管理篇
人生基本
執行計劃:支援分散式環境的執行計劃顯示。
統計資訊
空間管理
模式管理
時區
可擴充套件:支援不同層次的擴充套件能力,從前端接入層、計算層到儲存層。
12。 評估維度:高可用篇
人生基本
高可用:高可用包括多種維度,例如服務層高可用、資料層高可用、接入層高可用。服務高可用包括全部元件支援高可用;出現元件異常時自動恢復;在常規變更操作時(例如擴縮容)支援高可用。資料高可用,則從資料的RTO角度來考慮。接入層,則是指諸如Proxy代理元件的高可用。
高可靠:資料的整體可靠性,例如常見的透過多副本技術保證,且副本間是否滿足強一致等。還包括透過全量+增量+日誌的備份策略,滿足資料還原需求。
容災:提供單機、機架、可用區、同地域、跨地域不同層級的容災能力。