在http://www.rethinkdb.com/docs/data-modeling/,状态:
由于前面的限制,最好将帖子数组的大小保持在不超过几百个文档。
如果我打算保留 90 天(3 个月)的统计数据,那么每个日期可能都有一个包含大约 10 个区域的嵌入式数组。这意味着 90*10=900。900 不完全是几百。
然而,MongoDB 关系中的一个相关问题:嵌入还是引用?建议 MongoDB 有 16mb 的限制,这意味着能够将 3000 万条推文或大约 250,000 个典型的 Stackoverflow 问题作为嵌入式文档托管。好多啊!
但是,那是 MongoDB。RethinkDB 每个文档的大小限制为 10mb。这应该还是相当高的。RethinkDB 的文档可能存在缺陷。或者还有另一个具体原因(未解释)为什么 Rethinkdb 建议只将其保持在几百个嵌入式阵列,即使 10mb 显然可以容纳更多。
我所指的架构的粗略概念:
DailyStat::Campaign
[
{
id: '32141241dkfjhjksdlf',
days_remaining: 26,
status: 'running',
dates: [
{
date: 20130926,
delivered: 1,
failed: 1,
clicked: 1,
top_regions: [
{ region_name: 'Asia', views: 10 },
{ region_name: 'America', views: 10 },
{ region_name: 'Europe', views: 10 },
{ region_name: 'Africa', views: 10 },
{ region_name: 'South East Asia', views: 10 },
{ region_name: 'South America', views: 10 },
{ region_name: 'Northern Europe', views: 10 },
{ region_name: 'Middle East', views: 10 }
]
},
{
date: 20130927,
delivered: 1,
failed: 1,
clicked: 1,
top_regions: [
{ region_name: 'Asia', views: 10 },
{ region_name: 'America', views: 10 },
{ region_name: 'Europe', views: 10 },
{ region_name: 'Africa', views: 10 },
{ region_name: 'South East Asia', views: 10 },
{ region_name: 'South America', views: 10 },
{ region_name: 'Northern Europe', views: 10 },
{ region_name: 'Middle East', views: 10 }
]
},
...
]
}
]