1) Dalam hal daya tahan, Anda dapat memberi tahu driver java MongoDB (yang digunakan Morphia), strategi mana yang digunakan, lihat https://github.com/mongodb/mongo-java-driver/blob/master/src/main/com/ mongodb/WriteConcern.java#L53
. Ini hanyalah pertukaran antara kecepatan:NONE
(bahkan masalah konektivitas tidak akan menyebabkan kesalahan) hingga FSYNC_SAFE
(data pasti ditulis ke disk). Untuk detail internal, lihat http://www.kchodorow.com/blog/2012/10/04/how-mongodbs-journaling-works/
2) Seluruh data Anda dipetakan ke memori (itulah sebabnya edisi 32bit memiliki batas ukuran 2GB), namun hanya benar-benar dimuat, bila diperlukan. MongoDB menyerahkannya ke sistem operasi dengan menggunakan mmap. Jadi selama ada lebih banyak RAM yang tersedia, MongoDB akan dengan senang hati memuat semua data yang dibutuhkan ke dalam RAM untuk membuat kueri dengan sangat cepat. Jika tidak ada lagi memori yang tersedia, terserah pada sistem operasi untuk menukar barang-barang lama. Ini memiliki efek bagus bahwa data Anda akan disimpan dalam memori bahkan jika Anda memulai ulang proses MongoDB; hanya jika Anda me-restart server itu sendiri, data harus diambil dari disk lagi. Saya pikir downside adalah bahwa proses database mungkin memiliki pemahaman yang sedikit lebih baik tentang apa yang harus ditukar terlebih dahulu dibandingkan dengan sistem operasi. Saya tidak menggunakan MongoDB di Windows dan belum melihat pesan itu di Mac atau Linux (belum ), tetapi sistem operasi harus menanganinya untuk Anda (dan secara otomatis menukar potongan informasi yang diperlukan). Sudahkah Anda mencoba mengatur driver ke JOURNAL_SAFE
(harus menjadi kompromi yang baik antara keamanan dan kecepatan data)? Dalam pengaturan itu, tidak ada data yang hilang, bahkan jika proses MongoDB mati.
3) Secara umum MongoDB dibangun untuk menggunakan sebanyak mungkin memori yang tersedia, tetapi Anda mungkin dapat membatasinya dengan http://captaincodeman.com/2011/02/27/limit-mongodb-memory-use-windows/ - yang belum saya uji, karena kami menggunakan server Linux (virtual).