使用大数据量的collection

使用大数据量的collection.

在MongoDB存储信息用多个collection来替代一个collection。这样做每个重复的数据不必存在每个对象中,
并且也不必再这个键上创建索引了。更重要的是性能,可以通过指定组来分布数据。
 
举个例子,假使我们要存储日志。并且有N种类型,如dev,debug,ops等。我们用一个collection来存储。
{log : 'dev', ts : ..., info : ...}

我们现在把这个collection按照类型进行拆分。  'logs.dev' collection, a 'logs.debug' collection, 'logs.ops', 等.:

// logs.dev:
{ts : ..., info : ...}
 
当然,如果我们不需要同时查询多个日志,这么做是有意义的。
一般来说,数量较大的collection不会有显著的性能缺陷。

限制

默认的情况下,MongoDB的每个数据库有24000左右命名空间的限制。
每个命名空间有628字节。.nsfile默认为16MB。
 
每个collection以及索引都算作namespace。因此如果每个collection有一个索引,
我们能创建12000个collection。
--nssize允许提升这个限制。
 
小心的是每个collection都会占用一些存储-很少的KB。更近一步说,任何的索引都需要至少8KB的数据空间,
也就意味着每个b-tree page大小为8KB.
如果有很多collection以及元数据经常要页输出,会导致核心的操作速度变慢。

 

--nssize

 
如果需要更多的collection,运行mongod --nssize参数。这个参数会让.ns文件更大,
支持更多的collection。注意的是 --nssize 用于最新创建数据库。如果你运行在一个存在的数据库,
希望重新定义大小,那么在运行--nssize之后,要运行db.repairDatabase()命令来调整大小。

.ns 文件最大为 2GB.

猜你喜欢

转载自zh-ka-163-com.iteye.com/blog/2255642