Sql 用于报告外部数据库的MongoDB

Sql 用于报告外部数据库的MongoDB,sql,mongodb,mongodb-query,Sql,Mongodb,Mongodb Query,我开始使用MongoDB进行报告/分析。我目前有一个使用SQL Server存储所有信息的系统。问题是我不知道是否应该将用户可编辑信息存储在MongoDB数据库中 例如,我可以存储如下信息: [ { user: {id: 123, name:"John Smith"}, login_count: 5} { user: {id: 564, name:"Mike Doe"}, login_count: 3} { user: {id: 678, name:"Mary Torre

我开始使用MongoDB进行报告/分析。我目前有一个使用SQL Server存储所有信息的系统。问题是我不知道是否应该将用户可编辑信息存储在MongoDB数据库中

例如,我可以存储如下信息:

[
    { user: {id: 123, name:"John Smith"}, login_count: 5}
    { user: {id: 564, name:"Mike Doe"}, login_count: 3}
    { user: {id: 678, name:"Mary Torres"}, login_count: 1}
]
因此,如果我想运行一个报告来列出“登录次数最多的用户”,这很容易,因为我有他们的名字。但是,如果用户名被更改,我需要更新NoSQL数据库中所有非规范化的数据。如果我只存储ID,那么更新用户名就没有问题,但是当我想显示报告时,我也必须查询SQL Server数据库

您将如何处理此问题?

您可以使用或手动参考:

您首先需要存储用户信息:

db.user.insert({id: 123, name:"John", "lastName":"Smith"})
db.user.insert({id: 564, name:"Mike", "lastName":"Doe"})
db.user.insert({id: 678, name:"Mary", "lastName":"Torres"})
而在集合中登录只需要来自用户集合的id

[
    { user: 123, login_count: 5},
    { user: 564, login_count: 3},
    { user: 678, login_count: 1}
]
但是你需要用户名

flag=db.svlogin.find({"field.login_count":5})
user=db.user.find({"_id":flag[0]['user']})
print user[0]
...
{id: 123, name:"John", "lastName":"Smith"}
在本例中,我使用Python。。。。
记住,MongoDB不是RDBMS数据库…

根据我的经验,最好将用户可编辑的相对静态信息存储在SQL server中,将事务数据存储在MongoDB中。Mongo的分析工具已经取得了一些进步,因此我希望尝试解决将用户可编辑数据与ID混合的问题,以便向上报告,而不是在数据库本身中


例如,有一家名为的公司允许您混合MongoDB数据和SQL Server数据,并为报表和仪表板创建虚拟数据集。对于您的用例,您只需要在MongoDB集合和SQL Server表中都存在一个公共字段(ID?),这样您就可以加入数据。我以前在类似的用例中使用过它们,即使使用联接,查询性能也很好。

问题是否基于给定的用户ID后面有许多重复字段(地址、电话号码等)?而对我来说,名字似乎与id有很大的关系。是的,我想在报告中显示很多与id相关的信息。问题是我应该将这些信息放在mongo中,还是只将Id放在那里并将信息保存在SQL Server中。我不会混合使用两个db引擎,我会使用mongo或SQL Server,我的决策观点是:如果负载可能会超过SQL Server的容量,那么mongo将使用SQL Server。有一些最佳实践,其中可能有一个能够在mongo中设计一个数据模型,这样您就不必面对这样一个问题,即多次存储数据,并且会出现不一致性问题。他们在线提供的培训中包括了这一点:。如果您提供您的模型,我们也可以提出建议。