Symfony中SQL与NoSQL实体的关系

时间:2014-05-03 10:16:06

标签: mysql mongodb symfony doctrine model-associations

我在我的网页上使用symfony,我想在我的数据库模型中同时使用mongodbmysql,而且我不知道如何在我的sql和关于mongodb的文件 示例:PERSON - 关系1 - n - ADDRESS,其中PERSON是我mysql数据库上的表,ADDRESSmongodb上的文档{1}}。
可能吗?我该怎么做?谢谢。

1 个答案:

答案 0 :(得分:0)

如果你想拥有一个强大的关系,那就不可能。外键约束。这两个数据库永远不会立即了解彼此的数据,事务(!),范围等。您可以仔细编写同步这两者的代码。我发现一种简单可靠的方法:(作为参考,文档是NoSQL的数据块[NoSQL中的实体],而记录是SQL的数据项[SQL中的实体])

  1. 所有文件都是一条记录(或非交易安全)的子项。
  2. 所有交易均由SQL控制。
  3. 锁定记录以进行写入意味着锁定所有子文档。
  4. 更新文档需要锁定父记录。
  5. 一个NoSQL事务(如果该功能可用)嵌套在任何SQL transacion中。
  6. DB交叉引用是简单的数据;不要期望DB或Doctrine特别处理它们。
  7. 通过这种方式,两个数据库可以同步使用,相对安全地使用事务和锁定。