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抽取,排程計算處理,結果持久化
受蘋果公司新規定影響,微信 iOS 版的贊賞功能被關閉,可透過二維碼轉賬支援公眾號。