我正在计划和研究我现在从 MySQL 到 MongoDB 的转换,我刚刚有一个有趣的想法......我有一堆分层对象需要存储在数据库中。我目前的方法是在一个集合中放置一堆嵌入式文档。他们永远不需要被搜索。仅序列化 PHP 对象,将它们粘贴到数据库中,然后在我想使用它们时将它们反序列化回 PHP 对象是否有意义?另一种方法是使用 Doctrine 作为我的 ORM。
我的编程直觉告诉我这是糟糕的设计并且有局限性,但我觉得序列化和反序列化会非常快并且消除了对 ORM 的需要。
你怎么看?好设计还是坏设计?
最佳答案
在许多情况下,这会被认为是糟糕的设计,但如果满足以下所有条件,它可能会起作用:
- 你不需要搜索它们
- 您可以接受(可能)有限的查询能力
- 您不需要关系完整性或 RDBMS 强制执行的其他约束
- 你知道你永远不需要用不同的语言阅读它们
- 您有信心在更新类定义时知道如何正确地反序列化、版本化和迁移它们
- 您确信 PHP 序列化格式在各个版本中都是稳定的(或者您愿意编写迁移代码,或者这是一个短期项目而您不关心)
- 您愿意接受较小的性能损失(
SELECT
+deserialize()
将比SELECT
慢)
关于PHP:序列化对象并将它们粘贴到数据库中以备后用是不是糟糕的设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4894041/