Saturday, December 13, 2008

Retrospection

Looking backward, this semester was a bit more fun than the last one, which was pretty much slogging all the time.  I think a subject like software architecture is a must for any software engineer with some experience, i am glad that i learnt it.

All and all a good semester, one more to go :))))





Sunday, December 7, 2008

Extending Joomla! for Oracle

Hi Folks!!

In this post,  i am going to talk about my views on extending Joomla! for Oracle. After 3 months of extensive architecture study of Joomla!; i can assure you that it is doable.

Change Description

The current version of Joomla does not support Oracle as a database. The Objective of this change is to adapt the Joomla! architecture to make it compatible with Oracle database and leverage the existing Database package for accomplishing this change.

Architectural Background

 One of the reasons adaptability of Joomla has suffered in large organizations is its inability to work with Oracle. Organizations which tend to recommend Oracle at enterprise level are not willing to use Joomla which is compatible only with MySQL database. This compatibility failure is a well know issue and often a topic of debate in the development community. Even though this change has been under consideration for almost 3 years, it has not been successfully implemented.

Even at the macro level, the extensibility of the internal system architecture has been one of the issues for Joomla system. This proposed change would act as the facilitator for further enhancements for the systems internal architecture

Architecture Overview

In this proposed architecture change; i plan to contain the changes for extending Joomla to the Database package in the Framework Tier. The Current Joomla! Database package is as shown below. Note that the classes which are with blue eclipse in the background will be impacted due to the proposed change.


Key: Purple Eclipse shows impacted classes

Figure 1: Current Joomla! Database Package
 

The Database package responsible for interaction with currently supported MySql database is expected to have some changes due to the proposed change. The main class which is envisioned to be impacted is the JDatabase class. This class is expected to be modified for extensibility reasons to accommodate Oracle Database driver along with the MySql driver. JDatabase is an abstract class representing a database connector.  The current implemented extensions of JDatabase are JDatabaseMySQL and JDatabaseMySQLiJDatabase follows an adapter pattern, therefore all the extended classes sit in an adapters sub-folder. 

 The classes JQueryElement, JSimpleRecordSet and JQuery will be modified to accommodate the syntactic changes between the query languages. These classes would be generalized to incorporate possible extensions to other databases as well.



Figure 2:  Changed Architecture 







Key:

                                                                                                Orange: New Classes

                                                                                                Yellow:  Existing Classes

                                                                                                Green: Modified Classes

The JQuery would eventually be branched out into factory along with the JQueryElement class to return valid instance. JSimpleRecortSet class will be modified to accommodate changes for extending itself to Oracle.