是否可以 运行 在 mongodb 上使用 16GB RAM 查询 200GB 数据?

Is it possible to run queries on 200GB data on mongodb with 16GB RAM?

我正在尝试运行一个简单的查询来查找具有特定值的所有记录的数量:

db.ColName.find({id_c:1201}).count()

我有 200GB 的数据。当我 运行 此查询时, mongodb 占用了所有 RAM,我的系统开始滞后。等了一个小时没结果就放弃了

这可能是什么问题,我该如何解决?

我相信 NoSQL 世界中的正确方法不是尝试执行那样的完整查询,而是超时累积统计信息。

例如,您应该有一个包含任意对象的集合 stats,这些对象应该拥有 kindid 属性 可以取像 "totalUserCount" 这样的值。每当您添加用户时,您也会更新此计数。

这样您将立即 获得结果。它只是在一小部分统计数据中获得 属性 值。

顺便说一句,这种缓慢应该是由您的集合中的非索引 属性 查询对象引起的。 Try to index id_c and probably you'll get quicker results.

MySQL、MSSQL 或具有给定硬件规格的 Oracle 可以轻松管理这些数据量。你不需要 NoSQL 数据库,NoSQL 数据库是为更大的存储需求而创建的,这实际上需要大量的硬件(RAM,硬盘)才能高效。

您需要定义一个索引来读取该 ID 并使用普通的 SQL 数据库。