40

A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Embed Size (px)

Citation preview

Page 1: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019
Page 2: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

A DBA Perspective on J2EE

Debu PandaPrincipal Product Manager

Oracle Corporation

Session id: 40019

Page 3: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Impedance Mismatch

I love my tables

DBA

I love my objects and beans

Java Developer

Page 4: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Overview

J2EE Overview EJB Overview Entity Bean Lifecycle for the DBAs Persistence Options and related concerns Optimizing CMP Entity beans for Oracle database Other DBA Considerations Additional Resources and Next Steps

Complete Your Survey (Session Id#40019)

Page 5: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Mind boggling J2EE

J2EE

JSP

JDBC

EJB

JNDI

JTA

JMS

Servlet

JCA

Page 6: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

What is J2EE?

Java 2 Enterprise Edition (J2EE) – Platform to build scalable and portable applications in Java– Relies on a number of Java specifications

Servlets, JSPs, EJB, JMS, JDBC, JTA, JNDI, etc. DBAs care most about JDBC,JTA and EJB

JDBC – Java APIs for Database access JTA – Java APIs to manage transactions EJB – Enterprise JavaBeans Oracle Application Server Containers for J2EE

(OC4J) is J2EE 1.3 compliant

Page 7: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Develop J2EE Applications with Oracle Application Server

Database

OHSOHS

Browser

JSPJSP ServletsServlets

JTA

JMS

JND

I

Java Mail

JAA

S

Java VM

Oracle Application Server

JDB

C

J2EE ContainerJ2EE Container

JCA

EJBsEJBs(Session, Entity, MDBs)(Session, Entity, MDBs)

EJBClientEJB

Client

CORBAClient

CORBAClient

RMI

http

RMI-over-IIOP

Page 8: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

What is EJB

Reusable components that run inside a container

Can be accessed either – Either local and remote Java programs– CORBA compliant client

EJB Container provides support for– Persistence– Access control– Transactions

Page 9: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Enterprise JavaBean Review

EJB client

OC4J

Enterprise ServicesNaming, Transactions, Security

Database

EJB container

EJB bean

EJB remote object

EJB home object

EJB remote

interface

EJB home

interface

JMS Listener

MDB bean

JMS client

Page 10: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Types of EJBs Session Beans – encapsulate business logic

– Transient in nature, cannot survive crash !– Stateless – Perform a task e.g. charge a credit – Stateful – Maintains state between calls e.g. shopping cart

Entity Beans – persistent in nature– Representation of data – Two types Bean Managed Persistence (BMP), Container Managed

Persistence (JMS) Message Driven beans

– A Java Message Service (JMS) listener (listens on a Topic or Queue)

– Reliably consume message – Can work with Oracle Advanced Queueing

Page 11: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Entity Beans Uncovered

Represent persistent objects Have a Primary key for unique identification BMP requires developers to code all

persistence– Use JDBC to perform persistence

CMP requires container to do the persistence based on declarations

– Container does database access based on declarations by developer

Page 12: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Container Managed Relationships

Only between CMP EJBs Supports 1-1, 1-M, and M-M Relationships can be

unidirectional or bi-directional Relationships are persistent

just like EJBs Can have DELETE-CASCADE

property

Customer

id: intname: StringcreditRating: int

Address

id: intcity: Stringzip: String

*

Page 13: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Entity Bean Life Cycle

Client

EJB ContainerEJB Server

create()

Entity bean

remove()

ejbUnsetEntityContext()ejbRemove()

ejbLoad()

ejbStore()EJB object stub

Bean constructorejbCreate(…)

primary key constructorejbSetEntityContext()ejbPostCreate()

Page 14: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Entity Bean Lifecycle and database

Method Operation DB OperationejbCreate() Create an entity bean

instanceINSERT to persist the bean instance

ejbPostCreate() Set relationship UPDATE foreign key or

INSERT if deferred write

ejbLoad() Load a bean instance using the supplied primary key

SELECT statement to retrieve a database row

ejbStore() Update the corresponding bean in the database

UPDATE to a database row

ejbRemove() Remove a bean instance DELETE the record

findByXXX() Find the beans based on a certain condition

SELECT statement to fetch one or multiple rows

Page 15: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

EJB Creation

Happens in 2 steps– ejbCreate

Basic insert statement

– ejbPostCreate Relationships made here

Deferred constraints important because of this 2 step process

– Only way to deal with mandatory foreign keys

Page 16: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

EJB Removal

Simple delete from database Can support cascade-delete

– Only on 1 side of 1-1 or 1-M relationships

– Declared by tag when EJB is deployed

X

Page 17: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Finding EJBs

EJB-QL is the EJBs language for queries Similar to SQL-92 / SQL-99 Container creates findByPrimaryKey Can create other finders

– findAll selects whole table– Other finders limited only by EJB-QL– OC4J allows SQL more flexible than EJB-QL

select distinct object(e) from Emp e where e.deptno = ?1

Page 18: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Loading EJB State

EJB is loaded when it is needed for operation

– Happens after it is found with findBy method

Container handles loading EJB persistent state

Container loads all persistent attributes Can do pessimistic or optimistic locking

Page 19: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Saving EJB State

Saving state occurs at end of transaction

By default, container optimizes when possible

– Saves only changed attributes– Will not write out if no state changed

Developer can intervene with ejbStore method

Page 20: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

The Classic N+1 Problem

The N + 1 problem– Mostly with BMPs, with some CMP engines– Beans located via finder methods– Bean finders return PK values

N reads: select * from emp where empno = empPK;

1 read: select empno from emp where deptno = 100;

Container creates bean instances to return– Calls ejbLoad for each PK returned

Page 21: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

J2EE Persistence Options

J2EE standards based options are– Direct JDBC from web-tier or EJB session beans– Entity beans with Bean Managed Persistence– Entity beans with Container Managed

Persistence

Additional technologies (Related Sessions !!)– Java-to-relational frameworks such as Oracle

Application Server TopLink– Oracle ADF (Application Development

Framework)

Page 22: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Direct Access with JDBC

Developer codes all interactions with database– Queries, inserts, updates, deletes using JDBC API

Common design pattern used – Data Access Objects

– Separates persistence from business logic– Avoids putting JDBC code directly in Servlet/JSPs

Nil to low overhead from container– Developer is responsible for opening/closing resources– Transactions managed programmatically

Concurrency considerations DBA Concerns: Review SQL

Page 23: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Bean Managed Persistence

Using BMP– All database interactions are manually coded– Container calls your code when it performs an operation– Container still ultimately in control

Provides some implementation flexibility– Map to 1 or more tables, different storage systems– Make use of existing stored procedures

Performance perceptions and reality– Developer coded *may* be better than container

generated– Inherent problem with (n + 1) SQL calls

DBA Concerns: Database schema is coded into bean, Review SQL

Page 24: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Container Managed Persistence

Using CMP– Developer specifies persistent attributes of object– Developer specifies how entity object maps to database – All JDBC code generated by container

Container is responsible for managing persistence Container maintains relationships between objects Requires less code than JDBC and BMP Choice for persistence in J2EE Applications DBA Concerns : Many !! If you are not using Oracle

Application Server

Page 25: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

CMP development and deployment Concerns

Container Managed Tables – Containers creates the tables and names those– Ask your developers to map to your schema

Container creates Primary key– If no primary key is assigned in Entity bean– OC4J names this column autoid by default

Container Managed Relationship– May create an extra table for maintaining relationship – You can use foreign key for mapping 1-M

Page 26: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Performance Concerns

Container generates the SQL– SQL statement that can cause

performance degradation by making full table scans or unnecessary joins

– Unnecessary Extra SQL statements

Developers specify finder methods that can make full table scans

How to tune database for use with CMPs

Page 27: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Optimizing CMP Entity beans for Oracle database

Reduce database operations Use right concurrency mode and

locking strategy Tune your SQL/database

Page 28: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Reduce Database Operations

Enforce primary key constraint at database level– Avoid extra SQL for constraint checking by container

Exploit DELETE CASCADE at database level – Container generate multiple SQL statements

Defer EJB creation to end of transaction – This avoids an extra UPDATE statement

Batch update operations to end of transaction Exploit eager loading of relationship Reduce round trips with pre-fetch size Avoid N+1 problem by switching off lazy-loading

Page 29: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Use Right Locking/Isolation Mode

Choose the right isolation level for entity beans

– Avoid if possible at the bean level– COMMITTED performs better than Serializable

Choose right locking mode– Use Optimistic and Read-Only if possible– Pessimistic uses ‘SELECT FOR UPDATE’

Avoid database calls with Read-Only patterns

Page 30: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Database Tuning Tips for CMPs

Make sure that your finder /select method uses indexes.

Exploit statement caching by the container Avoid findAll() on large tables as this makes full table

scans Most EJB systems are OLTP in nature so tuning redo

is important The basics of tuning any database are valid for EJBs Use Statspack to find bottlenecks and tune your DB

Page 31: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

OC4J Tools and Instrumentation

Dynamic Monitoring System (DMS)– Instrumentation of application and server– Oracle Application Server Performance Guide

Platform dependant document

P6Spy– Plug in JDBC driver to capture SQL– Good development tool– http://www.p6spy.com

Statspack

Page 32: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

OracleAS Toplink – A Compelling Option Improves developer productivity by providing a flexible O-R

Framework – Avoiding manual coding of interactions with database– Have years of experience in Java to RDB mapping

Can be used in any J2EE application– Servlets/JSPs / EJBs (BMP/CMP)

Reduces the load on database – Resolving the N+1 problem– By using caching data in the middle-tier and reading ‘Just In Time’– Minimizing database calls

Utilize the features provided by databases Respect and work with database locks

Page 33: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Other DBA Concerns

Database user passwords– Used in data-sources for connection

pooling– Stored in clear text, can be encrypted !– Changes require restart of container

OC4J uses an Oracle database for commit coordinator for 2-Phase commit

– Requires a 9i database as commit coordinator

– Requires database links

?

Page 34: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

JMS and Oracle AQ

OC4J uses two JMS providers– OC4J JMS – Internal/in-memory JMS– OracleJMS – based in Oracle AQ

JMS uses– Queues – single consumer– Topics – multiple consumers

OracleJMS persists messages in AQ tables– As DBAs you have to manage these objects

Page 35: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Summary

J2EE is a popular platform Persistence is the greatest challenge for

developers and may impact DBA’s life DBAs and Developers work together to

improve the quality of J2EE applications

Page 36: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Reminder – please complete the OracleWorld session survey

Session Id : 40019Thank you.

Page 37: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Next Steps ..

Related Sessions – #40292 - Improving performance of Your J2EE

Applications : Tips and Tricks, @ Moscone Room 202, Tuesday 8:30am

– #40038 – Understanding the Impacts of J2EE Applications on Relational Databases, @ Moscone 135, Wednesday 1:00pm

Visit Oracle Application Server Booths in Demo Grounds

Attend OC4J Hands On Lab

Page 38: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

otn.oracle.com

Join Over 3,000,000 Developers!

Free Software Downloads

http://otn.oracle.com

Free Technical Advice

Page 39: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

Develop your career with Oracle’s experts– Web services, Forms Upgrade to the Web,

TopLink, Business Intelligence, Integration, J2EE, Linux

Connect with your peers Sign up at

http://otn.oracle.com/events/otnworkshop

FREE

Page 40: A DBA Perspective on J2EE Debu Panda Principal Product Manager Oracle Corporation Session id: 40019

AQ&Q U E S T I O N SQ U E S T I O N S

A N S W E R SA N S W E R S