如何利用SQL Compact開發網站 | LINQ to SQLCE與效能測試
- 2009-02-14
- 28613
- 0
SQL Compact是一個輕量級的關聯式資料庫引擎,整個安裝起來只需要2M的硬碟空間,執行的時候記憶體只需要5M,微軟給它的定位在於手機程式,因為你不可能在手機上安裝其他版本的SQL所以會有SQLCE的出現,因為它的輕量化,所以demo想要測試在網頁上使用的可能性,於是出現了此篇文章,內容包含了SQLCE的簡單介紹、在WEB專案使用SQLCE的方法,LINQ to SQLCE的解決方案,以及最後的測試效能,期望此篇後對於也想利用SQLCE來開發網頁的網友有直接的益處,也可以對於觀望者一個決定的考量。
先來介紹一下SQLCE是什麼,全名為SQL Server Compact Edition,定位是小型應用,手機、好處在於檔案小,所需資源小,是SQL server的子版本,所以可以很容易的和其他的SQL Server溝通,比如說你在PDA上面的應用程式使用了SQLCE那你可以很方便的把資料同步、轉換到桌面程式來用,想要了解更詳細請參考下方連結。
- SQL Server Compact Edition 概念(MSDN)
- SQL Server 2008 SQL Server Compact 3.5版(官網)
- SQL Server 2005 SQL Server Compact 3.5版(官網)
除了2008官網以外都是中文,不過你真的想看的白皮書都是連結回洋文哈=.=
取得SQLCE的方式很簡單,只要你有裝SQL Server2008、Visual Studio 2008 sp1你的電腦通常都會有SQLCE了,最快的方法直接去找到它!!
X:\Program Files\Microsoft SQL Server Compact Edition
看看你此路徑有沒有檔案,有的話順便把ReadmeSSCE35_CHT.htm檔案打開來看一遍,如果你真的想用SQLCE開發,相信我,裡面的資訊對你很有幫助。
如果你找不到該路徑那就自己到 SQL Server 2005 SQL Server Compact 3.5版(官網) 下載吧
你去SQL Server 2008官網也可以抓,反正SQLCE的版本都是3.5 SP1,而且下載頁面都是洋文=.=
走到這一步就表示你已經有SQLCE了,如果你立刻想要嘗試利用WEB App建立一個SQLCE檔,你會發現你根本找不到它,因為基於微軟官方說得SQLCE本來就不是開發在多人環境下用的,所以你無法直接在WEB這種多人專案上新增出SQLCE檔,你可以參考保哥的最新文章【如何在 ASP.NET 專案中使用 SQL Server Compact 資料庫】利用以下方法來把它找回來,如果你不想這樣用,可以先新增一個Windows Form,建立一個SQLCE的資料庫然後在拿回WEB App使用如下方的步驟。
建立了Windows Form你新增一個項目,裡面就可以看到SQLCE的資料檔案了。
預設中建立好了SQLCE系統會自動帶出新增DataSet的視窗,看你要不要順便建立好強型別的DataSet。
接下來你可以直接開始建立你的Table或是就把SQLCE檔案移動回你的WEB App來使用,利用Visuat Studio就可以直接對SQLCE檔案做操作了,這是建立新Table的畫面
我覺得這介面比較友善耶...
建立好了之後,一定會馬上來測試,第一個遇到的問題就來啦
前文就說過他不適合WEB所以自然會被擋住,參考【MSDN】有詳細的說明,我們必須在Global.asax的Application_Start 事件中送它
AppDomain.CurrentDomain.SetData("SQLServerCompactEditionUnderWebHosting", true);
就可以讓ASP.NET支援SQLCE了。
再來你可能想利用LINQ來操作SQLCE,建立了一個LINQ TO SQL後卻發現SQLCE的資料表拖曳不進來,會顯示錯誤不支援,但是不是SQLCE不支援LINQ而是精靈無法自動產生而已,所以我們必須使用SQLMETAL指令來建立DBML檔案(MSDN參考)
假設我們的SQLCE檔案名稱為data.sdf那建立的指令就是
SQLMETAL /dbml:data.dbml data.sdf ---建立data.dbml檔 SQLMETAL /code:data.cs data.sdf ---建立data.dbml.cs檔
請注意執行上面指令之前請先將目錄移至檔案所在目錄,不然你就必須要在檔名和建立的檔案前面加上完整路徑,而且利用以上的指令建立出來的並不會有連線指令(因為我沒打...)
如果你使用上面的指令會出現「'SQLMETAL' 不是內部或外部命令、可執行的程式或批次檔。」請直接進入VS的命令提示字元來輸入。
再來就是效能測試的問題了雖然這比較很不公平,但是demo電腦沒有安裝SQL Express所以沒辦法啦...
- SQL Server Compact 3.5 SP1 -- 單一遊覽器執行1000次寫入的速度測試五次
- 15.8593750 秒
- 15.6250000 秒
- 15.5312500 秒
- 15.5312500 秒
- 15.6875000 秒
- 15.4531250 秒
- SQL Server Compact 3.5 SP1 -- 兩個遊覽器(模擬兩個使用者)執行1000次寫入的速度測試五次
- 20.1562500 秒
20.2812500 秒
- 19.4687500 秒
19.6250000 秒
- 19.6093750 秒
19.7187500 秒
- 19.6875000 秒
19.8281250 秒
- 21.0156250 秒
20.0937500 秒
- 20.1562500 秒
- SQL Server Compact 3.5 SP1 -- 三個遊覽器(模擬三個使用者)執行1000次寫入的速度測試五次
- 27.1406250 秒
28.3750000 秒
27.4218750 秒
- 32.0625000 秒
32.0468750 秒
32.1875000 秒
- 27.7343750 秒
30.5625000 秒
29.3750000 秒
- 28.3281250 秒
29.5937500 秒
28.4375000 秒
- 29.2500000 秒
27.4843750 秒
28.9062500 秒
- 27.1406250 秒
而在SQL 2008 內相同的測試只需要2~3秒以上的測試報告就給各位參考啦
回應討論