mysql - 在应用程序中混合使用 MySQL 和 Mongodb

标签 mysql mongodb doctrine-orm nosql

我正在使用 PHP/Symfony2/Doctrine2 编写一个 Web 应用程序,并且刚刚完成数据库的设计。我们必须将这些来自不同领域的不同客户的对象(例如项目、供应商)导入到我们的数据库中。有些客户在项目对象中有 2 个字段,有些客户有 20 个字段。所以我正在考虑在 MongoDB 中实现它们,因为它似乎很有用。

Symfony2同时支持ORM和ODM,所以这应该不是问题,现在我的问题是如何确保两个数据库中数据的完整性。因为我的 MySQL 数据库中的对象需要以某种方式链接到 MongoDB 中的对象以解决完整性问题。

有没有更好的解决方案?任何帮助/想法将不胜感激

最佳答案

Bulat我们在 OpenSky 时实现了 Doctrine 扩展,用于处理 MongoDB 文档和 MySQL 记录之间的引用,该扩展目前位于他们的(诚然已经过时)fork 中。 DoctrineExtensions的项目。您需要查看 orm2odm_referencesopenskyfork 分支。为了使其在您的项目中可用,您可能希望将其移植到 DoctrineExtensions 的新分支,或者只是将代码合并到您的应用程序中。不幸的是,除了代码本身之外没有任何文档。

值得庆幸的是,还有cookbook article在 Doctrine 网站上描述了如何从头开始实现这一点。基本上,您依靠事件监听器将您的属性替换为来自其他对象管理器的引用(即未初始化的 Proxy 对象),而 Proxy 对象延迟加载自身的自然行为会处理其余的事情。如果事件监听器是一个服务,您可以轻松地将 ORM 和 ODM 对象管理器注入(inject)其中。

此模型保证的唯一完整性是,当您尝试合并错误引用时,您将收到异常,这可能比简单存储其他数据库的 ID 并手动查询得到的要多。

关于mysql - 在应用程序中混合使用 MySQL 和 Mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11368219/

相关文章:

mongodb - 如何使用 Mongodb 聚合框架从起始索引开始切片数组?

java - Mongodb Java 查询日期范围

mysql - 无模式财务数据和 NoSQL?

php - 实体的 Doctrine2 动态表名

PHP MySQL 将调查答案插入表中

java - 将 Java .war 应用程序部署到 digital ocean Ubuntu

php - Doctrine :渴望加载懒惰关系的关系?

php - 如何恢复根节点

java - 将 MySQL ID 与 JTable 行同步

mysql - 在 MySQL 中创建表