我在多租户Web应用程序上工作。有必要清除一些容器的用户,这些容器可能相当大,有许多文档正在收集。 我需要能够删除许多文件是这样的:从mongodb中删除很多文档
return self::remove(array('LISTID' => $listId), array('safe' => true));
在某些情况下可以有许多文件符合这一标准,类似的十万甚至上百万100S。我担心这个操作可能会花费很多时间和节制服务器。 如果有很多文件,是否值得排队这样的操作将其删除脱机像伪代码:
while (there are documents) {
delete(1000 documents);
sleep();
}
我不知道如何通过小portios MongoDB中在这种情况下删除数据。我还注意到,由于某种原因,在mongodb中删除相当多的行的速度相当快,我们有用mongodb存储数据的原型,在mysql中删除相似数量的行需要更长的时间,但在mysql中,表中的每一行都引用了其他表有了数据,但即使在依赖表中没有记录时,它在mongodb中似乎也快得多,在mongodb中,它将所有数据存储在文档中,但对我而言,似乎相当奇怪。 或者它可能是多余的?
谢谢。
你有几个租户?如果他们不是成千上万,你可以为每个租户收集一个集合并丢弃整个集合(如果你想要做的是删除一个租户的所有数据)。不管你做什么,这几乎肯定是一种离线的批量式操作。 – Thilo 2012-04-27 06:16:20
它可以成千上万的租户,甚至更多。此操作应清除一个列表的数据,租户可以有多个列表。 – Oleg 2012-04-27 07:22:18