【问题标题】:MySQL and Serialized Data, it's fine?MySQL 和序列化数据,可以吗?
【发布时间】:2013-08-01 00:57:18
【问题描述】:

目前我有一个拥有大约 600 名活跃会员的网站。我需要每周为每个人保留一份“历史记录”。

所以我每周为每个用户存储 11 行,这样表中就已经有 30,000 多行了。

我正在考虑用这 11 条记录序列化一个 php 数组并将它们保存在一行中,以加快搜索速度并节省空间。

不知道好不好用,比如我看到Wordpress就是用这种方法的。

【问题讨论】:

  • 看起来任何使数据变小的东西在这里都有帮助,所以为什么不呢。我个人会将数据存储在 JSON 中,因此您不需要依赖 PHP 的序列化,并且如果需要它更易于人类阅读。
  • 我不会这样做。随着时间的推移,您序列化的数据可能会发生变化,并且可能难以使用序列化数据的变化。也许考虑使用其他一些可能更适合大数据转储的存储(不是 mysql)
  • 我正在考虑使用这种方法,因为数据不会改变,我只是找到行并将其显示在 php 页面上。没事吧?

标签: php mysql serialization


【解决方案1】:

将序列化数据存储在数据库中很好,但是您无法使用 SQL 逻辑对该序列化数据的单个记录或字段执行任何操作。

基本上它变成了一个“黑盒子”,或者换句话说,SQL 无法处理的不可简化的数据块,除了将整个块返回给应用程序。 IE。任何读取都会读取整个 blob,任何更新都必须替换整个 blob。

这不一定是坏事——这取决于您如何使用这些数据。如果您的应用每次访问它时读取或写入整个 blob 是正常的,并且您不需要在 SQL 表达式中引用它的各个字段,那么您不妨序列化数据。

【讨论】:

  • 我知道这会变成一个“黑匣子”,但我正在考虑使用这种方法,因为数据不会改变,我只是找到行并将其显示在 php 页面上。 (对不起我的拼写)
【解决方案2】:

存储序列化数据的困难在于发生奇怪事件并且需要任意数据拉取时。您将需要一个可以处理该数据的 php 脚本/应用程序。

JSON 编码的字符串更容易处理,因为您实际上可以在浏览器上的 javascript 提示符中对其进行解码。

【讨论】:

    猜你喜欢
    • 2011-06-19
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    相关资源
    最近更新 更多