DB-1: Understanding and Leveraging the Latest ODBC and JDBC Technology What’s new in OpenEdge® 10.1A? Rob Steward Director of Software Development
© 2006 Progress Software Corporation2 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology Agenda ODBC architecture changes ODBC Unicode functionality JDBC architecture changes JDBC JTA support What’s New in 10.1A?
© 2006 Progress Software Corporation3 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology Agenda ODBC architecture changes ODBC Unicode functionality JDBC architecture changes JDBC JTA support What’s New in 10.1A?
© 2006 Progress Software Corporation4 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology ODBC “Classic” Architecture Application Code Driver Manager ODBC Driver A ODBC Driver B ODBC Driver C Network Lib Network Lib Network Lib ABC Data Protocol Wire Protocol
© 2006 Progress Software Corporation5 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology ODBC Wire Protocol Architecture Application Code Driver Manager ODBC Driver A ODBC Driver B ODBC Driver C ABC Data Protocol Wire Protocol OpenEdge Wire Protocol Driver Higher Performance No Dependencies Thin client install
© 2006 Progress Software Corporation6 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology OpenEdge Wire Protocol Advantages Ease of Deployment Versioning 10.1A will be forward compatible with future versions of the database Better performance
© 2006 Progress Software Corporation7 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology How Database Middleware Works DBMS SERVER Packets sent from driver 2 Packets sent back from DBMS Server 3 DRIVER API CALL DATABASE NETWORK select * from employees where location = ‘boston’ Application makes a call 1
© 2006 Progress Software Corporation8 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology Why better performance? NETWORK SIMULTANEOUS Application makes a call Packets sent from driver Packets sent back from DBMS Server BUFFER Private BUFFER Only one network read to process all packets. This occurs simultaneously as the DBMS server sends more packets DRIVER API CALL DBMS SERVER DATABASE different sized packets
© 2006 Progress Software Corporation9 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology ODBC Wire Protocol Availability New driver available in 10.1A! Compatible with 10.1A servers Platforms Windows 98/Me/NT/2000/XP/2003 AIX Solaris HP-UX
© 2006 Progress Software Corporation10 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology Agenda ODBC architecture changes ODBC Unicode functionality JDBC architecture changes JDBC JTA support What’s New in 10.1A?
© 2006 Progress Software Corporation11 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology What is Unicode? One character set standard to rule them all A single encoding standard to represent “all” written characters-glyphs Unicode 4.0 contains over 96,000 characters Three Common Flavors UCS-2 (strictly 2 bytes) UTF-8 (1 to 4 bytes; preserves ASCII; favored by Unix) UTF-16 (UCS-2 + surrogates)
© 2006 Progress Software Corporation12 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology Why Unicode? Internationalizes your code Performance – can avoid costly character set translations
© 2006 Progress Software Corporation13 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology Unicode Support in the ODBC Standard Unicode support added in version 3.5 Spec assumes UCS-2 Separate API calls for Unicode strings (“W” functions) Separate data types for Unicode strings (SQL_C_WCHAR) ODBC Driver Manager masks driver and application differences
© 2006 Progress Software Corporation14 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology What does Unicode Support Encompass at the ODBC API level? Arguments to API functions/methods String parameters String results
© 2006 Progress Software Corporation15 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology How does Unicode work in ODBC? Unicode App vs. non-Unicode app. “W” functions Unicode Driver vs. non-Unicode driver. SQLConnectW exported?
© 2006 Progress Software Corporation16 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology How does Unicode work in ODBC? (cont.) DM tries to make all possible combinations work. ANSI App w/ ANSI driver Unicode App w/ Unicode driver ANSI App w/ Unicode driver Unicode App w/ ANSI driver (obvious limitations) Unix Only: UTF8 app w/ UTF-16 driver. Unix Only: UTF-16 app w/ UTF8 driver.
© 2006 Progress Software Corporation17 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology Why are Character Set Conversions Bad? Degrades performance. Frequently data is lost (Substituted), or corrupted during conversions. For example, here ’ s how the Euro character, “€”, is represented in various character sets: ISO8859-1: N/A Cp1252: 0x80 UCS-2/UTF-16: 0x20AC UTF-8 :0xE2A2AC
© 2006 Progress Software Corporation18 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology When are Conversions Necessary and Why? Conversions by DM Non-Unicode apps Non-Unicode drivers Conversions by Unicode Driver Between Unicode and DB codepage for SQL when DB ’ s codepage is not Unicode Conversions for parameters and result columns as necessary based on C type and SQL type
© 2006 Progress Software Corporation19 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology Agenda ODBC architecture changes ODBC Unicode functionality JDBC architecture changes JDBC JTA support What’s New in 10.1A?
© 2006 Progress Software Corporation20 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology Architecture differences in JDBC drivers The JDBC specification formally defines 4 different types of drivers Type 1: JDBC-ODBC bridge Type 2: partial Java™ driver Type 3: pure Java driver for database middleware Type 4: pure Java driver for direct-to- database
© 2006 Progress Software Corporation21 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology JDBC Architecture – Type 1 Authored by DataDirect Free with JDK JDBC 2.0 API For Prototyping ODBC Driver Manager ODBC Driver A ODBC Driver B ODBC Driver C ABC JDBC/ODBC Bridge Application Code
© 2006 Progress Software Corporation22 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology JDBC Architecture – Type 2 Application Code JDBC Driver A JDBC Driver B JDBC Driver C Network Lib Network Lib Network Lib ABC Platform Dependent
© 2006 Progress Software Corporation23 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology JDBC Architecture – Type 4 Application Code JDBC Driver A JDBC Driver B JDBC Driver C ABC OpenEdge 10.1A Type 4 Driver No Client Dependencies More Platforms Better Performance
© 2006 Progress Software Corporation24 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology JDBC Architecture OpenEdge 10.1A Driver Type 4 JDBC 3.0 API CTS Certified Java Application Code JDBC Driver A JDBC Driver B JDBC Driver C ABC
© 2006 Progress Software Corporation25 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology OpenEdge Type 4 JDBC Advantages Ease of Deployment Versioning No dependence on native code No platform dependence Any J2SE 1.4 or higher Better performance
© 2006 Progress Software Corporation26 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology Agenda ODBC architecture changes ODBC Unicode functionality JDBC architecture changes JDBC JTA support What’s New in 10.1A?
© 2006 Progress Software Corporation27 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology What is JTA? JTA is the Java Transaction API JTA specifies standard Java interfaces between a transaction manager and the parties involved in a distributed transaction system: the resource manager, the application server, and the transactional applications. JTA is based on the XA specification
© 2006 Progress Software Corporation28 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology Why is JTA important? All common application servers support XA transactions through JTA and they will use them if necessary and available If you need to enlist OpenEdge connections in a distributed transaction with some other data source
© 2006 Progress Software Corporation29 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology How Does JTA work? 1 UserTransaction javax.transaction.UserTransaction Provides the application the ability to control transaction boundaries. It starts a global transaction and associates the transaction with the calling thread. 2 TransactionManager javax.transaction.TransactionManager Allows the application server to control transaction boundaries on behalf of the application being managed. 3 XAResource javax.transaction.xa.XAResource A Java mapping of the industry standard XA interface.
© 2006 Progress Software Corporation30 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology A Distributed Transaction with JTA... xaDS = getDataSource(); xaCon = xaDS.getXAConnection("jdbc_user", "jdbc_password"); xaRes = xaCon.getXAResource(); con = xaCon.getConnection(); stmt = con.createStatement(); xid = new MyXid(100, new byte[]{0x01}, new byte[]{0x02});
© 2006 Progress Software Corporation31 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology A Distributed Transaction with JTA xaRes.start(xid, XAResource.TMNOFLAGS); stmt.executeUpdate("insert into test_table values (100)"); xaRes.end(xid, XAResource.TMSUCCESS); ret = xaRes.prepare(xid); if (ret == XAResource.XA_OK) { xaRes.commit(xid, false); }...
© 2006 Progress Software Corporation32 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology Questions?
© 2006 Progress Software Corporation33 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology Thank you for your time
© 2006 Progress Software Corporation34 DB-1: Understanding & Leveraging Latest ODBC and JDBC Technology