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

來源:互聯網
上載者:User
比較|程式

  簡介

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

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

  DB2架構慨覽

  DB2資料庫引擎的基本元素是資料庫物件、系統目錄、目錄和設定檔,所有的資料存取都通過SQL介面進行。我們可以只將DB2 Univeral Database(UDB)作為資料庫伺服器運行,這不要求使用其它的產品,但對於遠端用戶端而言,我們還需要其它一些產品。

  DB2 UDB的伺服器組件提供了對使用TCP/IP、SNA或IPX/SPX協議與資料庫伺服器進行通訊的支援,這就能夠使運行管理用戶端、已耗用時間庫或應用程式開發用戶端的遠程用戶端進行訪問。應用程式開發用戶端組件是面向資料庫應用程式開發人員的工具集,它包括庫檔案、標頭檔、API和樣板代碼。

  我們主要關心的是能夠通過網路訪問資料庫伺服器的用戶端組件。通過使用DB2 Connect,我們的.NET應用程式能夠訪問基於主機的DB2系統,例如DB2 for AS/400、DB2 for OS/390、DB2 for VSE等。

  串連到DB2的方式決定了我們能夠完成的任務。有三種技術可以從.NET串連到DB2:

  1、使用OleDb .NET Managed Provider。如果啟動並執行是DB2 V7或更低的版本以及COM對象是調用者時,微軟和IBM二家公司都建議使用OleDb資料提供者訪問大多數DB2資料。在.NET Framework中,OleDb供應商是通過COM InterOp表現出來的,並使用可用於ADO開發的驅動程式。

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

  3、使用IBM DB2 .NET Provider(β):這種方式提供了對將ADO.NET串連到DB2 V8.1的支援。DB2 .NET Data Provider是Visual Studio .NET Framework的一個插入式附件,它能夠訪問在運行在不同硬體和作業系統平台上的DB·資料庫伺服器。目前,它仍然處於β測試階段,但IBM公司很快會發布正式產品。DB2 .Net Data Provider能夠將使用ADO.NET開發的應用程式串連到下面的DB2資料庫伺服器上:

  ·運行在Windows、UNIX和Linux平台上的DB2 Universal Database Version 8.1。

  ·運行在z/OS、OS/390 V6.1以及使用DB2 Connect V8.1組件的更高版本的作業系統上的DB2 Universal Database。

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

   OleDb連接字串 ...

Provider=IBMDADB2.1;User ID=db2admin;Password=db2admin;Data Source=SAMPLE

   ODBC連接字串 ...

DSN=DB2V8;UID=db2admin;PWD=db2admin

   IBM Managed Provider連接字串 ...

Database=SAMPLE;User ID=db2admin;Password=db2admin;Server=IREK

  代碼級訪問的比較

  在開發DB2資料存取碼時,大多數的操作在很大程度上與訪問其它資料庫相同。下面我們對串連技術的一些代碼進行比較:

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

  使用Ole Db技術...

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

  使用ODBC...

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

  使用IBM的Managed Provider...

private DB2Connection cn = new DB2Connection(connectionString);
DB2Command cmd = new DB2Command("SELECT COUNT(*) FROM STAFF", cn);
int rc = Convert.ToInt32(cmd.ExecuteScalar());

  功能的比較

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

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

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

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

  ·簡單的預存程序━━這一提供者支援包括返回結果在內的調用基本的預存程序嗎?

  ·In、Out、InOut參數━━這一提供者支援調用預存程序和利用參數傳遞變數資料嗎?

  ·日期和貨幣━━這一提供者支援由特定廠商提供、可能造成問題的資料類型嗎?

  ·LOBs━━這一提供者支援大對象資料類型的處理嗎?

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

  例如,ODBC不支援DB2的預存程序。因此,如果開發的應用軟體非常依賴於預存程序,我們在選擇訪問技術時就不能考慮ODBC,而應當考慮OleDb或Managed Provider。OleDb不支援LOB資料類型,如果要存取LOB類型的資料(例如JPEG檔案),我們可以使用ODBC或Managed Provider。目前,Managed Provider不能在DB2 V7或以前版本上運行,除非在應用程式和基於主機的DB2系統之間運行著DB2 Connect V8。

  有趣的是,在使用預存程序的參數時,DB2 V7和OleDb有一個非常著名的bug。我們能夠從預存程序中返回資料,但在OleDb+DB2 V7平台上,我們不能在應用程式與預存程序之間傳遞參數。

  效能比較

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

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

  最值得注意的是,儘管提供的功能不同,但OleDb和ODBC在有負荷的情況下的效能基本相同。IBM公司的Managed Provider的效能最好,而且提供了在訪問DB2 V8時最可靠的功能。但是,如果沒有DB2 Connect作中間體,它不支援DB2 V7以及更低的版本。

  結論

  對於應用軟體開發人員而言,使用DB2作後端與使用其它通過ADO或ADO.NET訪問的關聯式資料庫一樣簡單。ADO.NET為我們完成了所有抽象工作。在選擇DB2還是其它資料庫時,儘管存在架構方面的考慮,但作為開發人員,我們的工作應當是可預測和可管理的。



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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