Joomla! till now:

Joomla! is the popular open source CMS and framework which powers 2.6% of the entire web presence. When we compare it to the exact number of websites on Internet, quite a few large websites are built on Joomla CMS. This huge internet presence of Joomla is owed to the fact that Joomla can be easily adopted by wide variety of users including non-technical users and is packed with a wide variety of powerful features and can be unleashed depending on the requirements and needs. Joomla is scalable to a large extent, highly functional, highly customizable and of course open source and freely available on the web.

Joomla is developed on the Open Source Database MySQL. Though Joomla framework is designed to be working with multiple databases, the developers worked mainly on MySQL owing to the fact that MySQL was available freely as an Open Source Database and was easily accessible. This is also the main reason that most of the open source Packages are using MySQL as primary choice for database.

Need for Joomla to support Multiple Databases?

When more and more users started using Joomla, it evolved as a Powerful CMS framework. The limitation of installing Joomla only on MySQL started to show up as a serious limitation.

Primary reasons to not adopt Joomla CMS. They are

1.  The companies do not have IT support staff proficient in MySQL. Not that Joomla requires complex maintainence all the time, just that companies from the IT standpoint need to plan for handling worst case scenarios.

2.  All of the internal IT applications are built on databases other than MySQL such as SQLServer/Oracle/PostgresSQL with the exception of the website.

3.  As the company grows, the IT group would like to be proficient in the software it is built upon to be able to support it effectively and efficiently. Therefore, porting the website to a SQLServer/Oracle/PostgresSQL platform would be a step in the right direction, adding IT support, saving time, saving licensing/support costs and integrating the website with the existing internal IT systems.

To add a new dimension to this award winning CMS package, we started work on porting Joomla on Oracle first. Oracle is one of the complex database with substantial amount of non standards (lack of support for ANSI SQL) in my opinion. We successfully ported Joomla 1.5 to Oracle.

Next logical step was to support Joomla 1.6 function on multi database including Oracle, SQLServer and PostgresSQL.

An obvious question when designing system to support multiple database is "Why not an ORM?".
Object-relational mapping (ORM, O/RM, and O/R mapping) in computer software is a programming technique for converting data between incompatible type systems in object-oriented programming languages. This creates, in effect, a "virtual object database" that can be used from within the programming language. There are both free and commercial packages available that perform object-relational mapping, although some programmers opt to create their own ORM tools.

During the initial stage of this project, we could have used ORM tools or extend the home grown ORM layer within Joomla.

Though the usage of ORM third party tools could have enabled various users to quickly add a non-MySQL database for Joomla, it would require for programming and the need for more qualified technical resources every time this had to be done. Also not all ORM tools are open sourced. Hence it would involve purchase of these tools, which would defeat the purpose of having to select Joomla in the first place.

Hence a more feasible solution was to extend the home grown ORM layer. Though this process is still being debated upon, we weighed the advantages and disadvantages of going each way and decided upon making the changes to Database (DB) framework in Joomla.

Complexities?

DB Framework in Joomla was for multiple databases but was not leveraged and implemented the right way. Joomla core had to be modified to generate/build SQL queries in a database agnostic way. Now after the modification, other databases could be easily supported. In addition, we had to port the sample_data and Joomla.sql to database (SQLServer/Oracle etc.) specific syntax. On a side note – even after decades of existence of databases – we do not have a standard SQL being supported by all database vendors.

Advantages of Joomla on Multiple DB:

With the newer release available on Joomlacode database branch, Joomla is now more portable to multiple databases and hence, it may not be necessary for a company to deviate from its present database environment setup to install/configure and deploy Joomla. They can make use of the present resources and also develop custom database tools to handle data inside Joomla.

Also, with ability of Joomla to be installed on any database, Joomla’s functionality can be extended to take care of internal business needs. This would have been difficult with the previous setup of Joomla supporting only MySQL.

Joomla was considered a boon for Small size startups as they could easily install and maintain Joomla on MySQL. Several of the Medium size and large size enterprises having maintenance contracts for their current database installations. Introducing Joomla with MySQL would cause additional burden on finances and existing resources. With Joomla on Multiple DB, they can now go in for Joomla without having to make major modifications to the maintenance contracts and utilize resources efficiently rather than spend on retraining existing resources.

Disadvantages:

There are also a few minor complications that arise out of this scenario most notably additional burden on community developers and extension developers to write code in database agnostic way. In addition resources required for testing each Joomla release once the contribution is merged with the core.

As of today interested folks can download Joomla 1.6 on multidb. We are currently working on merging the Joomla 1.6.1 with Joomla 1.6 multidb.

Extensions:

Extensions for Joomla could be easily paralleled with Apps for an Apple Appstore. Just like the Apple has appstore for iPhone and iPad devices. Just as these apps are custom built functionalities to cater to specific needs for individual set of customers, extensions play the same role for Joomla.

Extensions are add-ons for enabling Joomla for specialized functionalities. Plug-ins provides additional functionality like login sources, WYSIWYG editors etc. Templates provide overall skinning to a website. Modules provide additional functionality as addition to main content of a page. Components are API rich.

It is a well known fact that extension development depends majorly on the database chosen for the Package. The extension development was somewhat limited to MySQL Compatibilities. With release of Joomla 1.6 Multidb unleashes the capability of Joomla to be functional on multiple databases.

Newer extensions with extended capabilities could be built utilizing features of commercial databases. These would open the doors to a whole new world of opportunities for extension developers at the same time, increased complexities in approval process of extensions.

Just as a proof of concept I have ported some popular extensions to SQLServer/SQLAzure and have been quite successful in it as well. The good news is that extensions can be ported and in days to come we will have port extensions to other databases and share it community as well. It would be a great idea to have a new flag/symbol on the extensions indicating support for multidb (SQLServer/SQLAzure/Oracle etc.,).


Moving forward

We are working with OSM, Microsoft and Joomla community to merge our code back into core. We will continue supporting Joomla on multiple database till it is merged completely with the core and continue from there on supporting Joomla on multidb on Joomlacode.

Initiatives
    * Working with customers to port part of their web assets to Joomla1.6-SQLServer platform.
    * Working on releasing Joomla 1.6.1-Multidb.
    * Working on supporting some extensions to work on multiple databases including MySQL.
    * Working on an initiative under the leadership of Mitch Pirtle to bring Joomla to MongoDB.
    * Working on Performance testing of Joomla on our cloud platform, SQLServer, SQLAzure and Windows Azure.

If you are attending CMSExpo this year at Chicago -Look for the session

We request folks to download the package and give it a spin. Currently we support MySQL, SQLServer2008 and SQLAzure.  Feedback is appreciated and can be sent to sudhi @ hooduku.com

Credits:
1. Grace Francisco from Microsoft without her it would not have been possible to support Joomla on Multidb.
2. Joomla/OSM Production Leadership team especially Mark, Louis and Sam.
3. My development team and Joomla community dev team especially Elin.