Database/Code 动态数据模型解决方案,使用 Symfony 2 和 Doctrine

Database/Code solutions for model with dynamic data, using Symfony 2 with Doctrine

我正在使用 Symfony2 和 Doctrine 制作一个应用程序,我遇到了一个我一直想知道但直到今天才成为问题的问题:如何处理动态数据?

在我正在开发的应用程序中,将有一些数据可能是相关的,关系数据库功能可能对其有用,而其他数据的结构可以是动态的,我不关心查询和索引,只要它存储并链接到其他关系数据,例如:

最好的例子就是和Drupal做个对比,你可以创建自己的内容类型,在每个内容类型里面定义字段(但是某个类型的所有内容都有相同的数据,即使它可以在不更改代码的情况下进行动态更改)

虽然我不想使用 drupal,但我想到的应用程序对于 drupal 来说太复杂了(可能需要 - 很多 - 的调整, -很多-模块和一些代码编辑,我宁愿避免,我可能会得到与drupal类似的结果,但我宁愿使用Symfony从头开始,而不是让Drupal屈服于我的意志,只是想到那个让我不寒而栗)。

回到问题。我已经开始研究这个问题,并且我正在考虑像 MongoDB 这样的 NO-SQL 解决方案,但是在阅读了一下之后我觉得我需要一些指导,特别是当我结束时我的研究读到这个 ​​http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongodb/ 后,我有点害怕。 我还没有结束我的研究,但是这个 post 真的让我有点失望,让我决定提前在这里问一下,希望也许有人已经遇到过这个问题并找到了一个有效且经过良好测试的解决方案(我想使用它而不是自己制作一个未经测试的)。该问题可以分为两部分:

1) 数据库

我想出的解决方案是:

  1. 关系数据库(MySQL 或 Postgres,我正在考虑 第二,因为它有 json 支持)其中 tables 具有动态内容 有一个 text/longtext/json (在 Postgres 的情况下)包含的字段 包含数据的 json 对象
  2. 类似 Drupal 的解决方案,其中每个字段都映射到一个新的 table(我 不喜欢它,但为了完整起见我添加了它)
  3. 混合解决方案:关系数据库中的关系数据,动态 带有字段的 NO-SQL 数据库中的数据(例如,user_id,外键 喜欢)连接两个东西
  4. Full No-SQL 解决方案:只需使用 MongoDB(但我想放心 关于上面 post 中提到的问题)或其他问题...我愿意接受建议(只要它们可以与 symfony 和学说一起使用)

2) 代码

我还没有研究太多代码部分,因为它必须适应我将使用的数据库解决方案,但我知道 Doctrine 有一个 ODM 来处理来自 MongoDB 数据库的数据.我不知道是否可以同时使用 ORM 和 ODM 并让它们进行通信,但我会研究一下。
在#1 的情况下应该不难,Doctrine 将为数据创建一个数组,我将能够通过函数检索。
我可能遇到的另一个问题是关于这些数据的表格,但我还没有调查过

我知道 Symfony 2 CMF 项目,我可能会从中得到一些想法 http://cmf.symfony.com/ 但是环顾四周后,我觉得我需要一些关于这个问题的指导

所以我一直在搜索,我发现了这个:Mix of MySQL and Mongodb in an application hstore 字段引起了我的兴趣。
进一步看,我发现了一个扩展,可以在 Doctrine 和 Symfony https://github.com/intaro/hstore-extension 上添加 hstore 支持,看起来这正是我所需要的。

我可以使用 JSONB(仍然来自 Postgres),它看起来是一个非常强大的动态模型工具,它的支持很快就会在 Doctrine 中引入,我可以等到那时