为什么wordpress要序列化数据库中的数据?

why does wordpress serialize the data in the database?

好吧,我对 wordpress 编程还很陌生,并了解了他们所有的核心数据,插件数据总是序列化的。这不会脱离 RDBMS 的关系方面吗?而且它甚至不保存 space 因为大多数时候字符串太长了,而且这样 scale/modify 数据更难...

我不明白他们为什么决定这样做,我也没有在网上找到任何关于他们为什么要这样做的参考资料。

显然,因为我不是 Wordpress 的开发人员,所以我不知道他们的确切原因。

但也许他们得出了和我一样的结论:

有时候,这是不值得的。有时,您只想存储一些数据。有时,除了将数据发送回处理代码之外,数据库永远不会对该数据做任何事情。在这种情况下,当数据永远不会与数据库中的任何其他内容相关时,当您只需要数据转储时,为什么还要费心设计关系数据库?

这是个好主意吗?可能不是,它是一种懒惰的方法,只在您需要时才起作用,而不会大惊小怪。但是,如果我发现你使用 MySQL 尝试处理序列化列中的数据,我将禁止你上网。

序列化:

PHP 数组或对象或其他复杂数据结构无法在 运行ning PHP 脚本之外传输或存储或以其他方式使用。 如果您想在单个 运行 脚本之外保留如此复杂的数据结构,则需要对其进行序列化。

WordPress 核心插件和第三方插件通常将数组或对象序列化,作为在 WordPress 数据库中存储结构化数据的一种方式。

数据序列化以提高数据库的性能或效率。不是为数据创建一个新的 table, 或将数据存储在 table 中,这最终可能会产生浪费的空字段,您可以将所有数据保存在一个字段中的数组中。 这导致保存 space 和简化的 SQL 语句。使用 PHP 的 serialize() 和 unserialize() 函数存储和恢复序列化数据。

我认为序列化数据是 wordpress 的一项功能,开发人员可以在其中存储数据并增强功能,而无需花费更多 space 和精力,并使用到最终级别。

序列化有缺点,

您不能 运行 对序列化数据进行 MySQL 查询。 数据必须通过 PHP 从 table 中拉出,反序列化,然后使用 PHP 而不是 MySQL

进行搜索

在数据可移植性中你不能做简单的搜索和替换过程和更改站点 URL 由小部件或插件存储,最好使用 WordPress Search and Replace Tool or WP Migrate DB 来完成由序列化过程存储的数据迁移.

因为他们并没有真正对架构师进行太多改动。这使得它向后兼容旧版本的 WordPress,旧版本的 WordPress 也兼容旧版本的 MySQL 和 PHP.

作为一名在许多不同的 CMS 和 MVC 框架方面拥有丰富经验的长期开发人员,我可以说他们在使用序列化数据方面是白痴,应该使用 JSON。

这是一个很糟糕的决定,但也值得尊重