1) Pokud jde o odolnost, můžete říci java ovladači MongoDB (který používá Morphia), jakou strategii má použít, viz https://github.com/mongodb/mongo-java-driver/blob/master/src/main/com/ mongodb/WriteConcern.java#L53
. Je to prostě kompromis mezi rychlostí:NONE
(chybu nezpůsobí ani problémy s připojením) až do FSYNC_SAFE
(data jsou určitě zapsána na disk). Interní podrobnosti najdete na http://www.kchodorow.com/blog/2012/10/04/how-mongodbs-journaling-works/
2) Veškerá vaše data jsou mapována do paměti (proto má 32bitová edice limit velikosti 2 GB), ale ve skutečnosti se načítají pouze v případě potřeby. MongoDB to nechává na operačním systému pomocí mmap. Pokud je tedy k dispozici více paměti RAM, MongoDB šťastně načte všechna data, která potřebuje, do paměti RAM, aby byly dotazy velmi rychlé. Pokud není k dispozici více paměti, je na operačním systému, aby staré věci vyměnil. To má příjemný efekt, že vaše data zůstanou v paměti, i když restartujete proces MongoDB; pouze pokud restartujete samotný server, data musí být znovu načtena z disku. Myslím, že nevýhodou je, že databázový proces by mohl ve srovnání s operačním systémem trochu lépe chápat, co by mělo být vyměněno jako první. Nepoužívám MongoDB ve Windows a tuto zprávu jsem neviděl na Macu ani Linuxu (zatím ), ale operační systém by to měl zvládnout za vás (a automaticky vyměňovat informace podle potřeby). Zkusili jste nastavit ovladač na JOURNAL_SAFE
(měl by to být dobrý kompromis mezi bezpečností dat a rychlostí)? V tomto nastavení by se neměla ztratit žádná data, i když proces MongoDB zemře.
3) Obecně je MongoDB vytvořeno tak, aby využívalo co nejvíce dostupné paměti, ale můžete jej omezit pomocí http://captaincodeman.com/2011/02/27/limit-mongodb-memory-use-windows/ - což jsem netestoval, protože používáme (virtuální) linuxové servery.