PDF.NET開發架構“記憶體資料庫”架構設計

來源:互聯網
上載者:User

前一段時間,我寫了篇《移花接木:當泛型方法遇上抽象類別----我的“記憶體資料庫”誕生記 》,記錄了PDF.NET記憶體資料庫的設計過程,最近做了些小改動,已經投入生產使用了,目前運行良好。今天重新看了看源碼,覺得有必要畫一個記憶體資料庫的架構圖,因為整個程式的核心代碼加上詳細的檔案注釋,才391行代碼,時間長了恐怕無法瞭解整個程式的設計思路。

 

先直接,再說明架構的設計問題:

(PDF.NET記憶體資料庫結構描述圖)

 

架構說明

 1,核心類 MemDB

  • 一個儲存所有實體類集合的集合,即Memory Data,應用程式要取資料,通過Get<T>方法擷取(T為實體類類型);
  • 當擷取資料的時候,如發現Memory Data裡面沒有,就調用Load<T>方法,從PMDb實體類檔案載入資料;
  • 當有新實體資料需要儲存的時候,調用Add<T>方法;
  • 當資料更新以後,如果想儲存,就顯式的調用一下Save<T>方法,注意,該方法並不直接儲存資料,它只儲存這個“儲存資料的方法”,參見“移花接木”一文的說明;
  • 後台維護一個資料寫入線程,檢查是否有“儲存資料的方法”需要執行;
  • 資料操作的日誌記錄。

 

2,核心類 MemDBEngin

該類實際上就是一個MemDB的工廠類,它會根據不同的資料庫“路徑”產生一個MemDB對象執行個體;

MemDB執行個體的生命週期由“系統緩衝”管理,這裡使用.NET 4.0的System.Runtime.Caching裡面的緩衝管理對象。

由於使用了系統緩衝,所以MemDB能夠做到“按需載入”,“閑置關閉”的功能。

MemDB執行個體中的Memory Data對應的就是“系統緩衝”。

 

3,ICacheProvider 緩衝提供者介面

定義了一套緩衝使用的方法,可以指定緩衝策略,如相對到期、絕對到期等。

 

4,緩衝提供者

系統緩衝的預設實現了Memory CacheProvider ,也就是記憶體緩衝提供者;由於採用介面設計,所以理論上也可以擴充為第三方的“分布式緩衝”。

 

5,資料持久化

整個記憶體資料庫使用的資料都是PDF.NET的實體類,這裡使用PDF.NET架構的“序列化”和“還原序列化”功能,將記憶體資料寫入磁碟上的pmdb檔案,或者從檔案載入資料到記憶體中。

 

6,使用者應用程式

這裡是使用“記憶體資料庫”的資料的地方,可以使用多種方式來操作記憶體資料,比如直接使用Linq To Object來查詢記憶體中的資料,或者使用PDF.NET的EntityQuery對象,實現記憶體資料庫和“關聯式資料庫系統”(DBMS)的資料庫間的雙向同步。實際使用中,可以完全拋棄DBMS,使用Linq To Object已經足夠了。

 

 7,PDF.NET Entity Object

這是整個系統使用的實體資料了,它由相關的組件調用傳遞。由於PDF.NET實體類的獨特設計,使得它的序列化和還原序列化效率非常高,另外不使用反射,效能也很好,而且,最重要的,它沒有關聯式資料庫那一套“沉重”的資料庫中繼資料標識,所以它非常輕巧,適合作為記憶體資料庫資料的最佳載體。

 

 系統的伸縮能力

縱觀整個系統的設計,可以看到它有很好的擴充能力:

  • 大型應用--可以很方便的擴充支援第三方分布式緩衝,構建大型的系統應用;
  • 中小型應用--也可以將常用的DBMS資料放在記憶體資料庫中,提高響應能力;
  • 輕微型應用--可以完全拋棄DBMS,使用純記憶體資料庫,以獲得最大的響應速度。

 

有關PDF.NET開發架構的詳細內容,請看官網 http://www.pwmis.com/sqlmap

記憶體資料庫目前已經投入生產使用,即將整合在PDF.NET架構的下一個版本中。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.