我正在计划一个应用程序,并希望分别维护关系数据库和其他非关系,MySQL和MongoDB。
一个事实是,在关系数据库中维护用户,而非关系数据库由此用户生成内容维护,其中涉及地理位置查询。
现在的问题是如何* 使用两个数据库创建用户和项目之间的链接 *并保持性能或采用错误的方法?
我的想法是在非关系数据库的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的功能?
答案 0 :(得分:1)
我在一个正在工作的系统上工作。我们有关系数据库和NoSQL数据库,我们使用名为Mule(http://www.mulesoft.org/)的产品来集成它们。
我强烈建议选择MySQL或Mongo,并针对其中一个数据库执行所有PHP工作。您可以近乎实时地从MySQL-> Mongo或Mongo-> MySQL移动数据。骡子很擅长。
您无法跨系统有效地“加入”。
Mule还可以帮助您在移动数据时对数据进行转换。例如,您可以在MySQL中获取规范化数据并对其进行非规范化以便存储在Mongo中。
答案 1 :(得分:0)
我意识到我采用了复杂的架构,而我不需要太多的复杂性。我没有理由希望我的用户在关系数据库中。是的,他们可以毫无问题地留在MongoDB内,以及每个用户内的产品。这是我创造的一种关系。
如果需要,我可以使用_objectId
建立连接