Experiences with Evangelizing Java Within
the Database
About
●
About me
– CTO at Scotas.com
– Founder of the ArOUG
– ACE Member since 2006
– Open Source Developer (DBPrism/ DBPrism CMS, LDI, ...)
– Oracle developer since 1999
●
About Scotas
– A company specialized in free text search, synchronization
and Oracle
– OLS, Native Solr integration
– External Solr/ ElasticSearch integration
www.scotas.com
www.scotas.com
Agenda
– Database resident JVM
– History of the JVM implementation
– Evangelizing about Database resident JVM
●
Experience during
– Developing
– Testing
– Deploying
●
Examples
– Conclusion
Database resident JVM time-line
●
8i (1999, JDK1.2, JSP, ORB, NCOMP)
●
9i (2001, JDK 1.3, NCOMP)
●
10g (2003 R1, 2005 R2, JDK 1.4, NCOMP)
●
11g (2007, JDK 1.5, JIT)
●
12c (2013, JDK 1.6/1.7/.., JIT)
www.scotas.com
Database resident JVM architecture
www.scotas.com
Components
Sun’s JDK versus Database resident JVM
Sun’s JDK VM
●
Thread Based
●
Sharing across Threads
●
Limited Scalability
●
Classes in file system
●
Resolve classes with
“Classpath”
●
JIT
●
Preemptive multi-threading
●
Limited Robustness (process
failure)
Database resident JVM
●
Database Session Model
●
Session Isolation
●
Unlimited Scalability
●
Classes in database
●
Resolve classes with
“Resolver Spec”
●
JIT (11g and up)
●
Non-Preemptive multi-
threading
●
Does not crash as a whole
www.scotas.com
Oracle’s Commitment to OJVM
●
Used by a growing number of database customers acording
to Oracle
●
Used by Oracle Components
– InterMedia
– Spatial
– Text
– XQuery (XMLDB)
– WareHouse Builder
– CDC (Change Data Capture)
– ODM (Oracle Data Mining analytics functions)
●
12c Enhancements
www.scotas.com
●
Many among Fortune 500 companies
●
Some examples from
“Java in the Oracle Database @ Work – Customer Case Studies”
●
And for sure Scotas & Cima
Who is Using OJVM
www.scotas.com
Java in the Database: What For
www.scotas.com
●
Trigger-based Notification System
using RMI
●
Secure Credit-Card Processing using
JSSE
●
Custom Alert applications that
monitor business data
●
Sending emails with attachment
from within the database
●
Produce PDF files from Result Set
●
Execute external OS commands and
external procedures
●
Implement Md5 CRC
●
Publish Repository Content to Portal
●
Portable Logistic Applications
●
Implement Parsers for various File
Formats (txt, zip, xml, binary)
●
Implement Image Transformation
and Format Conversion (GIF, PNG,
JPEG, etc)
●
Implement Database-resident
Content Management System
●
HTTP Call-Out
●
JDBC Call-Out
●
RMI Call-Out to SAP
●
Web Services Call-Out
●
Messaging across Tiers
●
RESTful Database Web Services
●
Near Real Time Full Text Search
Evangelizing Java Within the Database
www.scotas.com
Experiences in:
Experiences during development
●
Basically any Java IDE works, but
●
JDeveloper is better:
– Database integration
●
Database navigator
●
Database reports
●
Find objects
●
DBMS_OUTPUT
– Database resident Java Class browser
– Remote debugger
●
Use $ORACLE_HOME/jdk for compilling
●
Use library dependencies $ORACLE_HOME:
– javavm/lib/ (database resident JVM implemenetation Aurora)
– rdbms/jlib/ (database resident APIs such as ODCI, XDB, Servlet)
– jdk/lib/ (properly JDK specific libs)
– lib/ (Oracle functionalities such as XML Parser)
– jdbc/lib (Oracle JDBC implementation)
●
If you have problem with target JDK, Retro-translator is your friend
www.scotas.com
Experiences during testing
●
There is no visual feedback (Java headless)
●
Code could be tested in an external JVM encapsulating your
JDBC connection funtionality
●
Use a logging framework
– Java Util Logging works (JUL)
– Apache Log4J works (more funtionality)
– Usually logging information goes to .trc files
●
Use JDeveloper for remote debugging (dbms_debug_jdwp)
●
Incorporate JUnit integration
– Class loader issues
– Security concerns
www.scotas.com
Experiences during deployment
●
Incorporate Ant or Maven
– One sentence deployment
– DBA likes scripts for installing
– Imagine you are deploying your apps in a Datacenter
using ssh
●
Use NCOMP with DB version < 11g
●
Important!!! name your libraries with version numbers
major.minor.patch
●
Allways incorporate version control (SVN, CVS, GIT)
●
Write many test suites
●
Size your Database resident memory areas properly
www.scotas.com
Examples – DBPrism CMS
●
At the time of PSP (formerly HTMLDB, WebDB, Apex..)
●
Using DBPrism connector example for the Book
Profesional XML Databases
●
Develop as an example for the Book
Oracle Database Programming using Java and Web Services
●
Presented at Second Open Source Content Management
Conference , Berkeley, CA
●
A CMS working as Java Stored Procedures
●
Using Apache Cocoon as presentation framework
●
Using Struts's controller idea, view (XQuery pages),
Controller (Java Stored Procedures)
●
Exploring many XMLDB functionalities (XQuery, XSL,
Oracle Text, ...)
www.scotas.com
Examples – RESTFul Web Services
●
An Extension to restlet.org project
●
A Java Servlet Connector for XMLDB
●
Incorporated to the code base of OSS Project
●
Allows user to write RESTFul Web Services in Java
●
Connection are accepted directly by Oracle Listener
●
Many connections spawn several parallel shared servers
●
Java reflection was used to avoid static dependency to
propietary API
●
Main problem found was Servlet 2.2 API support into XMLDB,
still the same in 12c
●
Allows remote debugging of RESTFul implementation (
dbms_debug_jdwp)
www.scotas.com
Examples - Scotas OLS
www.scotas.com
●
An Embedded version of Solr Framework running inside Oracle JVM
●
42 new Java Classes and several new PLSQL Object Types
●
Four new SQL operators scontains(), sscore(), smlt(), shighlight()
and poweful text analysis functionalities
●
An orthogonal/up-to-date Solr solution for any programming
language, especially Java, Ruby, Python, PHP and .Net, currently
latest production version – 4.0.0.
●
Available to any Oracle product such as BI, Apex, ODM
create index esl_events_sidx on esl_events(message) indextype is Lucene.SolrIndex
parameters('SyncMode:Deferred;MltColumn:text;HighlightColumn:title;DefaultColumn:text;Co
mmitOnSync:true;ExtraTabs:ESL.esl_causes
c;WhereCondition:L$MT.event_id=c.event_id(+);ExtraCols:.....') local parallel 2;
create index esl_events_sidx on esl_events(message) indextype is Lucene.SolrIndex
parameters('SyncMode:Deferred;MltColumn:text;HighlightColumn:title;DefaultColumn:text;Co
mmitOnSync:true;ExtraTabs:ESL.esl_causes
c;WhereCondition:L$MT.event_id=c.event_id(+);ExtraCols:.....') local parallel 2;
select /*+ DOMAIN_INDEX_SORT */ sscore(1),shighlight(1),message from esl_events
where scontains(message,'severity_s:(ERROR INFO) AND springframework',1)>0 and
gen_day between 26 and 27;
select /*+ DOMAIN_INDEX_SORT */ sscore(1),shighlight(1),message from esl_events
where scontains(message,'severity_s:(ERROR INFO) AND springframework',1)>0 and
gen_day between 26 and 27;
Conclusions
●
Open Source projects
– Release early, release often (to attract contributors, see Hadoop
version 0.20)
– Due to Oracle License limitation we can not incorporate OSS code in
main branch, Examples DBPrism Adapter, Restlet Adapter)
– Loading OSS libraries into the RDBMS is not well views by DBAs
●
Corporate projects
– Impedance mistmatch
●
DBA don't have Java skills
●
Java Developers don't have DBA skills
●
PLSQL Developer don't have OO skills
– Architects don't really know database resident potentiality
– Same challenges are now by incorporating Hadoop in Oracle projects
www.scotas.com
Answers!
www.scotas.com | info@scotas.com | +1 (650) 704-7915 | 440 North Wolfe Road, Sunnyvale, CA 94085
Thank
You!
www.scotas.com | info@scotas.com | +1 (650) 704-7915 | 440 North Wolfe Road, Sunnyvale, CA 94085

Experiences with Evangelizing Java Within the Database

  • 1.
    Experiences with EvangelizingJava Within the Database
  • 2.
    About ● About me – CTOat Scotas.com – Founder of the ArOUG – ACE Member since 2006 – Open Source Developer (DBPrism/ DBPrism CMS, LDI, ...) – Oracle developer since 1999 ● About Scotas – A company specialized in free text search, synchronization and Oracle – OLS, Native Solr integration – External Solr/ ElasticSearch integration www.scotas.com
  • 3.
    www.scotas.com Agenda – Database residentJVM – History of the JVM implementation – Evangelizing about Database resident JVM ● Experience during – Developing – Testing – Deploying ● Examples – Conclusion
  • 4.
    Database resident JVMtime-line ● 8i (1999, JDK1.2, JSP, ORB, NCOMP) ● 9i (2001, JDK 1.3, NCOMP) ● 10g (2003 R1, 2005 R2, JDK 1.4, NCOMP) ● 11g (2007, JDK 1.5, JIT) ● 12c (2013, JDK 1.6/1.7/.., JIT) www.scotas.com
  • 5.
    Database resident JVMarchitecture www.scotas.com Components
  • 6.
    Sun’s JDK versusDatabase resident JVM Sun’s JDK VM ● Thread Based ● Sharing across Threads ● Limited Scalability ● Classes in file system ● Resolve classes with “Classpath” ● JIT ● Preemptive multi-threading ● Limited Robustness (process failure) Database resident JVM ● Database Session Model ● Session Isolation ● Unlimited Scalability ● Classes in database ● Resolve classes with “Resolver Spec” ● JIT (11g and up) ● Non-Preemptive multi- threading ● Does not crash as a whole www.scotas.com
  • 7.
    Oracle’s Commitment toOJVM ● Used by a growing number of database customers acording to Oracle ● Used by Oracle Components – InterMedia – Spatial – Text – XQuery (XMLDB) – WareHouse Builder – CDC (Change Data Capture) – ODM (Oracle Data Mining analytics functions) ● 12c Enhancements www.scotas.com
  • 8.
    ● Many among Fortune500 companies ● Some examples from “Java in the Oracle Database @ Work – Customer Case Studies” ● And for sure Scotas & Cima Who is Using OJVM www.scotas.com
  • 9.
    Java in theDatabase: What For www.scotas.com ● Trigger-based Notification System using RMI ● Secure Credit-Card Processing using JSSE ● Custom Alert applications that monitor business data ● Sending emails with attachment from within the database ● Produce PDF files from Result Set ● Execute external OS commands and external procedures ● Implement Md5 CRC ● Publish Repository Content to Portal ● Portable Logistic Applications ● Implement Parsers for various File Formats (txt, zip, xml, binary) ● Implement Image Transformation and Format Conversion (GIF, PNG, JPEG, etc) ● Implement Database-resident Content Management System ● HTTP Call-Out ● JDBC Call-Out ● RMI Call-Out to SAP ● Web Services Call-Out ● Messaging across Tiers ● RESTful Database Web Services ● Near Real Time Full Text Search
  • 10.
    Evangelizing Java Withinthe Database www.scotas.com Experiences in:
  • 11.
    Experiences during development ● Basicallyany Java IDE works, but ● JDeveloper is better: – Database integration ● Database navigator ● Database reports ● Find objects ● DBMS_OUTPUT – Database resident Java Class browser – Remote debugger ● Use $ORACLE_HOME/jdk for compilling ● Use library dependencies $ORACLE_HOME: – javavm/lib/ (database resident JVM implemenetation Aurora) – rdbms/jlib/ (database resident APIs such as ODCI, XDB, Servlet) – jdk/lib/ (properly JDK specific libs) – lib/ (Oracle functionalities such as XML Parser) – jdbc/lib (Oracle JDBC implementation) ● If you have problem with target JDK, Retro-translator is your friend www.scotas.com
  • 12.
    Experiences during testing ● Thereis no visual feedback (Java headless) ● Code could be tested in an external JVM encapsulating your JDBC connection funtionality ● Use a logging framework – Java Util Logging works (JUL) – Apache Log4J works (more funtionality) – Usually logging information goes to .trc files ● Use JDeveloper for remote debugging (dbms_debug_jdwp) ● Incorporate JUnit integration – Class loader issues – Security concerns www.scotas.com
  • 13.
    Experiences during deployment ● IncorporateAnt or Maven – One sentence deployment – DBA likes scripts for installing – Imagine you are deploying your apps in a Datacenter using ssh ● Use NCOMP with DB version < 11g ● Important!!! name your libraries with version numbers major.minor.patch ● Allways incorporate version control (SVN, CVS, GIT) ● Write many test suites ● Size your Database resident memory areas properly www.scotas.com
  • 14.
    Examples – DBPrismCMS ● At the time of PSP (formerly HTMLDB, WebDB, Apex..) ● Using DBPrism connector example for the Book Profesional XML Databases ● Develop as an example for the Book Oracle Database Programming using Java and Web Services ● Presented at Second Open Source Content Management Conference , Berkeley, CA ● A CMS working as Java Stored Procedures ● Using Apache Cocoon as presentation framework ● Using Struts's controller idea, view (XQuery pages), Controller (Java Stored Procedures) ● Exploring many XMLDB functionalities (XQuery, XSL, Oracle Text, ...) www.scotas.com
  • 15.
    Examples – RESTFulWeb Services ● An Extension to restlet.org project ● A Java Servlet Connector for XMLDB ● Incorporated to the code base of OSS Project ● Allows user to write RESTFul Web Services in Java ● Connection are accepted directly by Oracle Listener ● Many connections spawn several parallel shared servers ● Java reflection was used to avoid static dependency to propietary API ● Main problem found was Servlet 2.2 API support into XMLDB, still the same in 12c ● Allows remote debugging of RESTFul implementation ( dbms_debug_jdwp) www.scotas.com
  • 16.
    Examples - ScotasOLS www.scotas.com ● An Embedded version of Solr Framework running inside Oracle JVM ● 42 new Java Classes and several new PLSQL Object Types ● Four new SQL operators scontains(), sscore(), smlt(), shighlight() and poweful text analysis functionalities ● An orthogonal/up-to-date Solr solution for any programming language, especially Java, Ruby, Python, PHP and .Net, currently latest production version – 4.0.0. ● Available to any Oracle product such as BI, Apex, ODM create index esl_events_sidx on esl_events(message) indextype is Lucene.SolrIndex parameters('SyncMode:Deferred;MltColumn:text;HighlightColumn:title;DefaultColumn:text;Co mmitOnSync:true;ExtraTabs:ESL.esl_causes c;WhereCondition:L$MT.event_id=c.event_id(+);ExtraCols:.....') local parallel 2; create index esl_events_sidx on esl_events(message) indextype is Lucene.SolrIndex parameters('SyncMode:Deferred;MltColumn:text;HighlightColumn:title;DefaultColumn:text;Co mmitOnSync:true;ExtraTabs:ESL.esl_causes c;WhereCondition:L$MT.event_id=c.event_id(+);ExtraCols:.....') local parallel 2; select /*+ DOMAIN_INDEX_SORT */ sscore(1),shighlight(1),message from esl_events where scontains(message,'severity_s:(ERROR INFO) AND springframework',1)>0 and gen_day between 26 and 27; select /*+ DOMAIN_INDEX_SORT */ sscore(1),shighlight(1),message from esl_events where scontains(message,'severity_s:(ERROR INFO) AND springframework',1)>0 and gen_day between 26 and 27;
  • 17.
    Conclusions ● Open Source projects –Release early, release often (to attract contributors, see Hadoop version 0.20) – Due to Oracle License limitation we can not incorporate OSS code in main branch, Examples DBPrism Adapter, Restlet Adapter) – Loading OSS libraries into the RDBMS is not well views by DBAs ● Corporate projects – Impedance mistmatch ● DBA don't have Java skills ● Java Developers don't have DBA skills ● PLSQL Developer don't have OO skills – Architects don't really know database resident potentiality – Same challenges are now by incorporating Hadoop in Oracle projects www.scotas.com
  • 18.
    Answers! www.scotas.com | info@scotas.com| +1 (650) 704-7915 | 440 North Wolfe Road, Sunnyvale, CA 94085
  • 19.
    Thank You! www.scotas.com | info@scotas.com| +1 (650) 704-7915 | 440 North Wolfe Road, Sunnyvale, CA 94085