分佈式數據庫評估維度分析
近些年來,數據庫產業發展迅猛,各種數據庫產品層出不窮。那麼如何選擇一款數據庫產品成爲很多企業面臨的問題?特別是隨着數據規模、計算能力等需求,分佈式數據庫產品成爲很多企業的新寵。那麼這類數據庫較傳統數據庫又有何差異?在數據庫選型中,需要注意哪些方面?本文嘗試描述數據庫(特別是分佈式數據庫)選型需考慮維度,希望幫助企業可以做出最適合的選擇。
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 代理組件的高可用。
-
高可靠:數據的整體可靠性,例如常見的通過多副本技術保證,且副本間是否滿足強一致等。還包括通過全量 + 增量 + 日誌的備份策略,滿足數據還原需求。
-
容災:提供單機、機架、可用區、同地域、跨地域不同層級的容災能力。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/VHWfZ4_PIxARL7kNiNLREw