【问题标题】:Is it faster to use XML or Serialize() saving data to a DB in PHP?使用 XML 或 Serialize() 将数据保存到 PHP 中的数据库是否更快?
【发布时间】:2011-09-25 04:14:16
【问题描述】:

我有一个项目需要大量定制。

因此,我正在寻找一种在运行时最快(或接近最快)的方法,并且还可以保持坚如磐石的稳定性以保存可变数量的自定义字段。

例如:

这两个位置保存相同的 2 个数据字段。

在位置 #1,这两个字段必须以 number_format($num, 3) 格式返回,而在位置 #2 相同的两个字段是文本字段,不需要格式化。

我正在尝试找到保存/检索这些字段格式的最佳(如上所述)方法。

目前我倾向于保存 XML 和 serialize(),但在运行时,为了优化速度,我只会轮询 serialize() 数据。这种方法可以减轻我对serialize() 数据中数据损坏的担忧,因为我可以在必要时手动解析 XML 文档中的数据。

注意:我只关心如何 操作用于查看的字段,而不是实际存储数据 在那些领域。

我个人宁愿不必将这些自定义数据作为原始文件保存在服务器上,因为这是数据库的用途,而且每个位置的自定义数据会相当小(最多 40-50 个字段)。

【问题讨论】:

  • 对您最终可能会在表格中保存此 xml 的行数有多少估计?
  • @Windle 这个特殊的表应该最多有 1000 行左右,但它会是一个非常频繁使用的表。该表有 20 列,其中 8 列由于相关表中的外键而被索引。
  • 我不确定我是否完全理解您的问题,但是在 1000 行中,您应该可以将数据存储为 xml 或序列化并放入更合适的表结构中。使用 XML 的那几行,您应该不会看到明显的性能损失。就是说,不要把序列化的数据存成XML,以后自找麻烦。你最好有一个可靠的数据库设计,然后格式化你提取的数据以供显示。
  • 您最好注意@Windle 的建议,因为您确实是在自找麻烦。 :)
  • @Windle 我不是在问数据库对性能的影响,两者的大小差异可以忽略不计。我担心影响解析数据。

标签: php xml serialization customization


【解决方案1】:

与 XML 相比,序列化的值不容易被人类阅读(和编辑)。但是存在解析序列化数据的工具,例如Serialized PHP library

另一方面,序列化的值可以很容易地读回到变量中,这比使用 XML 容易得多。对于 XML 您需要创建一个能够将变量转换为 XML 并返回的“序列化程序”。 PEAR 中有一个 (XML_Serializer),还有一个 XML Serializer is available in Symfony2

通常最好不要在数据库中创建数据库。如果需要,请确保您以后可以轻松地更改它,而无需过多地更改您的应用程序设计。

【讨论】:

    猜你喜欢
    • 2011-08-28
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 2012-08-13
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    相关资源
    最近更新 更多