2. 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
3. www.scotas.com
Agenda
– Database resident JVM
– History of the JVM implementation
– Evangelizing about Database resident JVM
●
Experience during
– Developing
– Testing
– Deploying
●
Examples
– Conclusion
6. 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
7. 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
8. ●
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
9. 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
11. 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
12. 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
13. 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
14. 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
15. 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
16. 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;
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