it-swarm.cn

是否可以在WordPress中切换数据层?

WordPress使用插件无疑是非常可定制的,但每种定制的可能性肯定都有底层架构定义的限制。

对于那些熟悉WP架构和源代码的人:

自定义WP使用的数据层以使用其他数据存储(例如文件(或其他数据库系统)而不是MySQL?)所需的工作量是多少?在有可能切换图层的意义上,WordPress架构是否分层? UI层显然很容易切换(任何主题都这样做),但其他层,即数据层呢?

4
Marek

Wordpress是not设计为具有可替换的数据库层。计算机科学在不同的抽象层次上处理同一应用程序中的不同数据库有一些不同的概念,Wordpress不倾向于使用任何这样的。用更简单的词来说:完全没有。

但是wordpress提供了用其他代码替换它自己的代码的能力,例如整个数据库类。这并不总是(读取:正常)足以替换整个数据库层但有助于修补。替换 HyperDB 的WPDB类不会完全添加新的数据库层,而是处理多个MySQL服务器而不是一个,这是一个众所周知的例子(这被认为是不好的做法,使用PHP, 有更好的方法 ,但这是一个很好的例子可以做什么)。

在替换数据库类之后,Wordpress具有能力,可以替换更多代码,您可以完全更改它,例如创建一个自己的发行版,它可以自己处理有关数据库层的所有内容。

如果你想看一个关于如何替换整个数据库层的真实例子,那么为了让wordpress使用完全不同类型的数据库服务器(这里:MSSQL而不是硬编码的MySQL),你可以在这里找到完整的发行版和补丁:

SQL Server Distro&Patch上的WordPress

它是免费软件,您可以研究如何实现这样的数据库层,该网站也提供了有关该主题的更多信息。

提示:不要打Wordpress。坚持MySQL,就是这样。否则,寻找其他更好的设计,以满足您的需求。只需为工作选择合适的工具。

5
hakre

有可能:查看 HyperDB 替换wpdb。 HyperDB将分区和复制添加到WordPress。分区通过连接到多个数据库并使用表名来确定应运行查询的数据库。

最后,$wpdb只获取一个SQL查询,并且可以随意使用该查询中的数据执行所需操作。 HyperDB像原始的wpdb类一样查询MySQL。将其扩展到不同的数据库将需要在执行之前修改任何不符合要求的查询。如果您的数据存储根本不接受SQL,则必须将传入的查询转换为您正在使用的任何其他API。任何事都有可能有足够的时间和精力,但对我来说这听起来是一件非常悲惨的事。 ;)

2
Annika Backstrom

刚刚找到 这个Codex页面 ,它总结得很好,包括由开发WordPress的人提出和/或计划的解决方案的概述。让我们看看它是如何产生的。

0
Marek