Download Connection Caching

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Microsoft SQL Server wikipedia , lookup

Database wikipedia , lookup

PL/SQL wikipedia , lookup

Microsoft Jet Database Engine wikipedia , lookup

Relational model wikipedia , lookup

Concurrency control wikipedia , lookup

Open Database Connectivity wikipedia , lookup

Database model wikipedia , lookup

Clusterpoint wikipedia , lookup

Oracle Database wikipedia , lookup

ContactPoint wikipedia , lookup

Versant Object Database wikipedia , lookup

Transcript
Kuassi Mensah
Rajkumar Irudayaraj
Java Products Group
Oracle Corporation
Oracle Database 10g JDBC
Best-of-Breed Drivers for Java,
J2EE, Web Services and GRID
Agenda
 Oracle Database 10g JDBC Overview
 Implicit Connection Cache
 Fast Connection Fail-Over
Agenda
 Oracle Database 10g JDBC Overview
•
•
•
•
•
Re-Architecture Groundwork
Database Connectivity for Java, J2EE, Web Services and
GRID
Tighter Integration with the Oracle Database
Feature Consistency across Type-2 and Type-4 Drivers
Miscellaneous Enhancements
 Implicit Connection Cache
 Fast Connection Fail-Over
Re-Architecture Ground Work
 Reduce functional gap between drivers
 Faster JDBC Application Execution
–
–
–
–
Reduced Code Path
Reduced Java intermediate and Temporary
Objects
Caching and Reusing
Optimized Conversion Operations
Fastest JDBC Drivers,
Best SPECJApp2002 results
Comprehensive Support for
JDBC 3.0
 Oracle Database 9i R2 JDBC
–
–
–
–
Transaction Savepoint
Toggling between Local and Global transactions
Reuse of PreparedStatement
JDK 1.4.x support for JDBC Clients
 Oracle Database 10g JDBC
–
–
–
–
–
Named Parameters
DataLink URL
New Ref interface
J2EE Connector Architecture Resource Adapter
Web Rowset (JSR-114 Public Draft)
Database Connectivity for
Web Services
 Web Services Support
–
–
JDBC 3.0 Web RowSet (JSR-114 Public Draft)
Database Web Services Call-in
 GRID Computing Support
–
–
Dynamic Load-balancing across RAC/GRID
Transparent Session Migration for GRID (Future)
JSR-114 JDBC RowSet
JDBCRowSet
EJB
Servlet
CachedRowSet
WebRowSet
FilteredRowSet
Web
Services
JDBC WebRowSet - Definition
 An implementation of JSR-114, extends
java.sql.ResultSet capabilities
–
–
–
–
–
Enables reading and writing result sets from/into XML
format
Serializable/Distributable
Disconnected, decoupled from Data Source
Extensible to non-tabular data
Can be shipped over Internet using HTTP/XML protocols
JDBC WebRowSet - Example
//create a resultSet to populate RowSet
stmt = conn.createStatement();
rs = stmt.executeQuery("select ...");
OracleWebRowSet wrs = new OracleWebRowSet();
// populate the RowSet
wrs.populate(rs);
// close the connection
conn.close();
// RowSet still contains values...
wrs.next();
Object col1 = wrs.getObject(1);
// write the RowSet out as XML
wrs.writeXML(out);
Database as Web Services
Provider
J2EE
(Business Logic)
Oracle
Database 10g
Web
Service
Client
SOAP
Oracle
Application
Server
10g
JDBC
Oracle9iAS
Web
PL/SQL
Services
Data
Framework
SQL/DML
Java
DataSQL/Query
Logic
AQ/Streams
Database Connectivity for
RAC/GRID
 Dynamic Load-balancing across RAC/GRID
–
Fast Connection Fail-Over
 Transparent Session Migration for GRID
–
Migrate Sessions across instances of the same
database (Future)
Tighter Integration with the
Oracle Database
 Manageability/Ease of Use
–
–
–
End-to-End Tracing support
Enhanced Datum support
Easy Type-2 Driver Install
 New and Enhanced Data Types
–
–
–
–
–
Native IEEE DOUBLE and FLOAT
INTERVAL-DAY-TO-SECOND
Enhanced VARRY
LONG-to-LOB Conversion
Unlimited LOB size
Feature Consistency across
Type-2 and Type-4 Drivers
 “Thin” Reducing the gap with “OCI”
–
–
–
–
–
–
PL/SQL Index-By table support
New Encryption algorithms: 3DES112 &
3DES168
Direct XA: performance optimizations for XA
operations
Proxy Authentication
RAC/HA support: Fast Connection Fail-Over
Starting/Stopping the Database
Miscellaneous
 System Properties to set CHAR/NCHAR
behavior
 Stop shipping classes111 and zip files
 NLS Repackaging
Agenda
• Oracle Database 10g JDBC Overview
Implicit Connection Cache
•
•
•
•
•
•
Connection Caching: 9i R2 versus 10g
Transparent Access to the Cache
Connection Retrieval based on User-Defined
Attributes
Handling Abandoned Connections
Connection Cache Manager
Advanced Features
 Fast Connection Fail-Over
Connection Caching: 9i R2
versus 10g Connection
Connection Caching
9i R2
10g
Transparent Cache Access
No
Yes
Refresh Stale Connections
No
Yes
Attributes based Conn. Retrieval
No
Yes
Reclaim/Reuse Abandoned Conn.
No
Yes
Heterogeneous User/Password
No
Yes
Centralized Cache Management
No
Yes
Transparent Access to the
Connection Cache
 Standard DataSource getConnection() APIs
retrieve cached Connections
Example:
ods.setUSer(“scott”);
ods.setConnectionCachingEnabled(true);
ctx.bind(“MyDS”, ods);
…
ds = (OracleDataSource) ctx.lookup(“MyDS”);
conn.getConnection(); // transparent cache creation and access
…
conn.close(); // return connection to the cache
…
ds.close(); // finally, close cache enabled DataSource
Connection Attributes Support
 Request connection from cache based on
user-defined attributes
–
getConnection(java.util.Properties connAttr)
 Support to associate user-defined attributes on a
connection for future retrieval
–
–
applyConnectionAttributes(java.util.Properties
connAttr)
close(java.util.Properties connAttr)
 Get unmatched attributes on the retrieved connection
–
java.util.Properties
getUnMatchedConnectionAttributes()
Connection Attributes
Support…
Example:
// Multiple attributes may be specified
connAttr.setProperty(“NLS_LANG”, “ISO-LATIN-1”);
connAttr.setProperty(“TRANSACTION_ISOLATION”, “SERIALIZABLE”);
…
conn = getConnection(connAttr); // retrieve connection
…
// get UnMatched attributes from the retrieved connection
// May need to initialize the required attributes that did not match
java.util.Properties unMatchedAttr =
conn.getUnMatchedConnectionAttributes();
…
conn.close(connAttr); // close the connection
Abandoned Connection
Timeout Support
 Helps reclaim abandoned or orphaned connections
checked out from the cache
 Support enabled by setting AbandonedConnectionTimeout
property on the cache
 JDBC monitors heart beat based on activity to the
database, such as stmt.execute().
 Connection is reclaimed and returned to the cache, if
connection is inactive for the specified period
Connection Cache Manager
mid-tier Node
Oracle JDBC Driver
Cache# 1
Session 1.1
....
Session 1.m
...
Cache Manager
Cache# n
Session n.1
....
Session n.m
Connection Cache Manager…
 Centralized Connection Cache Management
 Handles cache management from creation
until death.
 Allows dynamic cache reconfiguration.
 Supports retrieval of number of checked out
or available connections
 Supports and manages multiple caches
Advanced Features
 Connection Attributes support based on weights
–
Allows assignment of weights to attributes for
selective retrieval of connections from cache.
 Support for new Cache property
–
to assign weights to connection Attributes:
java.util.Properties CacheAttributeWeights
 Support for Connection Cache Callbacks
–
for AbandonedConnectionCallback and
ReleaseConnectionCallback
Agenda
• Oracle Database 10g JDBC Overview
• Implicit Connection Caching
Fast Connection Fail-Over
Fast Connection Fail-over
–
–
–
Resilient connections – Rapid detection and
cleanup of invalid connections in the cache
This is achieved by handling RAC Service/Host
DOWN events
Load Balancing of connections for Service UP
events
Fast Connection Failover
Failed Database Connections
New Database Connections
Fail-over Scenario
Java/J2EE
ERP
Instance#1
Inst 1
Pre Fail-over
Post Fail-Over
Inst 2
Inst 3
Inst 4
Fast Connection Fail-over
Processing Connection Cache Manager
1
Connection
cache objects
Start/Stop
Publish
2
Subscribe
ONS
Daemon
3
4
handleEvent()
Failover Event
HandlerThread
Threads process events,
one per cache
5
..
Connection
objects
..
..
Fast Connection Fail-over
Processing…
 New DataSource property:
ConnectionFailoverEnabled must be set to true
 Works in conjunction with Implicit Connection
Caching, to process connections efficiently
 Each connection is mapped to its Instance Name and
Host Name.
 Processes Service UP/DOWN and Host DOWN
events.
 Process events one at a time – guaranteed
processing.
Fast Connection Fail-over
Processing…
 One Worker thread per Connection Cache handles event
processing – more efficient
 First pass
–
Connections are marked as down first, to efficiently disable bad
connections
 Second pass
–
Cleans up connections that are marked as bad
 Applications in the middle of a Transaction are thrown a
SQL Exception, and the Transaction is rolled back
 Service UP event initiates connections to be Load
Balanced to all active RAC instances
Fast Connection Fail-over
(FCF) vs. TAF
 Connection Retries:
-
FCF allows retry at the Application level, whereas TAF
retries occur at the OCI/Net layer. Application layer
(Example: EJB Container) fully controls retries
 Integrated with the Connection Cache:
-
Unlike TAF, FCF works in conjunction with the Implicit
Connection Cache, and has complete control over
connections managed by the cache
 RAC Events Based:
-
FCF is a RAC event based mechanism. This is much more
efficient than detecting failures of network calls
 Load Balancing Support:
-
FCF supports UP event Load Balancing of connections
across active RAC instances
JDBC Summary
 Best performing JDBC drivers
 Hassle-Free Install and Upgrade
 Faster Development
–
Best Database Connectivity for Java, J2EE,
Web Services and GRID
 Tighter Integration with the Oracle Database
 Feature Rich Implicit Connection Cache
 RAC Events based Fast Connection Fail-Over
 Feature consistency across type-2 and type-4
JDBC drivers
–
Allows the flexibility of using different flavor of
JDBC drivers for development and deployment
More on TheServerSide.com
J2EE Community






News
Articles
Design Patterns
Benchmarks
Case Studies
Free PDFs of popular books
QUESTIONS
ANSWERS