Je travaille sur une application web multitenant. Il faut effacer certains conteneurs d'utilisateurs, qui peuvent être assez volumineux, ayant de nombreux documents en collection. Je dois être en mesure de supprimer de nombreux documents quelque chose comme:supprimer de nombreux documents de mongodb
return self::remove(array('LISTID' => $listId), array('safe' => true));
Dans certains cas, il peut y avoir de nombreux documents qui répondent à ces critères, quelque chose comme 100s de milliers, voire des millions. Je m'inquiète que cette opération peut prendre beaucoup de temps et ralentir le serveur. S'il y a beaucoup de documents, est-il file d'attente une valeur telle opération pour les supprimer quelque chose comme hors ligne pseudo-code:
while (there are documents) {
delete(1000 documents);
sleep();
}
Je me demande comment supprimer des données par portios plus petites dans MongoDB dans ce cas. Je remarque également que pour une raison quelconque la suppression de plusieurs lignes se fait plutôt rapidement dans mongodb, nous avons un prototype avec des données stockées dans mongodb, supprimer un nombre similaire de lignes prend beaucoup plus de temps dans mysql, mais dans mysql avec des données mais même quand therer ne sont pas des enregistrements dans les tables dépendantes, il semble beaucoup plus rapide dans mongodb, dans mongodb il stocke toutes les données dans le document, mais il me semble plutôt étrange de toute façon. Ou peut-être que c'est superflu?
Merci.
Combien de locataires avez-vous? Si elles ne sont pas dans les milliers, vous pouvez avoir une collection par locataire et laisser tomber la collection entière (si vous voulez que vous essayiez de supprimer toutes les données pour un locataire). Quoi que vous fassiez, il s'agit presque certainement d'une opération hors ligne, par lots. – Thilo
Il peut être 10s milliers de locataires et même plus. Cette opération devrait effacer les données d'une liste, les locataires peuvent avoir plusieurs listes. – Oleg