MongoDB关于notablescan选项的提案

MongoDB关于notablescan选项的提案,mongodb,Mongodb,我是mongo的忠实用户 我发出这张罚单是出于对即将到来的危机的强烈感觉,我想知道其他人是如何看待这一点的 本提案涉及notablescan选项的功能 这不是针对编程人员的,而是针对mongo操作员的,他们定期操作超过数百GB的集合 希望 我想在生产数据库上使用notablescan 我想对每个数据库或每个集合应用notablescan 理由 通过向超过数百GB的集合发送不带索引字段的查询,我们可以轻松杀死mongod 更糟糕的是,我们将通过简单的输入错误指定不存在的字段来获得相同的结果 n

我是mongo的忠实用户

我发出这张罚单是出于对即将到来的危机的强烈感觉,我想知道其他人是如何看待这一点的

本提案涉及notablescan选项的功能

这不是针对编程人员的,而是针对mongo操作员的,他们定期操作超过数百GB的集合

希望
  • 我想在生产数据库上使用notablescan
  • 我想对每个数据库或每个集合应用notablescan
理由 通过向超过数百GB的集合发送不带索引字段的查询,我们可以轻松杀死mongod

更糟糕的是,我们将通过简单的输入错误指定不存在的字段来获得相同的结果

notablescan选项的功能可以防止这些灾难性事件

特别是在生产数据库方面

附加的 但目前,可能会将这句话添加到mongo文档中

不运行生产:程序:
mongod
实例与
:参数:
notablescan
,因为阻止表扫描会 可能会影响所有数据库中的查询,包括 行政查询

我认为,这是一个错误的政策,以保持我们的mongo系统的安全

相反,我希望notablescan选项适用于每个DB或每个集合

如果你同意我的意见,请投这张票(右上角)


以下是您可以做的建议:

在mongodb 2.6.x中有一个

$maxtimms运算符在中指定累积时间限制 在光标上处理操作的毫秒数。蒙哥达 在最早的中断点中断操作


所以您可以使用这个
db.collection.find({…}).maxtimes(msTime)
来确保查询不会花费太长时间。然后你可以分析哪些东西不符合你的时限,并采取相应的行动

Hi Hiroaki。这个问题似乎离题了,因为它不是关于编程,而是关于为JIRA票获得选票。很高兴您关心MongoDB的改进。但是,StackOverflow(或任何其他StackExchange站点)不适合放置此类内容。您知道查询选项和游标选项吗?这两种方法都可以用来缓解潜在的性能较差的查询。如MongoDB文档中所述,
notablescan
选项是一个非常粗糙的过滤器,除了阻止特殊/键入的查询外,它还可能意外地干扰一些管理命令。另一个明显的管理方法是限制对生产数据库的直接访问。如果您不能信任您的操作员,您可以让他们使用管理UI,或者可能需要一个全局
mongorc.js
,默认情况下,该全局
$maxScan
限制会自动附加到所有查询。