
摘要:在分析采用ADO.NET技術與LINQ技術檢索數字檔案的優缺點基礎上,通過實驗測試證明采用LINQ技術檢索的性能更加穩定、優勢更加明顯。
關鍵詞:LINQ ADO.NET 數字檔案 檢索技術
隨著檔案數字化建設的推進,數字檔案檢索的速度、效率、質量越來越高。作為建立在現代信息技術普遍應用基礎上的數字檔案館,以高度有序的綜合檔案信息資源為處理核心,以高速寬帶通信網絡為技術設施的超大規模、分布式數字化信息系統,贏得了越來越多的檔案用戶重視。建立數字檔案檢索平臺,利用最新的檢索手段為用戶提供高效便捷的檔案信息資源是數字檔案館建設的一項重要功能和核心工作。
一、采用ADO.NET技術檢索檔案的優缺點
1.采用ADO.NET技術檢索檔案的優點
當前在數字檔案檢索中運用微軟解決方案所用的技術主要是ADO.NET,該技術是與數據源交互的.NET技術。有許多的Data Providers,它將允許與不同的數據源交流——取決于它們所使用的協議或者數據庫。然而無論使用什么樣的Data Provider,都將使用相似的對象與數據源進行交互①。實踐表明,ADO.NET技術在檢索系統里長期占統治地位是有一定優越性的,主要表現在:第一,維護方便。第二,分工明確。第三,性能優化。第四,減少交互。
2.采用ADO.NET技術檢索檔案的缺點
ADO.NET在檔案檢索系統里還存在不夠靈活、商業邏輯層與數據庫在一起、不易移植等缺點。同時在檔案檢索系統開發過程中,一個非常簡單的功能需要若干行代碼才能完成,導致在設計檔案數據檢索操作時,不得不考慮面向過程的思維模式來考慮檔案數據檢索工作。這與新的面向對象開發需求不相符,此時需要尋求一個更好的真正實現面向對象開發的技術。
二、采用LINQ技術檢索檔案的優缺點
1.采用LINQ技術檢索檔案的優點
LINQ(Language Integrated Query,語言集成查詢)是由微軟公司提供的一種查詢技術,它最大的特點就是能夠把查詢功能直接引入到.NET Framework 3.5 所支持的編程語言(如C#、Visual Basic.NET等)中,并整合為一體,從而,查詢操作成為編程語言的一部分,可以像創建編程語言代碼的方法一樣,方便地創建查詢操作表達式②。在檔案檢索系統的開發中,LINQ的優點主要體現在以下幾方面:
第一,提高開發效率,降低開發成本。在LINQ To SQL正式推出之前,假如SQL語句寫得有問題,只有到運行時才能發現。而LINQ To SQL 在一切圍繞數據的項目內都可以使用,特別是在項目中缺少SQL server方面的專家時,其強大的功能可以幫助開發人員迅速地完成項目③。因此,LINQ To SQL的推出,把開發人員從煩瑣的技術細節中解脫出來,從而使其更加關注項目的邏輯。同時,LINQ To SQL的出現,也大大降低了檔案數據庫應用程序開發門檻,加快了檔案數據庫應用程序的開發進度。
第二,真正實現面向對象,降低錯誤檢查難度。LINQ To SQL是在ADO.NET和C#2.0的基礎上實現的。首先,它通過自動翻譯SQL語句,并把結果集創建成對象并返回。其次,LINQ To SQL語句是在編譯期間做檢查,而不是在運行時檢查。最后,LINQ To SQL是針對對象操作的,更符合今天的面向對象開發思想④。
第三,開發工具強力支持,擴展功能更加豐富。在LINQ To SQL技術出現之前,在Java和net領域分別有Hibernate技術、NHibernate技術來實現object/relational 持久和查詢服務。與NHibernate相比,LINQ To SQL優勢有:第一,影射代碼自動生成。VS2008提供了SQLMetal和OR Designer兩個工具來完成此步驟。而在NHibernate中,必須通過手工寫來完成。第二,影射代碼有更多的選擇。NHibernate只能把數據庫的信息配置在一個XML中,而LINQ To SQL有兩種方式,一是放到XML中,這稱為Externl Mapping;二是以Attribute的形式,存在于各個property中⑤。
2.采用LINQ技術實施數字檔案檢索存在的問題
第一,LINQ是非延遲加載的,要實現模糊條件檢索與多條件檢索,如果要立即加載結果需要先將檢索結果轉換成List
第二,LINQ的dbml不能隨意修改,手動更改VS2008的對象關系設計器中的dbml代碼的話,原先修改好的東西將全被覆蓋,要是需要一些特殊功能或者一些關鍵系統配置產生變化,就不得不要修改dbml代碼,這就需要對LINQ代碼相當的熟練且需要對面向對象的理解足夠深刻。
第三,LINQ如不能很好地使用存儲過程,那么它的性能就會變弱,如果遇到多媒體檢索且占用大量的網絡資源的檢索情況,一般都需要使用存儲過程來解決性能問題,這樣會給檢索的性能提高帶來不便。
三、LINQ技術與ADO.NET技術檢索檔案的性能比較
1.比較測試環境
測試環境為:CPU Intel (R) Core(TM)2 Duo T5870@2.00GHz778MHz,1.93GB的內存,操作系統Windows XP SP3,測試程序是—個ASP.NET應用程序,測試數據庫為數字化檔案數據庫。
2.測試步驟
通過測試檔案數據檢索結果,在測試時間的統計上采用多次測試取平均值的方式執行,在測試過程中檔案數據量每次增加一個數量級。
3.測試過程⑥
(1)檢索0.1萬條檔案數據性能比較。在不同時間點上,分別采用LINQ技術與ADO.NET技術檢索0.1萬條檔案數據,在第一個時間段,ADO.NET檢索執行時間為0.113000 ms,LINQ檢索執行時間為0.0450000 ms;第二個時間段,ADO.NET檢索執行時間為0.1550000 ms,LINQ檢索執行時間為0.0590000 ms;第三個時間段,ADO.NET檢索執行時間為0.1210000 ms,LINQ檢索執行時間為0.0550000 ms。這三個時間段,采用ADO.NET技術和LINQ技術檢索檔案數據的的平均時間分別為0.1296667 ms和0.0530000 ms。
(2)檢索1萬條檔案數據性能比較。在不同時間點上,分別采用LINQ技術與ADO.NET技術檢索1萬條檔案數據,在第一個時間段,ADO.NET檢索執行時間為0.1420000 ms,LINQ檢索執行時間為0.0460000 ms;第二個時間段,ADO.NET檢索執行時間為0.1560000 ms,LINQ檢索執行時間為0.0420000ms;第三個時間段,ADO.NET檢索執行時間為0.1470000ms,LINQ檢索執行時間為0.0520000ms。這三個時間段,采用ADO.NET技術和LINQ技術檢索檔案數據的的平均時間分別為0.1483333 ms和0.0466667 ms。
(3)檢索10萬條檔案數據性能比較。在不同時間點上,分別采用LINQ技術與ADO.NET技術檢索10萬條檔案數據,在第一個時間段,ADO.NET檢索執行時間為0.1620000 ms,LINQ檢索執行時間為0.0520000ms;第二個時間段,ADO.NET檢索執行時間為0.1370000 ms,LINQ檢索執行時間為0.0240000ms;第三個時間段,ADO.NET檢索執行時間為0.1440000ms,LINQ檢索執行時間為0.0250000ms。這三個時間段,采用ADO.NET技術和LINQ技術檢索檔案數據的的平均時間分別為0.1476667 ms和0.0336667 ms。
(4)檢索100萬條檔案數據性能比較。在不同時間點上,分別采用LINQ技術與ADO.NET技術檢索100萬條檔案數據,在第一個時間段,ADO.NET檢索執行時間為0.1530000 ms,LINQ檢索執行時間為0.0380000ms;第二個時間段,ADO.NET檢索執行時間為0.1710000 ms,LINQ檢索執行時間為0.0320000ms;第三個時間段,ADO.NET檢索執行時間為0.1760000ms,LINQ檢索執行時間為0.0400000ms。這三個時間段,采用ADO.NET技術和LINQ技術檢索檔案數據的平均時間分別為0.1666667 ms和0.0366667 ms。
通過對以上測試數據進行匯總,得到圖中信息:
四、結論
在4組測試的數據中,發現使用同一種檢索技術檢索不同量的檔案數據所用時間相差無幾,如采用ADO.NET技術,檢索0.1萬條數據的時間為0.1296667 ms,檢索100萬條數據的時間為0.1666667 ms,甚至檢索10萬條數據的時間比1萬條數據的時間還略快。但是,采用LINQ技術檢索,不管在哪一組測試中,都比ADO.NET技術檢索性能好,如在0.1萬條數據檢索中,ADO.NET技術的檢索時間是LINQ技術的2.44654倍,在100萬條數據檢索中,ADO.NET技術的檢索時間是LINQ技術的4.54545倍。這表明在檔案數據量相同的情況下,采用LINQ技術檢索所花費的平均時間比傳統ADO.NET技術檢索時間快得多,而且數據量越大檢索性能優勢就越明顯。
因此,通過對LINQ技術檢索與ADO.NET技術檢索性能進行比較,在測試過程中完成的是同樣檢索功能,在被檢索數據量不斷增加的情況下,ADO.NET技術實施檔案數據檢索效率有明顯的下降,檔案數據檢索時間也呈現明顯增加;但運用LINQ技術檢索,在檔案數據量增加的情況下檔案檢索時間并沒有帶來明顯變化,特別是在海量檔案數據檢索中,LINQ技術顯現出絕對優勢。
此外,在開發中完成相同的檢索功能,運用LINQ技術還可以大大減少代碼的編寫量,提高檔案數據訪問效率,避免系統在運行過程中的注入漏洞,在代碼開發中還可以用最少的代碼實現最強的功能,同時還能夠大大提高系統開發的可擴展性。通過對檔案檢索過程中的安全性進行驗證,LINQ技術檢索可以有效避免SQL注入,即使輸入中有非法字符,LINQ在處理中會將其作為一個參數來使用,保證在檔案數據檢索過程中的安全性。盡管目前在檔案檢索系統里,ADO.NET技術唱主角,但作為語言集成查詢的LINQ新技術用于檔案檢索將成為發展趨勢,并逐漸顯出其強勁的快速、便捷功能。
注釋:
*本文為2009年“江蘇省檔案科技項目”(項目編為:2009—L15)《導航式檔案網上信息檢索方法的研究》和2007年江蘇省高校自然科學基礎研究面上項目(項目編號為:07KJD120234)《數字化文獻管理關鍵技術的研究》階段性研究成果。
①徐祥濤.基于ADO.NET數據庫訪問技術的研究與實現[J].中國新技術新產品,2009(17):35
② 侯利軍.精通LINQ數據訪問技術—基于C#[M].北京:人民郵電出版社,2008:3
③宣帥. .NET平臺下MVC框架應用研究[D]. 南京:南京航空航天大學,2010: 51
④淺談Linq?To?Sql集成數據庫語言的優劣[EB/OL]. [2011—11—02] http://www.bccn.net/Article/sjk/sqlserver/jszl/200709/6578.html
⑤LINQ to SQL與NHibernate橫向對比[EB/OL]. [2011—11—02]http://developer.51cto.com/art/200909/153084.htm
⑥卞咸杰.基于LINQ技術的數字檔案檢索方法及應用研究[D].無錫:江南大學,2010:55-56
作者單位:鹽城師范學院