1) In termen van duurzaamheid kun je de MongoDB Java-driver (die Morphia gebruikt) vertellen welke strategie je moet gebruiken, zie https://github.com/mongodb/mongo-java-driver/blob/master/src/main/com/ mongodb/WriteConcern.java#L53
. Het is gewoon een afweging tussen snelheid:NONE
(zelfs geen verbindingsproblemen veroorzaken een fout) tot FSYNC_SAFE
(de gegevens worden zeker naar de schijf geschreven). Ga voor de interne details naar http://www.kchodorow.com/blog/2012/10/04/how-mongodbs-journaling-works/
2) Uw volledige gegevens worden toegewezen aan het geheugen (daarom heeft de 32bit-editie een maximale grootte van 2 GB), maar het wordt alleen daadwerkelijk geladen wanneer dat nodig is. MongoDB laat dat over aan het besturingssysteem door mmap te gebruiken. Dus zolang er meer RAM beschikbaar is, laadt MongoDB graag alle gegevens die het nodig heeft in het RAM om zeer snel query's uit te voeren. Als er geen geheugen meer beschikbaar is, is het aan het besturingssysteem om oude dingen uit te wisselen. Dit heeft het mooie effect dat uw gegevens in het geheugen worden bewaard, zelfs als u het MongoDB-proces opnieuw start; alleen als u de server zelf opnieuw opstart, moeten de gegevens opnieuw van de schijf worden opgehaald. Ik denk dat het nadeel is dat het databaseproces misschien een iets beter begrip heeft van wat er als eerste moet worden uitgewisseld in vergelijking met het besturingssysteem. Ik gebruik MongoDB niet op Windows en heb dat bericht niet gezien op Mac of Linux (nog ), maar het besturingssysteem zou dat voor u moeten afhandelen (en automatisch stukjes informatie verwisselen als dat nodig is). Heb je geprobeerd het stuurprogramma in te stellen op JOURNAL_SAFE
(moet een goed compromis zijn tussen gegevensbeveiliging en snelheid)? In die instelling mogen er geen gegevens verloren gaan, zelfs als het MongoDB-proces sterft.
3) Over het algemeen is MongoDB gebouwd om zoveel mogelijk geheugen te gebruiken, maar je kunt het misschien beperken met http://captaincodeman.com/2011/02/27/limit-mongodb-memory-use-windows/ - die ik niet heb getest, omdat we (virtuele) Linux-servers gebruiken.