WordPress 将在核心底层直接支持 SQLite
我们知道 WordPress 是非常容易扩展的,可以通过二次开发来实现几乎所有网站的需求,比如:
- 单个落地页
- 只有几页的简单的公司网站,通常很少更新,但本质上是具有管理功能的静态站点。
- 简单的单用户博客
- 有点复杂的新闻网站
- 购物网站
- 全功能的 CMS 解决方案
因此 WordPress 应用越来越广泛,但是有个方面从未改变,就是数据库:WordPress 一直使用 MySQL 或 MariaDB 数据库。
WordPress 站点使用 MySQL 数据库一般会有两种选择,一是使用专有的 MySQL 服务器(RDS),会增加了网站的托管成本,二是在服务器上同时安装 PHP 和 MySQL,这样则会降低服务器的性能。
然后一些数量众多的小而简单的站点,比如个人博客和公司页面,这些站点没有数千名用户或几万篇的文章,他们几乎用不到 MySQL数据库的复杂功能。
数据库抽象层
在理想情况下,如果 WordPress 能够实现数据库抽象层的话,这样 WordPress 就可以使用任何类型的数据库。
数据库抽象层在很多 CMS 比如 Drupal 十多年前就实现了,其他 PHP 框架比如 Laravel 和 Symfony 也有允许使用多种数据库类型的 ORM。
但是目前来看,在 WordPress 中实现数据库抽象层是一项艰巨的任务,在短期来看有比较大的难度,不过在未来是可以被实现的。
实现 SQLite
作为过渡,可以先为中小型网站和博客提供一个使用 SQLite 的解决方案,因为这些站点不一定需要复杂的 MySQL 数据库,SQLite 可能是更完美的选择:
- 它是全球使用最广泛的数据库
- 它是跨平台的,可以在任何设备上运行
- 它默认包含在所有 PHP 安装中(除非明确禁用)
- 这样 WordPress 的最低要求只需要一个简单的 PHP 服务器,而不需要单独的数据库服务器。
- 支持 SQLite 可以降低服务器托管成本、降低能耗并降低低端服务器的性能成本。
在 WordPress 核心中实现 SQLite
目前在 WordPress 中使用 SQLite 很简单,8年前就有人实现了,并且经过全面测试证明可以和 WordPress 无缝工作,它是通过将 SQLite 版本的 db.php
文件放置到 wp-content/db.php
。
然而大多数人并不知道还可以这样操作,也不知道这样就可以选择没有 MySQL 的更便宜的主机,然后使用 SQLite 数据库安装 WordPress。毕竟对技术不是那么了解,他们只是想要一个简单的公司网站或博客。
所以 WordPress 官方准备通过在核心代码中加入现有的 SQLite 实现来正式支持 SQLite,并且确保得到完善的测试和支持,此外提供选项让用户知道这件事情。比如在安装的时候可以 SQLite 和 MySQL 二选一,或者在 in wp-config.php
中定义 DATABASE_TYPE 常量来实现。
为什么核心而不是插件?
使用哪种数据库一般来说应该是首次安装站点去选择,而不是安装好之后再去调整。安装好之后调整就需要将数据从一个数据库迁移到另一个数据库,这通常很复杂。
因此最好 WordPress 在核心代码中就支持 SQLite,和 MySQL 并存,让用户选择。如果用户要两种数据库之间的数据迁移,则可以通过插件来实现,但是数据库引擎本身应该属于 Core。
当然这个是 WordPress 官方目前的一个想法,如果真正要实现,还有很多步骤要去做,比如 wp-config.php
文件中 DATABASE_TYPE
的常量,移植到 WordPress Core 之后,编码规范,代码内文档,迁移测试等,还有使用 SQLite 测试 WordPress 核心功能,以及让插件开发人员测试等。
但是把 SQLite 加入 WordPress 核心还是一个非常棒的想法,拭目以待。