Successfully reported this slideshow.
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/ DBPr...
www.scotas.com
Agenda
– Database resident JVM
– History of the JVM implementation
– Evangelizing about Database resident J...
Database resident JVM time-line
●
8i (1999, JDK1.2, JSP, ORB, NCOMP)
●
9i (2001, JDK 1.3, NCOMP)
●
10g (2003 R1, 2005 R2, ...
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
●
Classe...
Oracle’s Commitment to OJVM
●
Used by a growing number of database customers acording
to Oracle
●
Used by Oracle Component...
●
Many among Fortune 500 companies
●
Some examples from
“Java in the Oracle Database @ Work – Customer Case Studies”
●
And...
Java in the Database: What For
www.scotas.com
●
Trigger-based Notification System
using RMI
●
Secure Credit-Card Processin...
Evangelizing Java Within the Database
www.scotas.com
Experiences in:
Experiences during development
●
Basically any Java IDE works, but
●
JDeveloper is better:
– Database integration
●
Databa...
Experiences during testing
●
There is no visual feedback (Java headless)
●
Code could be tested in an external JVM encapsu...
Experiences during deployment
●
Incorporate Ant or Maven
– One sentence deployment
– DBA likes scripts for installing
– Im...
Examples – DBPrism CMS
●
At the time of PSP (formerly HTMLDB, WebDB, Apex..)
●
Using DBPrism connector example for the Boo...
Examples – RESTFul Web Services
●
An Extension to restlet.org project
●
A Java Servlet Connector for XMLDB
●
Incorporated ...
Examples - Scotas OLS
www.scotas.com
●
An Embedded version of Solr Framework running inside Oracle JVM
●
42 new Java Class...
Conclusions
●
Open Source projects
– Release early, release often (to attract contributors, see Hadoop
version 0.20)
– Due...
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
Upcoming SlideShare
Loading in …5
×

Experiences with Evangelizing Java Within the Database

434 views

Published on

Experiences with Evangelizing Java Within the Database
Oracle OpenWorld San Francisco 2013

Published in: Software, Technology, Education
  • Be the first to comment

  • Be the first to like this

Experiences with Evangelizing Java Within the Database

  1. 1. Experiences with Evangelizing Java Within the Database
  2. 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. 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
  4. 4. 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
  5. 5. Database resident JVM architecture www.scotas.com Components
  6. 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. 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. 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. 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
  10. 10. Evangelizing Java Within the Database www.scotas.com Experiences in:
  11. 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. 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. 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. 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. 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. 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. 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. 18. Answers! www.scotas.com | info@scotas.com | +1 (650) 704-7915 | 440 North Wolfe Road, Sunnyvale, CA 94085
  19. 19. Thank You! www.scotas.com | info@scotas.com | +1 (650) 704-7915 | 440 North Wolfe Road, Sunnyvale, CA 94085

×