Chr*_*ini 4 mongodb nosql rethinkdb rethinkdb-ruby
在http://www.rethinkdb.com/docs/data-modeling/,声明:
由于之前的限制,最好将posts数组的大小保持为不超过几百个文档.
如果我打算保留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 }
]
},
...
]
}
]
Run Code Online (Sandbox Code Playgroud)
简短回答:
该帖子指的是每个嵌入式阵列的大小,而不是它们大小的总和.所以在你的情况下,大小只有10,这肯定会很好.
更长的anser:
在文档中拥有一个大型嵌套数组的问题(实际上只是一个大型文档,对于数组没有什么特别之处)就是如果你需要更新它会使它变慢.RethinkDB现在不进行部分更新,因此无论何时想要更新文档,都需要读取整个磁盘并将整个内容写入磁盘.同样,如果您经常阅读文档但只关心其中的一小部分,这可能会成为一个问题.例如,如果您在文档中有一个非常大的数组,而且还有一个小字段,那么每次尝试读取小字段时都需要经常读取它,您将支付读取大数组的代价.
| 归档时间: |
|
| 查看次数: |
838 次 |
| 最近记录: |