Database design MongoDB分析模式

Database design MongoDB分析模式,database-design,mongodb,Database Design,Mongodb,Mongo新手,接受分析任务,有一个模式问题 我来自SQL server,在那里我有4个表 stats_landing_table ------------------- id post_id visit_date country browser impressions stats_geo_table --------------- id post_id date country country_count stats_browser_table ------------------- id

Mongo新手,接受分析任务,有一个模式问题

我来自SQL server,在那里我有4个表

stats_landing_table
-------------------
id
post_id
visit_date
country
browser
impressions

stats_geo_table
---------------
id
post_id
date
country
country_count

stats_browser_table
-------------------
id
post_id
date
browser
browser_count

stats_impressions_table
-----------------------
id
post_id
date
impression_count
对于登录表,我每次都会将所有数据放入其中,没有更新,只是插入。在那里,我有一个触发器,它查看其他表并执行适当的更新或插入,然后从登录表中删除条目

因此,我需要快速插入/更新,能够返回并基于整个时间范围或特定时间范围显示关于帖子中每个属性(国家、浏览器、印象等)的报告

对于Mongo,问题在于我是否应该嵌入或拥有单独的文档,或者我猜是一个完全不同的模式。如果我嵌入,我将试图找出如何更新浏览器表之类的内容,同时仍在检查国家和更新印象。听起来我需要对每件事进行单独的更新(比如,这个vistor使用的是来自德国的firefox,而这个是来自芬兰的firefox——从我看到的情况来看,不能在一个查询中完成)。另一种选择是编写不同的文档,但这是同一个问题——我需要对每个集合进行更新——与SQL server单次调用相比,网络流量很大


我愿意接受任何关于如何设计这样的东西的建议,它允许快速性能更新/插入,同时仍然允许报告。

从我对这种情况的理解来看,这三个表是汇总表,其中一天的独特组合,然后统计post_id和浏览器或国家/地区的给定指标

我会一起跳过insert表,因为您今天没有保留它,而是或多或少地将它用作队列

使用MongoDB,写入操作将全部写入内存,因此速度非常快。它也可以异步完成(激发并忘记它样式)

我将为每个唯一的日期和邮政id创建一个新文档。它将有两个数组,一个用于浏览器,另一个用于键为国家代码或浏览器且值为计数的国家。该文档还将有一个用于印象计数的字段

每次访问都会更新一份文档,并且很容易查询

更新将使用原子运算符“$inc”在服务器上以原子方式递增计数,因此不需要拉入数据来执行更新。传输的数据量将非常小


这回答了问题吗?

可能会看一个nosql教程,关注嵌入的和规范化的文档(表)。这实际上就是我最终要做的。