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

Rez*_*a S 10 mysql mongodb nosql doctrine-orm

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

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

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

jmi*_*ola 9

当我们在OpenSky处理MongoDB文档和MySQL记录之间的引用时,Bulat实现了一个Doctrine扩展,这些文档目前正处于DoctrineExtensions项目的(过时的)分支中.你会想要看看或分支.为了在项目中使用它,您可能希望将它移植到DoctrineExtensions的新分支,或者只是将代码合并到您的应用程序中.不幸的是,除了代码本身之外,没有任何文档.orm2odm_referencesopenskyfork

值得庆幸的是,Doctrine网站上还有一篇关于如何从头开始实现这一目的的食谱文章.基本上,您依靠一个事件监听器来替换您的属性与另一个对象管理器的引用(即未初始化的Proxy对象),并且Proxy对象的自然行为可以懒惰地加载自己负责其余的事务.如果事件侦听器是一项服务,您可以轻松地将ORM和ODM对象管理器注入其中.

此模型保证的唯一完整性是,在尝试补充错误引用时会收到异常,这可能比通过简单地存储其他数据库的ID并手动查询而获得的更多.

  • 这个博客实际上描述了它是如何实现的:http://jwage.com/2010/08/25/blending-the-doctrine-orm-and-mongodb-odm/谢谢! (2认同)