當前位置:編程學習大全網 - 編程語言 - 用.Net開發DB2應用程序比較

用.Net開發DB2應用程序比較

  簡介

 在 NET應用軟件開發人員看來 使用DB 與使用其它任何其它關系數據庫沒有區別 人們可以看到無數使用SQL Server以及甲骨文公司產品執行數據庫任務的例子 但關於使用包括 NET在內的微軟公司技術訪問DB 數據庫的文檔就遠沒有那麽多了

 目前 開發人員可以使用不同的訪問技術通過編程的方式將 NET客戶端連接到DB 上 這些代碼從根本上來說是基本相同的 但仍然存在壹些我們需要考慮的有趣的限制

  DB 架構慨覽

 DB 數據庫引擎的基本元素是數據庫對象 系統目錄 目錄和配置文件 所有的數據存取都通過SQL界面進行 我們可以只將DB Univeral Database(UDB)作為數據庫服務器運行 這不要求使用其它的產品 但對於遠程的客戶端而言 我們還需要其它壹些產品

 DB UDB的服務器組件提供了對使用TCP/IP SNA或IPX/SPX協議與數據庫服務器進行通訊的支持 這就能夠使運行管理客戶端 運行時間庫或應用程序開發客戶端的遠程客戶端進行訪問 應用程序開發客戶端組件是面向數據庫應用程序開發人員的工具集 它包括庫文件 頭文件 API和樣板代碼

 我們主要關心的是能夠通過網絡訪問數據庫服務器的客戶端組件 通過使用DB Connect 我們的 NET應用程序能夠訪問基於主機的DB 系統 例如DB for AS/ DB for OS/ DB for VSE等

 連接到DB 的方式決定了我們能夠完成的任務 有三種技術可以從 NET連接到DB

  使用OleDb NET Managed Provider 如果運行的是DB V 或更低的版本以及對象是調用者時 微軟和IBM二家公司都建議使用OleDb數據提供者訪問大多數DB 數據 在 NET Framework中 OleDb提供商是通過 InterOp表現出來的 並使用可用於ADO開發的驅動程序

  使用ODBC NET Managed Provider 這種方式提供了對本地ODBC驅動程序的訪問 與OLEDb NET Data Provider提供對本地OLEDb提供者訪問的方式相同 ODBC NET Data Provider是 NET Framework的壹個附加組件 它能夠與所有兼容的ODBC驅動程序配合使用

  使用IBM DB NET Provider(β) 這種方式提供了對將ADO NET連接到DB V 的支持 DB NET Data Provider是Visual Studio NET Framework的壹個內插式附件 它能夠訪問在運行在不同硬件和操作系統平臺上的DB·數據庫服務器 目前 它仍然處於β測試階段 但IBM公司很快會發布正式產品 DB Net Data Provider能夠將使用ADO NET開發的應用程序連接到下面的DB 數據庫服務器上

 ·運行在Windows UNIX和Linux平臺上的DB Universal Database Version

 ·運行在z/OS OS/ V 以及使用DB Connect V 組件的更高版本的操作系統上的DB Universal Database

 不同的連接字符串顯示出不同情況下的語法差別

 OleDb連接字符串

 Provider=IBMDADB ;User ID=db admin;Password=db admin;Data Source=SAMPLE

 ODBC連接字符串

 DSN=DB V ;UID=db admin;PWD=db admin

 IBM Managed Provider連接字符串

 Database=SAMPLE;User ID=db admin;Password=db admin;Server=IREK

  代碼級訪問的比較

 在開發DB 數據訪問代碼時 大多數的操作在很大程度上與訪問其它數據庫相同 下面我們對連接技術的壹些代碼進行比較

 在下面的每個代碼片斷中 我們將展示壹些數據庫訪問和數據管理的技巧 請讀者註意每種技術的哪些步驟相同 我們首先創建連接對象 再創建壹個命令對象 在這個簡單的例子中 我們只訪問這壹特定數據庫表中指定行 列中的壹個標量值 最後 我們執行該命令的ExecuteScalar()方法 返回該整數

  使用Ole Db技術

 private OleDbConnection cn = new OleDbConnection(connectionString); OleDbCommand cmd = new OleDbCommand( SELECT COUNT(*) FROM STAFF cn); int rc = Convert ToInt (cmd ExecuteScalar());

 使用ODBC

 private OdbcConnection cn = new OdbcConnection(connectionString);OdbcCommand cmd = new OdbcCommand( SELECT COUNT(*) FROM STAFF cn);int rc = Convert ToInt (cmd ExecuteScalar());

 使用IBM的Managed Provider

 private DB Connection cn = new DB Connection(connectionString);DB Command cmd = new DB Command( SELECT COUNT(*) FROM STAFF cn);int rc = Convert ToInt (cmd ExecuteScalar());

  功能的比較

 根據選擇的訪問技術和使用的數據庫版本 我們可以使用不同的功能 另外 根據需要完成的工作 我們還需要選擇連接策略

 為了使讀者能夠更好的選擇連接技術 我整理出了壹個能夠在決策中使用的路線圖 在路線圖中 我找出了壹些對於大多數以數據庫為中心的軟件開發項目中通用的功能

 在下面的圖表中 我對自己的心得進行了整理 我根據是否允許完成特定的數據庫任務對三種訪問技術中的每壹種都進行了評估 評估的數據庫任務有

 ·Pass thru SQL━━這壹提供者是否支持通過動態開發的SQL語句形成的傳遞?

 ·簡單的存儲過程━━這壹提供者支持包括返回結果在內的調用基本的存儲過程嗎?

 ·In Out InOut參數━━這壹提供者支持調用存儲過程和利用參數傳遞變量數據嗎?

 ·日期和貨幣━━這壹提供者支持由特定廠商提供 可能造成問題的數據類型嗎?

 ·LOBs━━這壹提供者支持大對象數據類型的處理嗎?

 根據使用的連接技術 我們能夠完成不同類型的任務 因為每種提供者都有自己可以完成的工作 有壹些問題是我們值得註意的

 例如 ODBC不支持DB 的存儲過程 因此 如果開發的應用軟件非常依賴於存儲過程 我們在選擇訪問技術時就不能考慮ODBC 而應當考慮OleDb或Managed Provider OleDb不支持LOB數據類型 如果要存取LOB類型的數據(例如JPEG文件) 我們可以使用ODBC或Managed Provider 目前 Managed Provider不能在DB V 或以前版本上運行 除非在應用程序和基於主機的DB 系統之間運行著DB Connect V

 有趣的是 在使用存儲過程的參數時 DB V 和OleDb有壹個非常著名的bug 我們能夠從存儲過程中返回數據 但在OleDb+DB V 平臺上 我們不能在應用程序與存儲過程之間傳遞參數

  性能比較

 為了衡量提供者的性能和向讀者提供指導 我們將定義壹個有效的測試腳本 並對各種提供者的關健性能進行測試 為了比較各種連接技術的性能 我們開發了壹些簡單的Web網頁 壹個網頁面向執行完全相同功能的測試 這將使我們掌握分析不同連接技術情況下輸出的控制數據

 如果嚴格地從性能的角度來看 我們發現 Managed Provider在訪問DB 數據庫時的性能最高 在這壹簡單的測試中 有二個重要的數字值得關註 每秒鐘的請求(RPS)能夠使我們感受到訪問的規模 OleDb和ODBC在這方面的表現基本相似 但Managed Provider的表現要好壹些(大約高 %左右) 收到最後壹字節的時間(TTLB)是從終端用戶的角度看到的響應時間 在這壹方面 Managed Provider的性能再次比OleDb和ODBC高出 %左右

 最值得註意的是 盡管提供的功能不同 但OleDb和ODBC在有負荷的情況下的性能基本相同 IBM公司的Managed Provider的性能最好 而且提供了在訪問DB V 時最可靠的功能 但是 如果沒有DB Connect作中間體 它不支持DB V 以及更低的版本

  結論

lishixinzhi/Article/program/net/201311/13751

  • 上一篇:用3線—8線譯碼器(74LS138芯片).四輸入與非門實現"三個開關控制壹個燈的電路"
  • 下一篇:將聲音導入flash動畫時,“同步”選項下提供的那些選擇分別是什麽意思?
  • copyright 2024編程學習大全網