DRDA 會定義分散式 DBMS 函數的類型。 DB2 for MVS/ESA V2R3 支援遠端工作單元。 透過遠端工作單元,在系統中執行的應用程式可以使用遠端 DBMS 所提供的 SQL,來存取遠端 DBMS 中的資料。 DB2 for MVS/ESA V3R1 支援分散式工作單元。 透過分散式工作單元,在某個系統中執行的應用程式可以使用遠端 DBMS 所提供的 SQL,來存取多個遠端 DBMS 中的資料。 關於 DRDA 所定義的分送類型的詳細資訊,請參閱 DRDA Connectivity Guide。
如圖 2 中所示一般,DB2 for MVS/ESA 將使用兩種存取方法, 來支援分散式資料庫連接的三種架構:
[1] 系統引導的存取容許 DB2 for MVS/ESA 要求程式與一個或多個 DB2 for MVS/ESA 伺服器連接。 在 DB2 for MVS/ESA 要求程式與伺服器之間所建立的連接不會遵守 DRDA 中所定義的通訊協定, 而且不能用來使非 DB2 for MVS/ESA 產品與 DB2 for MVS/ESA 連接。 您可透過在應用程式中編寫三部份名稱或別名,來建立這種類型的連接。
[2] 應用程式引導的存取讓 DB2 for MVS/ESA 或非 DB2 for MVS/ESA 要求程式 (像是 DB2 Connect) 使用 DRDA 通訊協定, 與一個或多個 DB2 for MVS/ESA 或非 DB2 for MVS/ESA 應用程式伺服器 (像是 DB2 Universal Database 及 DB2 Universal Database for AS/400) 連接。一次可與應用系統要求程式 連接的應用程式伺服器的數目端視應用系統要求程式的 DB2 for MVS/ESA 的層次而定。如果應用系統要求程式是 DB2 for MVS/ESA V2R3,則一次僅能連接一個應用程式伺服器。您可透過在應用程式中編寫 SQL CONNECT 陳述式, 來建立此類型的連接。如果應用系統要求程式是 DB2 for MVS/ESA V3R1, 則一次可連接一個或多個應用程式伺服器。
[3] 應用程式引導及系統引導的存取可一起用來建立連接。
如果架構中的所有系統均支援兩階段確定,則將支援分散式工作單元 (多個位置讀取及多個位置更新)。 如果並非所有系統均支援兩階段確定,則工作單元內的更新不是拘限於不支援兩階段確定的單一位置, 就是拘限於支援兩階段確定的位置的次集。
表 1 將比較 DB2 for MVS/ESA 分散式資料庫連接類型。
表 1. DB2 for MVS/ESA 分散式資料庫連接類型的比較
[1] 系統引導的存取 | [2] 應用程式引導的存取 (所有系統均具有兩階段確定) | [3] 應用程式引導及系統引導的存取 |
---|---|---|
所有友機均須是 DB2 for MVS/ESA 系統 | 可與任兩個 DRDA 系統交互連接 | 應用系統要求程式可以是任何 DRDA 系統; 而伺服器必須是 DB2 for MVS/ESA 系統 |
可直接與許多友機連接 | 可直接與許多友機連接 | 應用系統要求程式可直接與Application Server連接; Application Server可與許多 DB2 for MVS/ESA 次要伺服器連接 |
每一個 SQL 應用程式均可具有多個與每一個伺服器的 APPC 交談 | 每一個 SQL 應用程式均可具有一個與每一個伺服器的 APPC 交談 | SQL 應用程式具有一個與每一個伺服器的 APPC 交談; DB2 for MVS/ESA 應用程式伺服器可對應用程式,與每一個伺服器建立許多 APPC 交談 |
可同時存取在一個確定範圍內的本端及遠端資源 | 可同時存取在一個確定範圍內的本端及遠端資源 | 應用系統要求程式及Application Server可存取本端及遠端資料 |
在大型查詢及多個並行查詢中更有效率 | 在某個確定範圍內,執行若干次的 SQL 陳述式中更有效率 | 應用系統要求程式-Application Server的連接行為類似於 [2]; 次要伺服器的連接行為則類似於 [1] |
可支援靜態或動態 SQL,但第一次在確定範圍內執行時, 伺服器將以動態方式連結靜態 SQL | 可以發出靜態或動態 SQL | 應用系統要求程式及Application Server可發出靜態或動態 SQL; 次要伺服器支援靜態或動態 SQL,但第一次在確定範圍內執行它時, 將以動態方式連結靜態 SQL |
限制為 SQL INSERT, DELETE 及 UPDATE 陳述式,以及限制為支援 SELECT 的陳述式 | 可以使用可執行陳述式的系統所支援的任何陳述式 | 應用程式伺服器支援任何 SQL; 次要伺服器僅支援 DML SQL (例如,CREATE 或 ALTER) |