OEA 2.11 支援單機版資料庫 – SQLite與SQLCE對比

來源:互聯網
上載者:User

在 OEA 平台 設計中,需要支援多種資料庫,這至少包括了 SqlServer、Oracle、一個單機檔案資料庫。而之前對於這一塊,我們一直沒有實現,只是預留了許多介面。昨天花費了一天的時間,讓 OEA 支援了本機資料庫 SQLCE。

 

為什麼要支援本機資料庫呢?

  1. 支援開發簡單的本地軟體。
    偶爾需要一些比較小的應用程式,例如“個人計帳管理”、“個人連絡方式管理”等。這些簡單的軟體,如果還讓客戶裝個 SQLServer2008,客戶覺得都圍繞著。選擇使用單機資料庫,會讓發布變得十分簡單、體積也小,做好的程式,打個包發給客戶就行了。(當然了,.NET 4.0 還是要裝的。)
    也就是說,使用者可以面向個人。
  2. 支援單機試用。
    在開發管理產品時,往往需要把產品給一些客戶試用。不用裝 SQLServer 的單機版,使得這些客戶能夠十分簡單地試用我們的產品。

 

OEA 如何支援單機版

在使用 OEA 進行開發的過程中,不論是單機版、C/S 版還是B/S 版,它們的介面層以下的代碼都是一樣的,包括服務層、實體層、資料層等。而 單機版 和 C/S 版本的介面也是完全重用。所以,在開發完成之後,只需要把資料庫連接的配置改變為單機資料庫連接就可以了,如:

配置完成後,運行程式,即在輸出目錄下建立了 Data 檔案夾,並自動產生對應實體的資料庫:

這是進銷存執行個體產生的對應的庫:

有興趣的朋友可以在 OEA 2.9 平台發布 中對應的開源地址,使用 SVN 下載最新的源碼即可直接運行。(初次開機時,要產生資料庫,會需要半分鐘左右。)

 

 

OEA中單機資料庫選型 SQLite vs SQLCE 

既然要使用單機版資料庫,那麼選擇什麼資料庫比較好呢?目前,業界普遍使用的單機資料庫主要還是 SQLite、Access 和 SQLCE。用得比較多的還是 SQLite,效能也很好,這個應該是 OEA 的首選。SQLCE 在老的版本中主要用於嵌入式開發,在案頭端應用得也少。Access 現在用的人越來越少了,而且串連起來比較費勁,這個在 OEA 中就不考慮了。

 

接下來,我對 SQLite 進行了一些測試。

主要還是測試這個資料庫和 OEA 目前的設計是否有較多的衝突。結果發現果然是太不一樣了。首先,OEA 平台的 AutoDb 模組會完全管理資料庫,以達到開發人員在平時的開發中忽略資料庫的存在。也就是說,這個模組會完成對資料庫結構的建立、修改;資料的升級等。可是查了許多關於 SQLLite 的資料,最後得到的結論是:SQLLite 不支援 刪除欄位,修改欄位。其中,還得查詢 SQLLite 的資料庫結構資訊,以支援資料庫差異升級,這在 SQLite 中也支援得很有限,只有從一個 sqlite_master 表中查詢到資料表的建庫SQL,拿出來還得自己解析。其次,在 SQLite 中,外鍵約束可以被建立,但是卻不會被檢查。參考完整性都沒法保證,查詢速度再快有時也沒用。而且,象串聯刪除這類比較普遍的需求也不支援,都需要編寫觸發器完成,雖然 AutoDb 可以自動編寫,但是總感覺太費事了。而 OEA 中彙總對象的刪除,目前的設計是在根對象上刪除後,自動串聯刪除整個彙總樹,要改的話比較麻煩,所以這一點還是衝突。最後,在介面管理器方面,SQLite 用的主要第三方的軟體,有很多,試用了一下,就感覺 SQLiteMgr 還不錯,不過用起來並不順手。

 

痛苦之餘,我再對 SQLCE 進行了研究。

其實目前的 OEA 中已經有使用到 SQLCE 3.5,實現了用戶端緩衝(詳見:OEA中的緩衝模組設計)。雖然 SQLCE 3.5 並不支援並發,但是在用戶端緩衝中沒有這個問題。另外,雖然 AutoDB 自動產生並升級資料庫,但是在做業務開發的時候,總是要經常去資料庫中查詢資料。但是 SQLCE 3.5 麻煩的地方就在於沒有一個好的介面管理器,不管是 VisualStudio 中整合的功能、還是 SqlServer Management Studio,都不方便使用。這樣的話,平時操作起來就會非常麻煩,何談開發效率。

鑒於此,我又尋找了一些最新的 SQLCE 4.0 的資料。比較幸運的是,SQLCE 4.0 現在已經支援並發了,在 Web Matrix 開發 Web 網站時,預設都是使用 SQLCE 4.0 來做資料存放區的。而且,它還提供了比較好的介面管理器:SqlCeToolbox,前兩天才發布了最新版本,非常好用。(另外,這篇文章中講了如何使用 SQLCE 開發,還給了 VS 的外掛程式。)其次,SQLCE 4.0中的資料可以無縫地遷移到 SQLServer、SQLAzure 中,這也是非常棒的特性。最後,也是非常重要的,在資料庫設計方面,SQLCE 4 基本上和 SQLServer 是保持一致的,支援 主鍵、外鍵、自增列、串聯刪除等。這就使得 我們在 OEA 上,不論是 AutoDB 還是 ORM,支援 SQLCE 都變得比較容易。

有的朋友會說,效能方面,SQLite 可比 SQLCE 快很多。但是其實我個人感覺 SQLCE 的速度也不慢,資料量不是非常大的情況下,應該沒有問題。

 

最後總結一下二者的對比:

 

 

最終,經過一天的時間,OEA 成功支援單機資料庫。還好有 SQLCE 4,要不就太費勁了!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.