PHP:序列化对象并将它们粘贴到数据库中以备后用是不是糟糕的设计?

标签 php orm mongodb doctrine-orm mongodb-php

我正在计划和研究我现在从 MySQL 到 MongoDB 的转换,我刚刚有一个有趣的想法......我有一堆分层对象需要存储在数据库中。我目前的方法是在一个集合中放置一堆嵌入式文档。他们永远不需要被搜索。仅序列化 PHP 对象,将它们粘贴到数据库中,然后在我想使用它们时将它们反序列化回 PHP 对象是否有意义?另一种方法是使用 Doctrine 作为我的 ORM。

我的编程直觉告诉我这是糟糕的设计并且有局限性,但我觉得序列化和反序列化会非常快并且消除了对 ORM 的需要。

你怎么看?好设计还是坏设计?

最佳答案

在许多情况下,这会被认为是糟糕的设计,但如果满足以下所有条件,它可能会起作用:

  1. 你不需要搜索它们
  2. 您可以接受(可能)有限的查询能力
  3. 您不需要关系完整性或 RDBMS 强制执行的其他约束
  4. 你知道你永远不需要用不同的语言阅读它们
  5. 您有信心在更新类定义时知道如何正确地反序列化、版本化和迁移它们
  6. 您确信 PHP 序列化格式在各个版本中都是稳定的(或者您愿意编写迁移代码,或者这是一个短期项目而您不关心)
  7. 您愿意接受较小的性能损失(SELECT + deserialize() 将比 SELECT 慢)

关于PHP:序列化对象并将它们粘贴到数据库中以备后用是不是糟糕的设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4894041/

相关文章:

mongodb - 将某种行号添加到 mongodb 聚合命令/管道

php - 修改 SQL 查询以返回用户自己的帖子?

pdf - 如何在使用 PHP 输出 HTML 时在 HTML 中设置函数

java - 解决方法/摆脱 OneToMany 和 ManyToOne 关系中的多个可写映射?

sql - 忽略 Django ORM 查询中的基本模型

json - 有没有更好的方法将 Rust BSON 文档直接转换为 JSON?

php - 在 tcpdf 中使用多种字体

php 将 id 或传递对象传递给函数以获得更好的内存使用

java - JPA 和 Hibernate 中的 N+1 问题的解决方案是什么?

c# - MongoDB C# 驱动程序获取速度快(1) 但速度慢(2)