【问题标题】:why does wordpress serialize the data in the database?wordpress 为什么要序列化数据库中的数据?
【发布时间】:2015-07-22 12:11:12
【问题描述】:

好吧,我对 wordpress 编程还很陌生,并实现了它们的所有核心数据,并且插件数据总是被序列化的。这不会带走关系型数据库管理系统的关系方面吗?而且它甚至不节省空间,因为字符串大部分时间都太长了,而且以这种方式更难以缩放/修改数据......

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

【问题讨论】:

标签: php mysql wordpress serialization


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢你,你明白为什么与 lol 一起工作如此令人沮丧......而且 wordpress 已经存在了 10 多年,你会认为他们现在已经弄清楚了他们的核心数据结构。 ..
【解决方案2】:

序列化:

PHP 数组或对象或其他复杂的数据结构不能在运行的 PHP 脚本之外传输、存储或以其他方式使用。 如果您想在单次运行脚本之后持久化如此复杂的数据结构,则需要对其进行序列化。

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

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

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

序列化也有缺点,

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

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

【讨论】:

  • 您能探讨一下为什么在我的回答中投反对票吗?如果我的回答有什么问题,请解释一下。
【解决方案3】:

因为他们并没有真正改变架构师太多。这使其向后兼容旧版本的 WordPress,后者也兼容旧版本的 MySQL 和 PHP。

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

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

【讨论】:

    猜你喜欢
    • 2021-04-05
    • 2014-12-17
    • 2020-01-05
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 2020-08-11
    相关资源
    最近更新 更多