我正在规划一个应用程序,并希望维护一个关系数据库和其他非关系,分别是MySQL和MongoDB。
一个事实是,在关系数据库中维护的都是用户,而非关系数据库中,维护的是这个用户生成的内容,其中涉及到地理查询。
现在的问题是如何*创建用户和您的项目之间的链接*s使用两个数据库和维护性能或我采用错误的方法?
我的想法是创建一个产品表,在mysql中使用外键,在数据库中使用objectId非关系的产品。
示例MySQL表:
table: products_relationship
| account_id | product_objectid |
| ---------- | -------------------------------- |
| 1 | 0b694fc34c9663883a5d4b32371f8333 |
| 1 | 0b694fc34c9663883a5d4b32371f9837 |
| 2 | 0b694fc34c9663883a5d4b32371f9bfc |
| 5 | 0b694fc34c9663883a5d4b32371fcb5f |
| 1 | 0b694fc34c9663883a5d4b32371fd809 |
因此,account_id = 1的用户有名字、电子邮件和其他数据。并拥有3个产品
我应该采用新的方法吗?这样我的表现就会提高吗?我是否因此失去了NoSQL的功能?
我工作中的一个系统就是这样做的。我们有关系数据库和NoSQL数据库,我们使用一个名为Mule (http://www.mulesoft.org/)的产品来集成它们。
我强烈建议选择MySQL或Mongo,并在其中一个数据库上完成所有PHP工作。你可以几乎实时地从MySQL->Mongo或从Mongo->MySQL移动数据。Mule很擅长这个。
你将无法有效地跨系统进行"连接"。
Mule还将帮助您在移动数据时对数据进行转换。例如,您可以在MySQL中获取规范化的数据,并将其反规范化以存储在Mongo中。
我意识到我采用了一个复杂的体系结构,而我并不需要太多的复杂性。我没有理由希望我的用户在关系数据库中。是的,它们可以留在MongoDB中,没有任何问题,每个用户的产品。这是我创建的关系。
如果我愿意,我可以使用_objectId