Я работаю над многопользовательским веб-приложением. Необходимо очистить некоторый контейнер пользователей, который может быть довольно большим, имея много документов в коллекции. мне нужно, чтобы иметь возможность удалить множество документов что-то вроде:удалить много документов из 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 каждая строка в таблице имеет ссылки на другую таблицу с данными, но даже когда therer не является записями в зависимых таблицах, в mongodb он намного быстрее, в mongodb он хранит все данные в документе, но мне все равно кажется странным. Или, может быть, это лишнее?
спасибо.
Сколько арендаторов у вас есть? Если их нет в тысячах, вы можете иметь коллекцию для каждого арендатора и отбрасывать всю коллекцию (если хотите, вы пытаетесь удалить все данные для одного арендатора). Независимо от того, что вы делаете, это почти наверняка представляет собой автономную, пакетную операцию. – Thilo
Это может быть 10 тысяч тысяч арендаторов и даже больше. Эта операция должна очищать данные одного списка, арендаторы могут иметь несколько списков. – Oleg