带有动态数据的模型的数据库/代码解决方案,使用Symfony 2和Doctrine

时间:2015-05-14 16:03:56

标签: database symfony model doctrine nosql

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

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

  • 用户通过“友谊”关系链接到其他用户
  • 用户可以创建哪些字段可以以动态方式更改 类型方面,它们必须链接到创建它们的用户

制作示例的最佳方法是将其与Drupal进行比较,您可以在其中创建自己的内容类型并定义每种内容类型中的字段(但某种类型的所有内容都具有相同的数据,即使它可以在不改变代码的情况下进行动态改变)

我不想使用drupal,我想到的应用程序对于drupal来说太复杂了(可能有 - 很多 - 调整, - a很多 - 模块和一些代码编辑,我宁愿避免,我可能会得到与drupal类似的结果,但我宁愿从头开始使用Symfony而不是将Drupal弯曲到我的意志,只是想到这让我发抖)。

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

1)数据库

我提出的解决方案依旧是:

  1. 关系数据库(MySQL或Postgres,我正在思考 第二,因为它有json支持)其中表具有动态内容 有一个text / longtext / json(在Postgres的情况下)字段包含 包含数据的json对象
  2. 类似Drupal的解决方案,其中每个字段都映射到一个新表(I 不喜欢它,但我是为了完整而添加它)
  3. 混合解决方案:关系数据库中的关系数据,动态的 带有字段的NO-SQL数据库中的数据(例如,user_id,外键 喜欢)连接两件事
  4. 完全无SQL解决方案:只使用MongoDB(但我想放心 关于上面帖子中提到的问题),或其他什么......我愿意接受建议(只要它们可以与symfony和doctrine一起使用)
  5. 2)代码

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

    我知道Symfony 2 CMF项目,我可能会从http://cmf.symfony.com/得到一些想法但是在看了一下之后我觉得我需要一些关于这个问题的指示

1 个答案:

答案 0 :(得分:1)

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

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