最近在看symfony2 mongodb文档,感觉在使用上有些疑惑。
mongodb有类似于mysql orm的odm one-to-one、one-to-many、many-to-many的关系映射,使用起来也比较方便。
但是如果结合使用mysql和mongodb,从mysql取出mongodb的数据,按照doctrine one-to-one官方文档需要通过订阅器,LifecycleEventArgs事件将mysql和mongodb关联。
而one-to-many、many-to-many就没有详细例子了。后来发现,使用one-to-many、many-to-many的时候需要在mysql和mongodb中产生一张中间表,在通过LifecycleEventArgs事件,使中间表成为mysql和mongodb通信的桥梁
那么对于这张中间表的维护,操作起来比较麻烦,比如删除mongodb的数据,那么也必须更新中间表。另外如果两个数据库关联的表很多,那中间表岂不也很多??
对于smyfony2将MySQL和mongodb组合使用。建议单一使用一种数据库为好???如果将两者组合使用,存放的数据必须依赖性不强???既然那样那么doctrine官网组合使用mysql和mongodb感觉是不是有些累赘??
要简单可靠肯定是应该将各业务分别放到单一的存储里;Doctrine提供了跨类型存储的面对对象操作界面,并不是说推荐这么做。
既然都已经在不同的存储里了,用API来操作是比较合适的。