NewLife.XCode是一個有10多年曆史的開源數據中間件,支持nfx/netstandard,由新生命團隊(2002~2019)開發完成並維護至今,以下簡稱XCode。
整個系列教程會大量結合示例代碼和運行日誌來進行深入分析,蘊含多年開發經驗於其中,代表作有百億級大數據實時計算項目。
開源地址:https://github.com/NewLifeX/X (求star, 707+)
開發需要
一般應用系統部署都需要安裝腳本,建立數據表以及導入基礎數據,才能跑起來。
在XCode中,“建立數據表”這一步由反向工程包攬,再輔以一個“導入基礎數據”的功能即可。
此外,系統在初步配置的過程中,經常可能出現需要清空某些表,然後重置到“出廠數據”的狀態,例如魔方的菜單初始化。
系統開發日益靈活,客戶需求也越來越高,純粹的“基礎數據Insert腳本”已經不能滿足要求,逐漸出現能夠希望根據上下文環境決定初始化數據的需求。
XCode數據初始化功能,由此而生!
數據初始化
在前面章節《XCode實體類詳解》中提到,XCode生成的實體類,默認帶有一個數據初始化模版,正是InitData方法。
XCode的初始化通過重載InitData方法實現,它將會在該實體類首次讀寫數據庫之前執行。
儘管是異步執行,但主線程會阻塞3000ms等到數據初始化完成。因此,大部分實體類在首次使用的時候就有數據了。
Meta.Count用於判斷該數據表中有沒有數據,如果沒有數據,才添加一些默認數據。
高級初始化
初始化不等於就一定是插入數據,還可以做一些數據整理工作。
譬如Membership裏面的角色類
角色類每次啓動時,除了要檢查初始化四個基本角色外,還需要異步檢查清理已經刪除的菜單資源,確保角色數據足夠“純正”!
因此,所謂數據初始化,就是在所有數據庫操作之前,執行一些用戶自定義操作!
系列教程
NewLife.XCode教程系列[2019版]
- 增刪改查入門。快速展現用法,代碼配置連接字符串
- 數據模型文件。建立表格字段和索引,名字以及數據類型規範,推薦字段(時間,用戶,IP)
- 實體類詳解。數據類業務類,泛型基類,接口
- 功能設置。連接字符串,調試開關,SQL日誌,慢日誌,參數化,執行超時。代碼與配置文件設置,連接字符串局部設置
- 反向工程。自動建立數據庫數據表
- 數據初始化。InitData寫入初始化數據
- 高級增刪改。重載攔截,自增字段,Valid驗證,實體模型(時間,用戶,IP)
- 髒數據。如何產生,怎麼利用
- 增量累加。高併發統計
- 事務處理。單表和多表,不同連接,多種寫法
- 擴展屬性。多表關聯,Map映射
- 高級查詢。複雜條件,分頁,自定義擴展FieldItem,查總記錄數,查彙總統計
- 數據層緩存。Sql緩存,更新機制
- 實體緩存。全表整理緩存,更新機制
- 對象緩存。字典緩存,適用用戶等數據較多場景。
- 百億級性能。字段精煉,索引完備,合理查詢,充分利用緩存
- 實體工廠。元數據,通用處理程序
- 角色權限。Membership
- 導入導出。Xml,Json,二進制,網絡或文件
- 分表分庫。常見拆分邏輯
- 高級統計。聚合統計,分組統計
- 批量寫入。批量插入,批量Upsert,異步保存
- 實體隊列。寫入級緩存,提升性能。
- 備份同步。備份數據,恢復數據,同步數據
- 數據服務。提供RPC接口服務,遠程執行查詢,例如SQLite網絡版
- 大數據分析。ETL抽取,調度計算處理,結果持久化