Joomla! 至今

Joomla! 是一款流行的开源内容管理系统和框架,支持整个网络 2.6% 的网站。将其与互联网上的确切网站数量相比,相当多的网站都是基于 Joomla CMS 构建的。Joomla 在互联网上的巨大影响力归功于它能够被各种用户轻松采用,包括非技术人员,并且拥有丰富的强大功能,可以根据需求和需要进行发挥。Joomla 具有高度的可扩展性、高度的功能性和高度的可定制性,当然是开源的,并且在网上免费提供。

Joomla 是在开源数据库 MySQL 上开发的。尽管 Joomla 框架被设计为支持多种数据库,但开发者主要在 MySQL 上工作,因为 MySQL 作为开源数据库是免费的,易于访问。这也是大多数开源软件包将 MySQL 作为数据库首选的主要原因。

Joomla 支持 多种数据库的必要性?

随着越来越多的用户开始使用 Joomla,它发展为一个强大的 CMS 框架。仅能在 MySQL 上安装 Joomla 的限制开始显现为一个严重的限制。

不采用 Joomla CMS 的主要原因。他们是

1. 公司没有熟练的 MySQL IT 支持人员。并不是 Joomla 总是需要复杂的维护,只是公司从 IT 角度需要计划处理最坏的情况。

2. 公司内部的所有 IT 应用都是基于除 MySQL 之外的数据库构建的,例如 SQLServer/Oracle/PostgresSQL,网站除外。

3.  随着公司的成长,IT部门希望能够熟练掌握其建立的基础软件,以便能够有效地和高效地支持它。因此,将网站迁移到 SQLServer/Oracle/PostgreSQL 平台将是一个正确的方向,这样可以增加 IT 支持,节省时间,节省许可/支持成本,并将网站与现有的内部 IT 系统集成。

为了给这个屡获殊荣的 CMS 包添加一个新的维度,我们开始着手将 Joomla 首先迁移到 Oracle。在我看来,Oracle 是一个复杂的数据库,有很多非标准的特性(对 ANSI SQL 的支持不足)。我们成功地将 Joomla 1.5 迁移到了 Oracle。

下一个合乎逻辑的步骤是支持 Joomla 1.6 在包括 Oracle、SQLServer 和 PostgresSQL 在内的多种数据库上运行。

在设计支持多种数据库的系统时,一个明显的问题是“为什么不使用 ORM?”。
在计算机软件中,对象关系映射(ORM、O/RM 和 O/R 映射)是一种在面向对象编程语言中转换不兼容类型系统数据的编程技术。这实际上创建了一个“虚拟对象数据库”,可以在编程语言内部使用。有免费的和商业的软件包可以执行对象关系映射,尽管有些程序员选择创建自己的 ORM 工具。

在这个项目的初始阶段,我们可以使用 ORM 工具或扩展 Joomla 内置的 ORM 层。

尽管使用 ORM 第三方工具可以让用户快速为 Joomla 添加非 MySQL 数据库,但这将需要编程,并且每次这样做时都需要更多合格的技术资源。而且并非所有的 ORM 工具都是开源的。因此,这将涉及购买这些工具,这违背了最初选择 Joomla 的目的。

因此,一个更可行的解决方案是扩展内置的 ORM 层。尽管这个过程仍在讨论中,我们权衡了每种方式的利弊,决定对 Joomla 的数据库(DB)框架进行更改。

复杂性问题?

Joomla 的数据库框架原本是为了支持多种数据库,但并没有以正确的方式利用和实现。Joomla 核心必须被修改,以生成/构建数据库无关的 SQL 查询。现在,经过修改,其他数据库可以很容易地被支持。此外,我们必须将 sample_data 和 Joomla.sql 转换为特定数据库(SQLServer/Oracle 等)的语法。顺便提一下——尽管数据库存在了几十年,但我们并没有得到所有数据库厂商支持的标准 SQL。

Joomla 支持多种数据库的优势

在 Joomlacode 数据库分支上提供的最新版本中,Joomla 现在可以更轻松地迁移到多种数据库,因此,公司可能不需要偏离其当前数据库环境设置来安装/配置和部署 Joomla。他们可以利用现有的资源,也可以开发自定义数据库工具来处理 Joomla 内部的数据。

此外,由于 Joomla 可以安装在任何数据库上,Joomla 的功能可以扩展以满足内部业务需求。这在 Joomla 只支持 MySQL 的旧设置中是困难的。

Joomla 被认为是小型创业公司的福音,因为他们可以轻松地在 MySQL 上安装和维护 Joomla。许多中大型企业与当前数据库安装维护合同。引入 MySQL 上的 Joomla 会给财务和现有资源带来额外负担。有了支持多种数据库的 Joomla,他们现在可以采用 Joomla,而无需对维护合同进行重大修改,可以有效地利用资源,而不是在重新培训现有资源上花费。

缺点

这种情况也带来了一些小问题,最值得注意的是社区开发者和扩展开发者需要编写数据库无关的代码。此外,一旦贡献合并到核心,还需要资源来测试每个 Joomla 版本。

截至今天,感兴趣的网友可以下载Joomla 1.6的多数据库版本。我们目前正在将Joomla 1.6.1与Joomla 1.6多数据库版本合并。

扩展

Joomla的扩展可以很容易地与苹果Appstore中的应用程序相媲美。就像苹果为iPhone和iPad设备提供了appstore一样。这些应用程序是为满足特定客户群的具体需求而定制构建的功能,同样地,扩展也对Joomla发挥着同样的作用。

扩展是用于启用Joomla特定功能的插件。插件提供了如登录源、所见即所得编辑器等附加功能。模板为网站提供整体外观。模块在页面主要内容之外提供附加功能。组件则拥有丰富的API。

众所周知,扩展开发主要取决于所选择的数据库包。之前,扩展开发在一定程度上受限于MySQL兼容性。随着Joomla 1.6多数据库版本的发布,Joomla现在能够支持多种数据库运行。

可以利用商业数据库的特性构建具有扩展功能的新扩展。这将为扩展开发者打开一个全新世界的机遇,同时也会增加扩展审批过程的复杂性。

作为一种概念验证,我已经将一些流行的扩展移植到了SQLServer/SQLAzure,并且也取得了相当的成功。好消息是,扩展可以被移植,在不久的将来我们将移植其他数据库的扩展并与社区共享。在扩展上有一个新的标志/符号来表示支持多数据库(SQLServer/SQLAzure/Oracle等)将是一个好主意。


向前发展

我们正在与OSM、Microsoft和Joomla社区合作,将我们的代码合并回核心。在此过程中,我们将继续支持多种数据库上的Joomla,直到完全与核心合并,并继续在Joomlacode上支持多数据库的Joomla。

倡议
    * 与客户合作,将他们部分网络资产移植到Joomla1.6-SQLServer平台。
    * 正在发布Joomla 1.6.1-多数据库版本。
    * 正在支持一些扩展在包括MySQL在内的多种数据库上运行。
    * 在Mitch Pirtle的领导下,正在开展一个将Joomla引入MongoDB的倡议。
    * 正在测试我们的云平台上Joomla的性能,包括SQLServer、SQLAzure和Windows Azure。

如果您今年参加了在芝加哥举行的CMSExpo,请寻找相关会议。

我们请求大家下载这个软件包并试用。目前我们支持MySQL、SQLServer2008和SQLAzure。欢迎反馈,请发送至sudhi @ hooduku.com。

致谢
1. 感谢Microsoft的Grace Francisco,没有她,Joomla在多数据库上的支持将不可能实现。
2. 感谢Joomla/OSM生产领导团队,特别是Mark、Louis和Sam。
3. 感谢我的开发团队和Joomla社区开发团队,特别是Elin。