數(shù)據(jù)庫行業(yè)解決方案都寫了啥
原創(chuàng)隨著國產(chǎn)數(shù)據(jù)庫在各行業(yè)應用規(guī)模不斷增大,并開始進入深水區(qū)。國產(chǎn)數(shù)據(jù)庫從之前的不能用、不敢用逐漸過渡到如何用好。特別是以分布式數(shù)據(jù)庫為代表的新架構數(shù)據(jù)庫產(chǎn)品的出現(xiàn),顛覆了原有架構產(chǎn)品,之前很多的知識不能復用,如何用好這些成為很多用戶所關注的問題。近期,筆者也觀察到部分國產(chǎn)數(shù)據(jù)庫廠商經(jīng)過階段性實踐后,開始將使用心得形成行業(yè)解決方案,這無疑對用戶會帶來積極影響,加速行業(yè)推廣使用。本文將結(jié)合近期發(fā)布的兩家廠商的行業(yè)解決方案為基礎,說明下數(shù)據(jù)庫行業(yè)解決方案都應包括什么內(nèi)容。
1、場景:讓用戶判斷是否適合自己
用戶的場景千差萬別,沒有一款產(chǎn)品是可以通吃所有場景的,因此明確的場景描述尤為重要。通過這部分描述,用戶可以快速判斷是否適合自己。這其中場景分為兩種:
(1)技術場景
一種方式是描述技術場景,如常見的 OLTP、OLAP、HTAP 等,但這些還是比較寬泛的,需要更進一步的細化。如處理的數(shù)據(jù)規(guī)模大小、計算邏輯怎樣、延遲要求如何等等。如下面這段描述:這是一款分布式數(shù)據(jù)庫,可滿足百TB以下的關系型數(shù)據(jù)存儲,可提供數(shù)萬的高并發(fā)支持,適用于數(shù)據(jù)計算邏輯簡單,支持簡單點查、范圍查詢及數(shù)據(jù)變更,在高并發(fā)下情況下可提供百毫秒級別的響應時間等。上述技術場景描述,會給用戶一個較為直觀的印象。如果用戶也整理有自己的數(shù)據(jù)庫場景地圖(如下圖),就可以很容易的找到結(jié)合點。
(2)業(yè)務場景
另一種方式是描述業(yè)務場景,這種方式對用戶而言會更加簡單直觀,畢竟用戶是最了解自有業(yè)務的。用戶在第一時間就明確了這一產(chǎn)品是否適合自己。如在金融行業(yè),可以通過類似下面的一段話進行描述:某分布式數(shù)據(jù)庫產(chǎn)品適合于銀行核心系統(tǒng)分布式改造,過去此業(yè)務多是通過集中式架構、通用硬件來支撐,無法滿足日益增長的海量數(shù)據(jù)規(guī)模、業(yè)務連續(xù)性也較差。分布式數(shù)據(jù)庫產(chǎn)品具備海量規(guī)模、高性能處理、強一致事務保證、數(shù)據(jù)高可靠及服務連續(xù)性保證等,并已通過多年實踐在很多銀行系統(tǒng)核心改造中落地。通過上述一段描述,用戶可以很容易產(chǎn)生共鳴。用戶對自身業(yè)務是有著明確認知的,例如銀行業(yè)業(yè)務分類參考下圖。
2、架構:讓用戶了解產(chǎn)品是什么
數(shù)據(jù)庫產(chǎn)品是由多組件構成,對于分布式架構產(chǎn)品來說尤為如此。如何讓用戶快速了解產(chǎn)品,可通過架構部分進行描述。這里可通過一張架構圖進行說明,包括哪些組件、組件有何功能、如何與周邊生態(tài)協(xié)作、高可用實現(xiàn)機理等等。通過這部分可以讓用戶快速了解產(chǎn)品構成、工作原理等內(nèi)容,也為后面進一步展開功能說明做個鋪墊。下面通過一個分布式數(shù)據(jù)庫架構示意圖說明下
注意這里不是技術架構、也不是部署架構。前者更強調(diào)技術原理及實現(xiàn),后者則為實施規(guī)劃設計階段需考慮。這里就是簡單的產(chǎn)品功能架構,讓用戶有個概括性了解即可。
3、功能:讓用戶了解我能干什么
(1)現(xiàn)狀描述
第一部分,重點是讓用戶了解現(xiàn)在產(chǎn)品能做什么。這里不是產(chǎn)品的功能手冊,因此無需對功能做很詳細的說明,但需要將一些重點的能力及用戶比較關注的部分都說到。這里可包含但不限于這些內(nèi)容:
- 基本能力:ACID、SQL引擎等
- 存儲結(jié)構:行存、列存、索引結(jié)構
- 高可用:單機、主備、雙活、多活
- 容災:單機房、同城多機房、異地等
- 擴展性:接入、計算、存儲擴展等
- 數(shù)據(jù)集成:導入導出、遷移同步等
- 安全能力:用戶、權限、加密、審計等
- 運維相關:管理、監(jiān)控、優(yōu)化、備份等
- 生態(tài)兼容:協(xié)議、語法、接口等
- 部署方式:物理機、虛擬化、容器、云
- 國產(chǎn)化:軟硬件、上下游
(2)歷史與發(fā)展
第二部分,是描述產(chǎn)品功能的發(fā)展歷史及未來路標。產(chǎn)品功能發(fā)展是有一定傳承關系的,用戶可從演進版本中找到發(fā)展脈絡,更好地了解產(chǎn)品。同時,產(chǎn)品未來發(fā)展也有助于用戶判斷產(chǎn)品未來發(fā)展策略及方向。下圖以 MySQL 為例,做個簡單說明。
4、規(guī)劃:解決用戶產(chǎn)品上線問題
當用戶對產(chǎn)品有了初步了解后,并有意愿后,該如何上手就是急需解決的問題。首當其中就是上線,需做如下一些工作。
(1)硬件評估
數(shù)據(jù)庫,特別是分布式數(shù)據(jù)庫,通常有多個組件組成,不同組件的資源消耗模型不同,有的是 CPU 密集、有的是 IO 密集不等。這里需根據(jù)不同組件,給出硬件推薦的配置,方便用戶快速上手。如考慮國產(chǎn)化問題,還需列明對應的國產(chǎn)化軟硬件產(chǎn)品列表,供用戶參考。此外,還和部署方式有一定關系,如云、容器化部署也有著特殊要求。可參考下表
這里需要注意的是,資源配置不僅與角色有關,也與負載有關系。上面硬件配置通常只是最低配置,實際生產(chǎn)環(huán)境可根據(jù)用戶負載進行精確評估,這部分會在資源評估中詳述。
(2)資源評估
在做資源評估時,會情況比較復雜,需要考慮多重因素。很多廠商都提供了一個評估模版,用戶可如實填入后,給出相關評估結(jié)果。下表簡單說明下需考慮的因素。
這其中會有一些閾值,是根據(jù)廠商產(chǎn)品長期實踐后所得出的,是與產(chǎn)品自身架構、功能有關。以負載維度為例,較大負載是需要更高的資源配置,可以簡單根據(jù)一些指標做下分列,這樣方便用戶選擇或內(nèi)置到資源評估小工具。當然,如果能根據(jù)業(yè)務指標做相應的資源評估,無疑是更好的。
(3)容災方式
很多行業(yè)都對業(yè)務連續(xù)性有一定的要求,因此需要確定具體應用的業(yè)務連續(xù)性目標、設計對應的高可用方案。很多數(shù)據(jù)庫產(chǎn)品也都支持了如單數(shù)據(jù)中心高可用、同城雙中心、兩地三中心、多地多中心等容災架構模式。技術上基于多副本冗余技術、一致性復制技術和靈活高可用策略實現(xiàn)多種容災方案,單臺服務器故障自動切換到本數(shù)據(jù)中心其他機器的副本上;雙中心以上的機房故障時,可快速切換到其他機房或者城市災難中心,最大程度保證業(yè)務連續(xù)性。
5、開發(fā):解決用戶應用開發(fā)問題
產(chǎn)品上線后,下一步的問題就是如何開發(fā)對接,這里需要將開發(fā)所關心的問題一一說明。
(1)快速入門
首先可以通過一個DEMO,讓用戶快速入門。選擇最主流的開發(fā)語言,實現(xiàn)一個簡單的 CRUD 即可。目的是使得用戶能夠快速上手。國內(nèi)很多產(chǎn)品都提供了一定的兼容性,例如兼容 MySQL、PostgreSQL、Oracle 等,其目的正是降低用戶使用門檻。
(2)開發(fā)接入
開發(fā)者使用此產(chǎn)品,需要關注的一些問題。包括如:連接池配置、應用高可用、負載均衡、字符集選擇、事務控制等。此外,還包括適配一些主流的開發(fā)框架、日志跟蹤工具等,對于開發(fā)一開始關注的問題都可在此處說明。
(3)數(shù)據(jù)建模
主流的數(shù)據(jù)建模方法,是否適用于本數(shù)據(jù)庫產(chǎn)品,需要有哪些注意事項。
(4)結(jié)構設計
數(shù)據(jù)庫對象設計上,有哪些注意事項。對于分布式數(shù)據(jù)庫而言,對象設計上需要做一些調(diào)整以適應分布式架構,包括如數(shù)據(jù)分片策略、索引設計、自增類型、庫內(nèi)計算(存儲過程、觸發(fā)器等)。特別是數(shù)據(jù)分片策略,尤為重要。分布式數(shù)據(jù)庫的基礎就是將數(shù)據(jù)“大而化小”,但不是所有數(shù)據(jù)對象都需要做分片。哪些做分片,哪些不做?選擇怎樣的分片算法?分片的粒度如何?如何規(guī)避熱點?如何解決關聯(lián)對象的分片問題等等。上述問題都是需要解決的,有些數(shù)據(jù)庫產(chǎn)品結(jié)合在行業(yè)的經(jīng)驗,將常規(guī)的分片策略抽象出來給出一定的最佳實踐,這對于用戶來講無疑會大大降低使用難度。通常有如下一些建議:
- 數(shù)據(jù)分片應盡量均衡
- 盡量減少跨節(jié)點事務
- 集合業(yè)務特點,梳理主題場景
- 同一主題選擇相同分片鍵
- 分片鍵字段保持穩(wěn)定
(5)語句開發(fā)
制定一套應用開發(fā)遵循的開發(fā)規(guī)范,有利于避免重復觸及數(shù)據(jù)庫使用常見問題,提高可閱讀性和問題定位速度。包括但不限于:命名規(guī)范、事務控制、語句寫法,問題常見于索引、排序、函數(shù)、分組、關聯(lián)等。
(6)性能優(yōu)化
將常用的性能優(yōu)化手段,加以說明。可能包括如:性能分析手段、參數(shù)優(yōu)化、模型優(yōu)化、SQL調(diào)優(yōu)等。
6、遷移:解決用戶數(shù)據(jù)上線問題
如何將用戶數(shù)據(jù)平穩(wěn)遷移上線,很多產(chǎn)品都提供了獨立工具實現(xiàn)對異構數(shù)據(jù)庫的遷移。這里可分為三個步驟:
(1)事前評估
完成遷移動作,涉及到數(shù)據(jù)對象結(jié)構遷移、數(shù)據(jù)自身的遷移以及負載評估。前者需要支持異構數(shù)據(jù)庫對象的映射,這其中包括很多細節(jié)(如字符集、空值等),很多廠商都內(nèi)置于工具中來完成;數(shù)據(jù)遷移則涉及對遷移速度、斷點續(xù)傳、異常處理等問題;最后則是數(shù)據(jù)庫負載能否在新產(chǎn)品中得以支撐。除此之外,還包括可能得回退步驟。
(2)事中遷移
正式的數(shù)據(jù)遷移,一般都包括全量數(shù)據(jù)遷移、增量數(shù)據(jù)遷移及數(shù)據(jù)比對三個階段。很多產(chǎn)品都內(nèi)置于工具中,提供一整套遷移方案。
(3)事后割接
當都完成后,需完成最后的割接動作,一般是通過流量重定向到新庫來完成。此時,如果需要后備,可一并提供回流能力,保證可回切。
7、運維:解決用戶日常管理問題
運維部分,包括的比較龐雜,如備份恢復、監(jiān)控報警、擴縮容、升降級、日志分析等。很多產(chǎn)品都提供了運維平臺來輔助完成上面這些管理動作。
8、安全:解決用戶的后顧之憂
安全部分,范圍也比較廣,包括主機安全、賬戶安全、傳輸安全、存儲安全、安全審計等。
9、案例:實踐出真知,效果案例見
很多用戶非常關心同行業(yè)的案例情況,一方面這些案例都是經(jīng)過實踐,具備一定的可參考性;另一方面同行業(yè)案例,往往還能反映出很多共性的問題。這其中需重點描述出場景、架構、效果即可。讓用戶有直觀印象即可,也勾起用戶嘗試使用的興趣。