The following links are some information about my work on Open Source Projects and other related stuff.

- DBPrism Servlet Engine

DBPrism is an open source framework to generate dynamic XML from a database. Unlike other technologies, such as Apache XSP or Oracle XSQL servlet , DBPrism generates the dynamic XML inside the database, transforming it into an active database. An active database means that you use the database engine not only to execute SQL statements, but to directly return a complex XML representation of the data stored inside as well.

- DBPrism CMS

DBPrism CMS is the first Open Source Database Oriented CMS using all the native implementation of Oracle XMLDB repository. It means that DBPrism CMS will provides powerful CMS functionality using two bigger players, Apache Cocoon presentation framework and Oracle XMLDB repository.

Here a partial list of the DBPrism CMS functionality:

  • Simple , The core functionality of DBPrism CMS are included into 962 lines of java code which runs as Oracle Java Stored Procedure. Unlike other CMS systems such as Open CMS or Oracle's iFS is too quite simple.
  • Powerful , DBPrism CMS takes the best key technologies to provide powerful functionality, for example, xml indexing from Oracle Text (TM), repository management of XMLDB , portal content aggregation like My Yahoo (TM) functionality from Cocoon, and others.
  • Dynamic and static content , DBPrism CMS provides a simple way to generate on the fly content services in Java or PLSQL, look at the CMS Dynamic sections for more details.
  • Multi-language , DBPrism CMS includes attributes into his metamodel to provide multi-language support. Also the Front End Application is localized by default into Spanish and English.
  • Secure , DBPrism CMS runs as a Java Stored Procedure so it uses the security layer provides by the Oracle Databases, that is, user and roles. For the content assets it uses WebDAV ACL provided by XMLDB.
  • Concurrence control , All the assets are stored into database tables which are controlled by the concurrence features of the database.
  • Performance , DBPrism CMS uses ESI invalidation protocol to provide a cache coherence between Cocoon internal cache system and the database assets, read this document for more detail.
  • Separation of layout and content , content authors do not deal with layout concerns, they write documents using Apache document-v20.dtd syntax which is neutral, Web Designers write style sheets and CSS documents to provide the look and feel of the web site.
  • Scheduling system , Using DBMS_SCHEDULER package is possible to invoke any CMS task at an specific time or periodically. You can define the publishing time of any page using the Front End for example.
  • Import and Export content , The content assets could be exported/imported directly using FTP or WebDAV clients, also using de Front End application there are options for importing/exporting directories tree in jar format.
  • PDF/WAP support , No problem, make a new style sheet and that's all.
  • Enterprise support , Oracle Java Stored Procedure are ready to use enterprise services such as EJB or Web Services. Look at this page for more information about the enterprise functionality that the Oracle JVM provides.
  • Native XML support , DBPrism CMS uses native XML document complaint with Apache's documentv20.dtd with the addition of SVG images and Cocoon i18n tags.
  • Editing tools , users can edit the content assets using any XML-Aware editor with WebDAV support, such as XMLSpy. Also the Front End Application includes a wysiwyg editor based on HTMLArea.
  • User Interface , A simple Front End application has been added in this release, look at the Front End section . Also for complex re-organization of the repository you can use WebDAV clients such as Windows Web Folders or Linux Konqueror.
  • Support for Creative Commons digital signature , using the Front End Application you can choose many of the CC licences types.
  • Intelligent Not Found page, users who want to access to old links are automatically redirected to a Search page which shows the new location of similar pages to the old one.

- Lucene Domain Index

Lucene Domain Index is full integration of Lucene project running inside the Oracle database using Oracle JVM.
Oracle provides a full featured JVM inside your Oracle Database compliant with JDK 1.4 in 10g release and 1.5 in 11g.
OJVMDirectory is a replacement for Lucene's file system storage by a BLOB based storage, the name is related to the class which overrides (Directory.java), here a simple list of points take into account to choose this storage:

  • Using traditional File System for storing the inverted index is not a good option for some users, you don't have commit or rollback behavior, backup, etc.
  • Using BLOB for storing the inverted index running Lucene outside the Oracle database has a bad performance because there are a lot of network round trips and data marshaling.
  • Indexing relational data stores such as tables with VARCHAR2, CLOB or XMLType with Lucene running outside the database has the same problem as the previous point.
  • The JVM included inside the Oracle database can scale up to 10.000+ concurrent threads without memory leaks or deadlock and all the operations on tables are in the same memory space!!

More on this, Oracle provides a Data Cartridge API (ODCI), also called Extensible Indexing mechanism because you can write your own Domain Index and integrate it with the Oracle Engine and optimizer.
There are some important points integrating Lucene by using ODCI:

  • Changes on rows are automatically notified to Lucene, now these changes are en-queued using Oracle AQ. User can control if these changes are applied OnLine or Deferred.
  • Oracle optimizer can choose a proper execution plan if there is a Domain Index created.
  • You can mix lcontains() and lscore() operators in your queries.

- Oracle Restlet Adapter

Oracle XDB Restlet adapter is Server connector for Restlet Framework it provides to Oracle 11g the availability to support server side REST Web Services (WS).
For doing that we use the Oracle JVM, an embedded JVM compatible with JDK 1.5 running inside the database, it means using same memory space and local access to the SQL resources.
Additional to this Oracle XMLDB provides a Servlet 2.2 compatible stack to implement server side Servlets. These components work together to run Restlet Framework and to receive HTTP request using the embedded listener.
Oracle also provides a native SOAP support for running native Web Services, but many people think that REST support brings to Oracle other features:

  • Simplicity, from developer's perspective RESTWS are quite straightforward.
  • Leverage of all HTTP features for caching, you can use Apache mod_cache or better than this Oracle Web Cache and ESI invalidation protocol to speed up your WS. Also the HTTP's 304 return code.
  • Less network traffic, a simple SOAP service requires 675 bytes at POST request and 306 bytes at response, similar REST WS only requires 79 bytes at GET request and 28 bytes at response. If you have a site with million of hits these differences are a lot wasted resources.

- Lucene Domain Index REST WS

This projects aims to show how to implement REST Web Services inside Oracle JVM.

 About Me
Marcelo Ochoa works at the System Laboratory of Facultad de Ciencias Exactas, of the Universidad Nacional del Centro de la Provincia de Buenos Aires and as an external consultant for Oracle/J2EE related projects. He divides his time between University jobs and external projects related to Oracle web technologies. He has worked in several Oracle related projects like translation of Oracle manuals and multimedia CBTs. His background is in database, network, Web and Java technologies. In the XML world he is known as the developer of the DB Generator for the Apache Cocoon project, the open source projects DBPrism and DBPrism CMS, the Lucene-Oracle integration by using Oracle JVM Directory implementation and in Restlet.org project the Oracle XDB Restlet Adapter an alternative to write native REST web services inside the OJVM.
 View Marcelo Ochoa's profile on LinkedIn

Subpages (1): Presentations