一篇“完美”的數據庫產品文檔都有啥
原創數據庫文檔,可以說是數據庫的“臉面”,是了解學習數據庫的主要手段。近些年國內數據庫產品層出不窮,使用者也是眼花繚亂。如何選擇、學習掌握一款數據庫產品,我的經驗就是可以先從文檔入手。之前也接觸過不少國內數據庫產品,在文檔上與如Oracle、MySQL等還存在不小差距,這點還需國內廠商更多重視文檔工作。畢竟一份文檔是否寫的完整、詳實、準確,關系到用戶是否能用好一款產品。下文是我根據之前的觀察,總結的一份個人認為較為完整的數據庫產品文檔結構。希望對上手一個新數據庫,有所幫助。
1、產品簡介
文檔的第一個部分是產品簡介,用戶需要從這部分快速了解一個產品,并做出判斷是否符合自己的需求。因此這一部分不需要涉及很多技術細節,更多是描述“是什么、做什么”的問題。讓受眾能夠有簡單、直觀的了解即可。
(1)產品概述
產品概述部分,需要準確描述產品的定位,即“是什么”的問題。不要以為說清楚這個問題很簡單,很多產品連這個就基礎問題都沒有說清楚。舉個例子,如國外有一款產品Vitess,其官網主頁定位為“Scalable. Reliable. MySQL-compatible. Cloud-native. Database.”,通過這樣一系列名詞能讓我們對產品有個大致的印象。這里有個誤區,盡量不要使用一些含糊的描述,如“企業級、金融級..”等描述。上述描述對用戶了解產品沒有任何幫助,屬于無用信息。
(2)適用場景
適用場景部分,將在“是什么”的基礎上,進一步說明在產品在哪些場景有價值。通過這部分說明,讓用戶可以更加具象地理解產品的使用范圍。若描述很精準,甚至可以做到對號入座,讓用戶可以明確的知道是否適合自己。這里的場景可以很寬泛,因為作為通用性產品來說,只要描述大致即可。具體到某一行業、某類業務,可以通過解決方案層面進行說明。
(3)核心功能
上面的產品描述,使我們了解的產品“是什么”,那么核心功能部分就挑重點說明下產品“做什么”。可以通過產品支持的具體功能進行說明。這里需要說明的是,這里的功能應該是對用戶有明確場景價值的,有實際受益的功能。例如某數據庫產品支持“彈性伸縮”,用戶就可以了解當業務出現徒增時,是可以實現靈活的擴容。避免出現一些偏重于技術性的功能描述,如“數據分片策略支持一致性Hash方式”,這樣非技術背景的同學很難知道這意味著什么。
(4)核心技術
有了場景和功能描述,下面就可以說明實現上述功能使用哪些核心技術,這是可以“秀肌肉”的環節,目的是使用戶更深入地了解功能實現原理,更加篤信產品能力。在核心技術選擇上,更多傾向于與前面核心功能能夠有對應關系,即通過什么技術實現某種功能、進而延展為適用某些場景。這樣就形成從“技術-功能-場景”的閉環。
(5)產品架構
產品架構部分,可通過一張簡圖,說明產品組成。注意這里不是技術架構、部署架構,而是產品架構,因此無需關注實現細節,重點是讓用戶能快速了解產品是如何組成的,與上下游如何協同工作等就可以了。很多細節的如系統與子系統組成、技術棧和框架、接口和協議、數據架構和流程等是可以忽略了,避免對用戶造成干擾。
(6)產品規格與版本
這部分是在用戶對產品定位、功能、技術有了一定了解后,說明下產品規格和版本,激發下潛在購買意愿。很多產品都提供了個人版、標準版、企業版等不同版本或者提供了多種規格可供用戶選擇,這里需要明示出來,特別需重點說明不同版本、規格的差異,方便用戶根據自身情況進行選擇。特別建議通過一個列表的形式進行說明,一目了然。
(7)兼容性說明
很多國產數據庫產品采用了兼容性設計,其背后原因是希望借助其他產品成熟生態進行擴展。常見如兼容大型商業數據庫(如Oracle)或流行的開源數據庫(如MySQL、PostgreSQL)。對于很多用戶來說,接受一個全新的數據庫產品還是有一定難度的,如果有兼容性則可以大大降低使用門檻。當然兼容性是多方位的,包括開發、管理、監控等等,可通過對比的方式讓用戶快速了解。
(8)使用限制
沒有產品是完美的,清楚的知道產品邊界對用戶很有意義。通過這些限制,可以很好地掌握想使用這一產品需要做哪些“妥協”。事前的知悉遠比事后暴露出問題重要的多,也是對用戶負責任的一種態度。
2、快速上手
快速上手部分,是讓用戶在最短的時間內,體驗產品功能,完成一個使用閉環。這其中需包括從部署安裝、開發設計到應用開發等多個階段。在體驗場景設計上,可選擇最小功能為設計原則,能快速完成即可。如可能涉及到多個組件,也盡量減少來回交互,盡量通過在單一產品完成操作。
(1)安裝部署
在安裝部署方面,可不循序最佳實踐,能快速完成即可。很多產品都提供了如一鍵安裝、All in One包、Docker鏡像、云實例等方式,盡量降低安裝部署難度、降低對客戶端環境依賴。一般要求在五分鐘內可以完成環境準備工作,時間過長用戶會失去體驗耐心。以分布式數據庫為例,其涉及的組件非常多,安裝過程可能很復雜,提供快捷體驗環境尤為重要。以分布式數據庫-KunlunBase為例,就通過Docker鏡像的方式,可在數分鐘內完成一套包括多個計算節點、存儲節點的集群構建過程,非常方便。
(2)用戶操作
用戶操作部分,主要是為了配合后面體驗工作所必需的操作。常見的如實例啟停、用戶創建、權限分配等。完整的管理操作不需要在此說明,也不建議通過圖形化界面完成,盡量通過同一終端就可以完成整個操作。
(3)SQL操作
SQL 操作部分,用戶最為常用的SQL操作,通常包括表和索引的創建刪除,數據記錄的CRUD,簡單查詢(含表關聯),事務操作等。通過以上部分,小白用戶可達到日常可用的程度。
(4)應用開發
進一步進階的要求是如何通用應用程序訪問數據庫。這其中建議針對常用的開發語言支持情況進行描述,例如Java、Python、Go、C/C++等。每種語言中又包括前提條件(如語言版本)、驅動方式(含鏈接)、示例代碼(完整源碼)、編譯運行等說明。針對簡單場景,完全可以仿照這一過程進行開發。
(5)導入導出
導入導出部分,是為了方便生態集成。可將現有系統數據通過導入功能快速集成到新數據庫中,也可以將數據庫中內容通過導出輸出到其他平臺。上述示例,可以幫助用戶完成一些更為復雜的示例,不用從0到1完全自己創建,可以復用現有的結構、數據及SQL,快速體驗產品能力。
(6)性能測試
在完成了上述試用后,用戶最后通常會關注到性能。針對性能部分,可利用標準性能測試,如TPC-C、TPC-H、TPC-DS等。在內容中需包含完整的測試步驟,方便用戶可以照此快速復現測試過程并提供最終測試數據。真實的性能表現還是需要用戶根據自己業務進行測試,上述僅僅是供用戶參考即可。很多用戶也會基于此作為選項參考因素之一。上述內容也獨立成章,形成性能白皮書。
3、部署安裝
安裝部署,通常是了解使用數據庫的第一步。與前面的快速上手不同,這一環節盡量做到詳實、完整,個中細節需要描述到位。
(1)安裝部署
由于數據庫,通常存在多種規格或部署模式,在描述安裝之前應先說明下大體情況、適用場景等,然后再針對不同安裝情況分別加以說明。如果數據庫包含多種組件(特別是分布式數據庫),這種情況很常見,可以說明下各組件功能,并描述獨立安裝過程,由用戶選擇是否安裝。對于同時提供多種安裝方式,如命令行、圖形化、容器化安裝方式的,也應分別說明。在具體安裝過程中,可遵循硬件、系統、環境、用戶、初始化、安裝、啟動、組件、檢測等環節分別加以說明。
(2)數據庫卸載
卸載,往往是很多產品文檔會忽略的一個環節。如何干凈、徹底地刪除數據庫,是需要遵循一定步驟的。通常應包括備份(數據+配置)、停止實例、刪除空間、刪除用戶、檢查殘留等。
(3)數據庫升級
數據庫升級是不可避免的操作,特別是在產品不完善的情況下。而對于用戶來說,升級往往是比較痛苦的,如何做到升級平滑是DBA非常關注的問題。特別是在分布式環境下,組件多、節點多,升級能力更為重要。在整體升級中,可包括升級檢查、影響評估、升級準備、數據備份、配置備份、實例升級、組件升級、狀態檢查、應用驗證、升級回退等環節進行說明。
(4)數據庫擴縮容
數據庫擴縮容分為兩種情況,一種是所謂Scale UP,一種是Scale Out。前者更多是單機或集中式架構的場景擴容策略,這種更多是硬件的升級,這里不再詳述。后者則更多是分布式數據庫的通常擴容策略,很多數據庫都采用存算分離架構,支持對計算、存儲或其他組件的擴容。這其中的核心問題一是是否支持在線擴容,二是是否需要移動數據。之前接觸不少用戶,針對這塊還是比較慎重的,需要在擴容過程中重點說明對線上運行的影響及過程跟蹤。縮容的過程跟擴容類似,但需關注存儲空間、算力等的減少或降低對系統的影響。
(5)云與容器化
很多數據庫,也提供了云端產品。云作為一種新型資源供給方式,顛覆了傳統使用行為,大大加速簡化了基礎設施的構建及使用。作為云產品,安裝部署、管理維護、監控告警、備份優化等都可以依托于云平臺去完成。在安裝部署階段,用戶可以不再關心具體的安裝配置過程,而需要更多關心云的一些特殊性。如選擇數據庫產品、高可用架構、部署區域、網絡拓撲、存儲介質等以及是否購買使用其他產品。此處文檔中只需描述這些特殊點,解決用戶選擇困難即可。針對支持容器化管理的情況,也可以一并說明如何使用管理數據庫。具體操作可以參見后面參考引用部分。
4、數據庫管理
數據庫管理,主要是面向DBA人群,重點說明數據庫管理的相關內容。這部分的內容會比較龐雜,需要分解說明。
(1)集群管理
這其中包括實例及相關組件的啟動、停止、狀態查看。其他如增加、刪除組件及節點,可以參考之前的“數據庫擴縮容”;數據庫升降級可參考之前的“數據庫升降級”。
(2)租戶管理
如數據庫支持租戶,可在此處說明下,主要包括租戶創建、刪除、資源配置等。有些產品租戶能力較強,實現了較為完整的租戶能力,包括資源、參數、備份、監控、診斷等,這種情況建議在將租戶管理放在數據庫管理章節最后,獨立說明。
(3)參數管理
一個數據庫會保護很多參數,特別是分布式數據庫,不同組件也會有各自的參數。此部分需要說明參數的大致分類、操作方式(查看、修改、重置)、持久化情況等信息。至于參數的明細,可以在參考引用部分重點說明,包括但不限于參數名稱、參數含義、值域范圍、作用域(實例級、組件級、會話級等)、生效方式(在線、離線)等。這里強調下,有些產品是基于開源數據庫實現或兼容其他數據庫產品,需重點說明下“其他數據庫”參數在當前產品是否有變化,并給出具體描述,不能直接引用其他產品說明。
(4)日志管理
數據庫系統中會包含很多日志,如常見的運行日志、事務日志、告警日志、監聽日志、慢日志等。在此部分需要說明日志文件分類、文件名稱、內容格式、存儲位置、配置方法、歸檔刪除策略等。如日志內容需要單獨工具解讀,也可以一并在此說明。日志是用戶觀察數據庫的一個窗口,特別在很多產品性能視圖、事件等機制尚不完善的情況下,因此應更加重視日志的使用。
(5)存儲管理
存儲管理部分,涉及數據庫運行時所需空間的管理,這里需根據不同文件對于空間、IO能力等訴求的差異,在前期就做好規劃。后續日常管理則包括空間的擴容、移動、監控、清理等。對于很多數據庫,還支持數據副本的概念,即數據存儲多份,針對這種情況也需在此說明,包括工作原理等;如能人為干預副本的分配、移動、分裂、合并等也一并說明。
(6)備份恢復
備份恢復部分,包括物理與邏輯備份恢復兩種。一般建議將邏輯的備份恢復,歸為導入導出,放在后面的數據集成章節,這里重點談物理備份恢復。在開始部分可先說明備份介質選擇、各組件備份(如數據、日志、配置等)。在具體備份操作上,包括備份創建、備份刪除、過程跟蹤、備份限流、備份集管理等。在具體恢復操作上,包括完整恢復、基于時點恢復、部分恢復(如基于對象)等。
(7)故障診斷
故障診斷部分,建議先說明下整體故障診斷的框架,即支持哪些故障診斷的方法及手段,然后再具體說明。常見的診斷如健康檢查(如存儲壞塊等)、日常巡檢(如工作負載、參數配置等)、DUMP文件(各類異常生成)、錯誤碼等。此部分需說明上述各類操作方法,具體DUMP文件格式解讀、錯誤碼信息可以引導參考引用部分。
(8)監控指標
監控是DBA觀察數據庫的主要窗口,這其中包括數據字典視圖、動態性能視圖以及系統可吐出的各種Metric。此部分建議先說明下監控體系、收集機制、查詢方法、指標分類及解讀等。具體的視圖、Metric 說明可引導參數引用部分。
(9)應急處理
應急處理,是指系統過載或出現異常時需要緊急采取的措施。應急處理的首要目的并不是排查根因,而是快速止血,先讓數據庫盡快恢復正常服務能力。這里可根據經驗收集經驗,按異常類別進行分類說明。如硬件故障、業務過載、組件異常等,然后整理對應應急處理措施。
5、高可用
高可用意味著兩點,一是服務高可用,二是數據高可靠。前者是為了保障業務系統的可用性,后者為為了保護企業核心資產-數據不丟失。針對整體高可用,可以在前面先概述下整體高可用技術,包括各種高可用架構,后面再分類說明。
(1)實例高可用
在實例內部,已經內置有多種高可用能力。例如針對應用連接,Oracle 數據庫支持的TAF;針對存儲異常,很多數據庫提供的多存儲副本機制;針對誤操作等,數據庫提供如數據閃回功能;針對組件級故障,數據庫提供的自動切換等。上述這些均為高可用在實例內能夠提供的技術能力,可在此說明。
(2)集群高可用
高可用集群是指在實例高可用基礎外,通過架構支持多種集群方式以滿足更高的可用性。當實例或單點集群出現故障時,可以切換到高可用集群的其他部分來承載。這其中可以有多種模式,常見的如主備、分布式和共享三種。主備模式,是指將主庫/主集群數據復制一份到備庫/備集群,后者可承擔異常時切換滿足業務訪問或者承擔只讀訪問需求。類似于Oracle DataGuard、MySQL Replication 方式。分布式模式,是指數據庫本身各組件節點采用分布式架構,當異常時可通過冗余節點來處理。例如在存算分離架構下,計算節點多采用多點冗余無狀態設計,存儲節點采用多數據副本的方式解決單點,管理節點也多采用主備或基于共識協議方式解決。類似于 Google Spanner、OceanBase、TiDB、TDSQL等產品。共享模式則是指多個數據庫實例作為計算節點共享一份存儲(或加緩存)的方式,上層計算實例出現問題,可自動切換,下層的共享存儲則通過硬件或分布式存儲來解決。類似于 Oracle RAC 的方案即如此,國內如DM DSC、華為開源的參天引擎等。
(3)部署實踐:同城與異地
針對各種高可用方案,用戶很關心如何選擇及部署。這里可根據最為常用的幾個高可用場景說下上述架構的部署方式。這其中包括針對同城(同機房)、同城(跨機房)、異地多種場景進行說明。比較高效的方式是畫下部署圖,這樣比較清晰。此外,針對各種異常情況,不同場景及架構下的系統可用性(例如RTO、RPO指標)情況,這樣用戶可以一目了然。
(4)高可用管理
針對上述高可用能力的相關操作,包括各種架構的搭建、切換、同步、監控、排障等。
6、產品安全
一個安全的數據庫系統應該能夠建立安全保護機制,保護計算機硬件、軟件和數據不因偶然和惡意的原因而遭到破壞、更改和泄漏。對數據庫的安全性要求通常會被劃分為保密性、完整性、可用性三個要素。保密性是指數據不能泄露給非授權用戶,通常通過數據加密、訪問控制等方式實現。完整性是指數據在存儲和傳輸過程中,數據不被破壞及丟失,通常通過訪問控制、完整性校驗來實現。可用性是指數據可被授權用戶,在異常時可恢復使用,通常通過備份、冗余、防火墻等方式來實現。
(1)傳輸加密
傳輸加密是指在應用與數據庫之間或數據庫各組件之間使用 SSL/TLS 的方式實現通信加密。使用加密傳輸可以減少數據庫中敏感信息的泄露風險,有效保護數據的安全。有些數據庫產品是兼容開源數據庫協議的,這時就需要判斷是否已支持開源數據庫的傳輸加密。
(2)鑒權認證
鑒權認證,是指對登錄數據庫訪問數據的用戶進行身份驗證,確認該用戶是否能夠與某一個數據庫用戶進行關聯,并根據關聯的數據庫用戶的權限,對該用戶在數據庫中的數據訪問活動進行安全控制。有些數據庫產品還支持操作系統認證,即使用操作系統用戶直接登錄,也需一并說明。
(3)訪問控制(用戶、角色、權限)
訪問控制,是指數據庫通過用戶、角色、權限設計,做到對資源訪問控制管理,不同用戶或角色擔負不同的責任。在權限設計上,一般分為系統權限、對象權限,并提供一組視圖來查看權限信息。有些數據庫產品還擴展支持了三權分立、行級權限、網絡安全等能力。
(4)數據加密
數據加密,狹義上指對數據庫存儲數據的加密,廣義則還包括對日志、備份、過程定義等的加密。通過數據加密可以有效的保護,避免因數據外泄造成的損失。現在大部分數據庫都實現了透明加密(即TDE),加密與解密的過程對使用者來說是完全透明的。但這里需要關注幾點,一是國密算法、密鑰輪轉等是否支持;二是數據加密后備份恢復或上下游生態是否受到影響。
(5)安全審計
安全審計,是指對具備相應權限用戶執行操作的記錄,進而防止用戶登錄信息泄露,或者訪問權限被濫用。審計功能可以加強企業對數據安全、合規等方面的要求,是跟蹤用戶行為最主要的工具。此部分應包括審計開啟、查看的方法,及開啟審計對性能影響的說明。
(6)防火墻
防火墻功能,更多是在事前或事中針對訪問做的一種防御措施,用于檢測和防御外部入侵風險,較為常見的如IP白名單等。
7、開發指南
前面幾個章節多為面向運維側,后面幾個章節更多是面對架構、研發側,講述如何基于這個數據庫開發應用系統。
(1)連接驅動
在開發之初,先需解決如何連接訪問問題,因此需說明連接驅動問題。面對常見的開發語言\接口,如何連接數據。常見如Java、Python、C/C++、Go、.NET,接口如JDBC、ODBC、OLEDB等。此處最好給出連接驅動下載地址及簡單開發示例。某些產品兼容其他數據庫,即可以通過其他數據庫協議訪問,也需一并說明。
(2)QL元素
針對SQL語句使用的最基本要素的說明,包括字面值、標識符、雙引號、對象及對象命令、偽列(如有)、NULL等的說明。
(3)數據類型
支持數據類型,包括類型、存儲長度、值域、精度等信息,最好以一種表格的形式呈現。為了方便用戶理解,也可以同步列出主流數據庫類型的對應關系,這樣方便用戶參照轉換。
(4)字符集
系統支持字符集的情況,并說明字符集使用規范。
(5)運算符
數據庫支持的運算符,包括但不限于算術、比較、邏輯、連接、位、其他運算符。
(6)函數
數據支持的函數說明,包括但不限于日期、字符、數學、轉換、聚焦、窗口、特殊函數等。如果系統還支持自定義函數,可在下面的語句開發部分詳細說明。
(7)語句開發
語句開發部分,大體可分為兩個部分:SQL語言和過程語言。這其中包含的內容有比較多,其中SQL語言就包括DDL\DML\DQL\TCL等,又可以進一步分解如DQL就可以細分為查詢、過濾、關聯、嵌套、層次等。過程化語言則包括語法結構、條件控制、數據操作、數據游標等。這部分只描述基本內容即可,具體寫法可參考后面的參考引用。此外,還可包含如注釋等寫法。
(8)結構設計
數據庫支持很多種對象,包括常見的表、分區、分片、索引、視圖、觸發器、存儲過程、序列等。在結構設計部分,需說明各對象的設計規范,包括基礎命名規范、設計規范、最佳實踐等。相較于之前傳統數據庫,如今數據庫在開發設計上需關注側重點有了明顯的變化。如在分布式數據庫中,數據分片尤為重要;數倉數據庫中列存表的設計有其特有要求;多模數據庫,對架構設計又有著自己的特殊性等等。這部分內容較為繁多,可以結合案例進行說明,方便用戶理解。
(9)對象管理
上面結構設計中的諸多對象,都需要一定管理操作,如創建、刪除、查看、修改、截斷、重建、分析、編譯、執行等等,均在此說明。
(10)事務&隔離級
這其中包括事務原理性說明、事務控制、異常事務處理、事務與并發、事務與隔離級等內容的說明。針對事務的一些小點,如空閑事務、懸掛事務處理、顯性與隱性事務、大事務處理等,也可在此說明。在分布式數據庫下,分布式事務也需要單獨說明下。
(11)鎖與死鎖
需要說明系統鎖的類別、工作機制、顆粒度、互斥行為、死鎖與死鎖檢測機制等。
8、性能調優
當系統出現性能瓶頸時,性能調優就顯得尤為重要。調優本身可以在多個層次進行,這里可按照自下而上或者說先局部后總體的方式進行說明,通常都按照語句級、對象級、實例級、系統級、架構級、應用層調優順序來展開。最后在說明下調優相關工具的使用。
(1)SQL 調優
SQL 語句的調優,首先要理解SQL執行過程,包括解析器、優化器、執行器的行為,包括緩存、執行計劃等內容。在具體描述上也可遵循上面的 SQL 執行順序進行說明,逐步展開。其中優化器部分,還會涉及到統計信息、參數化等問題。這部分內容相對龐雜,需要細致說明。
(2)對象調優
對象的調優,更多是在對象設計階段的一些最佳實踐,例如是否需要做分片、分區?是否需創建索引?如何和使用自增效率高等等。這部分可按照對象分列說明。在說明過程中,最好等配合一些查詢、監控手段,可以印證調優是否有效。
(3)實例調優
實例調優,通常是指各種參數的優化配置。最好的方式是提前建立性能基線,再根據收集到的信息做調整。很多數據診斷優化工具提供的報告,可以幫助完成實例調優。
(4)系統調優
系統調優,是指在操作系統或硬件層面可以考慮的一些優化手段。
(5)架構調優
當在單一實例或集群無法滿足優化結果,就要考慮在架構層面進行。例如使用讀寫分離技術,滿足更高的查詢請求;如使用分布式數據庫提供更強的計算能力等。這部分相對代價比較大了,通常描述些方法論就可以。
(6)應用調優
最后部分,就是不要把優化僅僅限于數據庫層面,在應用層也可以做很多東西。例如通過引入緩存降低數據庫壓力;通過應用層處理重數據庫負載的計算任務降低壓力等。
(7)調優工具
配合上面的調優工作,需要一組調優工具來輔助完成。這其中比較重要的如統計信息,包括收集查看操作;執行計劃,包括查看、管理執行計劃;性能視圖,包括各粒度性能指標的查看;性能診斷工具,如Oracle AWR等工具可以完成系統診斷等。
9、數據集成
數據庫不是一個孤立的環境,需要與上下游生態打通,這就對數據庫提供的集成能力提出一定的要求。
(1)數據遷移
數據遷移是指從其他數據庫將數據一次性遷移到當前數據庫;或將當前數據庫遷移到其他庫。這包括結構遷移和數據遷移,其中數據遷移又可分解為全量遷移、增量遷移、數據對比等過程。很多產品都支持了多種遷移工具,可采用列表方式詳細說明。
(2)數據同步
數據同步是指兩個數據庫之間保持持續數據復制狀態,兩個庫之間可以保持準實時的狀態。在同構數據庫下往往可通過物理或邏輯日志消費的方式進行,異構庫間相對難度較大。很多第三方產品提供了異構庫間數據同步的能力。
(3)導入導出
除了前面提到的備份恢復外,異構數據庫間進行數據交換一個便捷的方式就通過導入導出方式。通過將數據導出為格式化文件或 SQL 語句的文件,再向目標端導入或執行,可相對容易地實現異構庫數據交換。數據庫應提供上述導出為文件或語句腳本的能力。
(4)CDC
CDC,是Change Data Capture的縮寫,翻譯過來是數據變化捕捉。這是一種數據集成的能力,通過將數據庫的變更處理為消息,供下游生態系統消費訪問,可以較為容易地實現數據變化的傳播。這也成為數據庫開發生態的一種規范。
10、參考引用
參考引用,是個“大字典”,文檔中涉及到速查類的信息都可以放在這里,方便用戶快速查找。
(1)SQL 參考
包括SQL語句的寫法、注意事項、典型示例等。由于SQL寫法比較復雜,可以采用鐵路圖等方式簡化理解,方便用戶使用。具體使用上可按用途分類,按字母排索引表,便于查找。
(2)PL 參考
過程化語言參考,包括前面講的如循環、條件判斷、分支、賦值、游標等操作,都在此說明。
(3)API 參考
用戶通常與數據庫是通過 SQL 語句打交道,但有時也會提供API的方式。例如很多管控類的操作會提供API供用戶調用,包括在K8S環境里集成的Operator也類似。特別是云產品,為了方便用戶集成進自己的運維系統,也會提供Open API。這里重點說明下API用法、參數、給出示例即可。
(4)系統變量與參數
這里重點說明變量或參數的含義、值域、作用域、是否熱加載等信息,給出一份詳細列表。需注意的是,分布式數據庫有很多組件,需要區分上述變量或參數是哪個組件,是否可以統一設置等。
(5)錯誤碼
包括錯誤碼組成、錯誤碼含義、錯誤碼速查表。如提供了兼容模式,還需說明是否兼容原始數據庫的錯誤碼,如果兼容一并列出。
(6)告警/等待事件
系統定義的事件,包括告警事件、等待事件或其他事件。通過這些事件可以有效分析系統運行狀態。
(7)性能視圖/數據字典
如前面所談,需要完整的數據字典和性能視圖說明,方便用戶查詢。
(8)驅動說明
不同開發語言數據庫驅動說明,包括驅動支持的主要功能、數據類型、函數等。
(9)保留關鍵字
系統內置保留的關鍵字。
(10)術語表
文檔中引用名詞的描述。
(11)工具說明
數據庫產品周邊生態工具的說明,一般數據庫產品都會提供如備份恢復、導入導出、SQL 命令行等工具。這里需說明各工具功能、使用方法、參數說明等。
(12)生態兼容
生態兼容是指與數據庫上下游生態的兼容情況,例如從數據建模、數據開發、數據分析、數據挖掘、可視化展現、數據管理、ETL、數據庫管理、備份恢復、數據庫優化、大數據平臺等等,這些上面的主流工具是否支持這一產品。對于前天就具備兼容性產品來說,是會較容易的支持,如從0到1完成的新產品會有一個過程。
11、性能測試
可部分可參考“快速入門”部分,可獨立成章,包含的測試內容更加詳實。
12、常見問題
FAQ環節,針對用戶經常提供的問題羅列如此。如問題較多,可采用分類或標簽的方式,方便用戶檢索。
13、版本發布記錄
版本發布記錄,說明發布的主要版本功能、修復的Bug等。方便用戶根據此記錄,結合自己的場景判斷是否需要升級。