日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

备份恢复与同步(数据搬运专家)

發布時間:2023/12/4 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 备份恢复与同步(数据搬运专家) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

NewLife.XCode是一個有20年歷史的開源數據中間件,支持net6/net5/net45/net40,由新生命團隊(2002~2020)開發完成并維護至今,以下簡稱XCode。

整個系列教程會大量結合示例代碼和運行日志來進行深入分析,蘊含多年開發經驗于其中,代表作有百億級大數據實時計算項目。

開源地址:https://github.com/NewLifeX/X?(求star, 1450+)

Nuget包:NewLife.XCode

源代碼:https://github.com/NewLifeX/X/blob/master/XCode/DataAccessLayer/DbPackage.cs

數據應用開發中,經常需要用到備份、恢復和同步功能,XCode內置支持跨數據庫備份同步。特別在分析線上問題時,經常是恨不得把線上某些表數據“弄”回來本地。所以,你需要XCode。

碼神工具跨庫數據同步

把數據從一個庫同步到另一個庫,以下視頻從SQLite庫同步數據到MySql庫,包括創建數據表。

DbPackage類

數據備份恢復功能由DbPackage類提供支持。使用時僅需要指定Dal數據庫連接,例如 dp.Dal = DAL.Create("memberShip") 。

DbPackage 操作數據有幾大核心:

    • 二進制備份數據,占用空間小;

    • Actor并行處理,讀寫同時進行,極快速度;

    • 中性備份文件,數據庫無關性,支持異構備份與恢復;

主要設置如下:

/// <summary> /// 數據庫連接 /// </summary> public DAL Dal { get; set; }/// <summary>數據頁事件</summary> public event EventHandler<PageEventArgs> OnPage;/// <summary>批量處理時,忽略單表錯誤,繼續處理下一個。默認true</summary> public Boolean IgnoreError { get; set; } = true;/// <summary> /// 性能追蹤器 /// </summary> public ITracer Tracer { get; set; } = DAL.GlobalTracer;

備份

數據備份,把一個或多個表數據備份為壓縮文件,支持備份數據表結構。

采用Actor架構,雙線并行處理,主線程逐頁抽取數據,Actor線程寫入備份文件。

數據庫結構備份為xml文件,單表數據備份為DbTable的二進制格式,因此備份文件非常小。

數據備份文件為NET類型的中性文件,與數據庫類型及版本無關,可以恢復到其它任意類型數據庫。數據備份文件頭部記錄字段名及字段類型,之后的數據逐行存儲。

數據備份文件格式可閱讀DbTable說明, https://www.yuque.com/smartstone/nx/dbtable

主要方法:

// 備份單表數據,抽取數據和寫入文件雙線程 Int32 Backup(IDataTable table, Stream stream); // 備份單表數據到文件 Int32 Backup(IDataTable table, String file = null); // 備份一批表到指定壓縮文件 Int32 BackupAll(IList<IDataTable> tables, String file, Boolean backupSchema = true);

數據抽取邏輯,如果有自增字段,則按照自增字段分批抽取。否則使用直接分頁的方式抽取,在數據量較大時(大于1萬行),性能會越來越慢。

由于是順序寫入,寫入性能很高,數據備份的瓶頸一般在于原始數據抽取。具體性能及錯誤分析,建議參考星塵監控。

恢復

數據恢復,把一個壓縮文件恢復到目標數據庫,支持恢復數據表結構,包括創建表和修改表。

采用Actor架構,雙線并行處理,主線程逐頁讀取文件,Actor線程分批寫入數據庫。

由于備份文件是數據庫無關的中性文件,因此目標數據庫可以是不同于備份庫的其它數據庫類型。

備份時僅記錄基礎數據類型,因此個別特殊類型字段可能恢復失敗。

主要方法:

// 從數據流恢復數據 Int32 Restore(Stream stream, IDataTable table); // 從文件恢復數據 Int64 Restore(String file, IDataTable table, Boolean setSchema = true); // 從指定壓縮文件恢復一批數據到目標庫 IDataTable[] RestoreAll(String file, IDataTable[] tables = null, Boolean setSchema = true);

由于是順序讀取文件,讀取性能很高,數據恢復的瓶頸一般在于寫入數據庫。具體性能及錯誤分析,建議參考星塵監控。

同步

數據同步,把一個庫的單表或多表同步到另一個庫,支持同步數據表結構,包括創建表和修改表。

采用Actor架構,雙線并行處理,主線程逐頁抽取數據,Actor線程分批寫入目標庫。

由于同步過程中轉為數據庫無關的DbTable中性數據集,因此目標庫可以是不同于源庫的其它數據庫類型。

支持同步所有基礎數據類型,特殊數據類型有可能同步失敗。

主要方法:

// 同步單表數據 Int32 Sync(IDataTable table, String connName, Boolean syncSchema = true); // 備份一批表到另一個庫 IDictionary<String, Int32> SyncAll(IDataTable[] tables, String connName, Boolean syncSchema = true);

由于是順序讀取數據,讀取性能很高,數據同步的瓶頸一般在于寫入數據庫。具體性能及錯誤分析,建議參考星塵監控。

總結

以上是生活随笔為你收集整理的备份恢复与同步(数据搬运专家)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。