首页 » MongoDB实战 » MongoDB实战全文在线阅读

《MongoDB实战》1.5 提示与局限

关灯直达底部

有了这些优良的特性,你还需要牢记系统舍弃的特性与局限。在使用MonogDB构建真实的应用程序并用于生产环境之前,应该注意一些局限,它们大多数都是由于MongoDB使用内存映射文件(memory-mapped file)而导致的。

首先,MongoDB通常应该运行于64位的机器上。32位系统只能对4 GB内存做寻址。要知道,一般半数的内存都会被操作系统和程序进程占用,就只剩2 GB内存能用来映射数据文件。因此,如果运行在32位的服务器上,还定义了适当数量的索引,那么数据文件只能被限制在1.5 GB。大多数生产环境系统的要求都高很多,因此一个64位的系统是必需的。1

1. 理论上来说,64位的架构可以寻址16艾字节(exabyte)内存,无论想做什么都不会再受到限制。

使用虚拟内存映射的第二个后果是,数据占用的内存会自动按需分配。这样一来,想在共享环境中运行数据库会变得更加麻烦。要把MongoDB用于数据库服务器,最好是能让它运行在一台专门的服务器上。

最后,运行带复制功能的MongoDB是十分重要的,尤其是没有开启Journaling日志的时候。因为MongoDB使用了内存映射文件,不开启Journaling日志的话,mongod发生任何意外关闭都会导致数据损坏。因此,这时最好能有一个备份以做故障转移。对任何数据库而言这都是个不错的建议(重要的MySQL部署不做复制是很轻率的举动),这对没有Journaling日志的MongoDB尤为重要。