我在php.net中遇到了一条关于序列化数据以便将其保存到数据库中的有趣评论。
它说:
请!请!请!不要序列化数据并将其放入数据库中。可以以这种方式使用序列化,但这缺少关系数据库的要点和数据库引擎中固有的数据类型。这样做会使数据库中的数据不可移植、难以阅读,并且会使查询复杂化。如果您希望您的应用程序可移植到其他语言,例如假设您发现您想在应用程序的某些部分使用 Java,而在其中使用 Java 是有意义的,那么序列化将成为一件令人头疼的事情。您应该始终能够查询和修改数据库中的数据,而无需使用第三方中介工具来操作要插入的数据。
我在职业生涯中遇到过太多次了,这导致代码难以维护,代码存在可移植性问题,数据更难迁移到其他 RDMS 系统、新模式等。它还有一个额外的缺点使根据您已序列化的字段之一搜索数据库变得混乱。
这并不是说 serialize() 没用。这不是... 一个使用它的好地方可能是一个缓存文件,其中包含数据密集型操作的结果,例如。还有很多其他的......只是不要滥用序列化,因为下一个出现的人将面临维护或迁移的噩梦。
我想知道这是否是关于将数据序列化用于数据库目的的标准视图。这意味着有时使用它是否是一种好习惯,或者是否应该避免使用它。
例如,最近有人指示我自己使用序列化。
在这种情况下,我们必须保存到 MySQL 表中的数据如下:
- 汽车品牌。
- 汽车模型。
- 车版。
- 汽车信息。
Car info 是一个数组,表示一个版本的所有属性,因此它是大量可变的属性(少于 100 个属性)。该数组是要序列化的数组。
为了使用序列化,我得到的主要原因如下:
作为大量字段,最好将数据序列化以提高性能,而不是为每个属性或多个表创建一个字段。
就我个人而言,我更同意 php.net 中的评论而不是最后的断言,但我想在这里发表比我更多的合格意见。