experiences with evangelizing java within the database

Download Experiences with Evangelizing Java Within the Database

Post on 22-May-2015

110 views

Category:

Software

3 download

Embed Size (px)

DESCRIPTION

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

TRANSCRIPT

  • 1. Experiences with Evangelizing Java Within the Database

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 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. Database resident JVM architecture www.scotas.com Components 6. Suns JDK versus Database resident JVM Suns 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. Oracles 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 10. Evangelizing Java Within the Database www.scotas.com Experiences in: 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 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

Recommended

View more >