Perangkat keras apa yang membuat Server MongoDB bagus? Di mana mendapatkannya?

13

Misalkan Anda berada di dell.com sekarang dan Anda membeli server untuk menjalankan database MongoDB Anda untuk startup kecil Anda. Anda harus menangani puluhan ribu penulisan dan bacaan per menit (tetapi benda kecil). Apakah Anda akan memilih 2 prosesor? Investasikan lebih banyak pada RAM?

Saya pernah mendengar (memperbaiki saya jika saya salah) MongoDB menangani yang paling bisa di RAM dan kemudian flushes semuanya ke disk, dalam hal itu saya harus berinvestasi pada CPU dengan L2 cache yang besar, mungkin> 40GB RAM dan solid state drive .. kan?

Apakah saya akan lebih baik dengan server high-end (~ $ 11.309, 2 prosesor mahal, RAM 96GB) atau server 2x (~ $ 6.419, 2 prosesor mahal, RAM 12GB)?

Apakah Dell baik-baik saja atau Anda memiliki saran yang lebih baik? (Saya di luar AS, di Portugal)

João Pinto Jerónimo
sumber
3
mengapa Anda membeli perangkat keras alih-alih menggunakan sesuatu seperti EC2 untuk startup Anda? Paling tidak pada awalnya sampai Anda tahu apa kebutuhan Anda nantinya.
Setuju dengan Tom. Mengapa tidak mengambil beberapa contoh di cloud?
1
@mixdev, Anda salah: "Linux, NUMA dan MongoDB cenderung tidak berfungsi dengan baik." sumber: mongodb.org/display/DOCS/NUMA
Shadok

Jawaban:

19

Awalnya, Anda ingin menambah RAM. RAM yang Anda butuhkan tergantung pada jumlah data yang Anda simpan, jumlah koleksi, indeks pada koleksi itu, pola akses data, dll. Banyak faktor.

Yang paling penting adalah memiliki cukup RAM untuk menjaga indeks Anda dalam RAM. Jika tidak, kinerja Anda akan menurun secara dramatis karena server Anda akan terus-menerus membuka halaman sementara Mongo memindahkan file yang dipetakan memori masuk dan keluar dari RAM. Terlepas dari semua ini, kami belum melihat kecepatan tulis terpengaruh tetapi yang lainnya. Memproses menghapus antrian, pembilasan, kesedihan, dll. Semua mendapat pukulan dramatis begitu indeks Anda tidak lagi sesuai dengan RAM.

Jadi tidak ada jawaban pendek yang nyata. Pada dasarnya, cerdaslah tentang indeks Anda. Hanya gunakan apa yang Anda butuhkan. Simpan koleksi kecil jika Anda bisa (yaitu pecah menjadi beberapa di mana Anda bisa.) Koleksi yang ditutup juga menarik untuk dilihat.


sumber
1
Dalam pengalaman kami, ketika Mongo kehabisan RAM untuk kueri, kueri tidak hanya masuk ke dokumen (berjalan selamanya, 5 menit, 15 menit, jam ...), tetapi sisipan mulai gagal.
Jonesome Reinstate Monica
6

Dengan MongoDB yang Anda inginkan adalah RAM. Dan kemudian beberapa RAM lagi. Membeli RAM tidak ada salahnya.

chx
sumber
3

Jika Anda pada tahap membeli perangkat keras produksi maka aplikasi yang Anda jalankan harus sudah ditulis, kan? Jadi jalankan aplikasi pada perangkat keras yang Anda miliki dan ambil metrik. Ubah beberapa komponen secara bertahap dan ambil lebih banyak metrik. Setelah selesai, Anda akan tahu titik fokus mana yang paling penting untuk aplikasi dan skenario Anda.

Sam
sumber
3

Pertama - beli RAM sebanyak yang Anda bisa. Faktor pembatas kedua adalah kecepatan disk. RAID membantu. SSD membantu. Lebih banyak pecahan membantu. Ukur throughput yang membandingkan efisiensi disk dan waktu respons yang diperlukan, lalu putuskan apa yang harus dilakukan sesuai anggaran yang Anda miliki.


sumber
1

Saya akan bertanya-tanya apakah solusi Linux clustered akan menjadi alternatif yang lebih baik, lebih murah.

MongoDB memungkinkan Anda mendistribusikan data melalui banyak server. Itu tidak mungkin dengan satu, klakson server.

Saya pikir MongoDB adalah salah satu langkah selanjutnya yang diambil setelah mengetahui bahwa penyebaran database relasional pada server klakson tidak cukup baik.

Duffymo
sumber
1

Puluhan ribu tulis per menit bukanlah apa-apa. Anda bisa mendapatkan 50.000 atau lebih menulis per detik pada perangkat keras yang layak. Spesifikasi perangkat keras sangat tergantung pada apa yang Anda coba lakukan. Secara umum, RAM yang cukup untuk basis data besar dan sistem IO cepat penting di samping CPU yang layak ...


sumber
0

Penting untuk membuat garis dasar yang kokoh sebelum merancang perangkat keras Anda. Secara umum, pertanyaan seperti ini akan ditanyakan oleh orang-orang mongoDB yang berpengalaman sebelum orang lain dapat mempertimbangkan untuk menjawab pertanyaan Anda.

Statistik Aplikasi Saat Ini (jika ada)

  • Total Catatan hingga saat ini?
  • Mulai perkiraan penyimpanan?
  • Diharapkan% pertumbuhan / bulan?
  • Ukuran Dokumen Rata-Rata?

Beban Kerja Penyerapan Data

  • Sisipan / hari baru, puncak & rata-rata per detik?
  • Pembaruan / hari, puncak & rata-rata per detik?
  • Baca / hari, puncak & rata-rata / detik?
  • Jumlah rata-rata dokumen yang dikembalikan per permintaan: 70
  • Menghapus / hari, puncak & rata-rata / detik: Tidak ada
  • Apakah akan ada pemuatan massal / pembaruan massal? Jika ya, seberapa besar dan seberapa sering?
  • Berapa banyak jenis dokumen yang berbeda?
  • Berapa masing-masing?
  • Seperti apa tampilan dokumen Anda (contoh dokumen)?

Pola Permintaan & Ekspektasi Kinerja

  • Baca Respons SLA?
  • Tulis Respons SLA?
  • Apakah bacaan berbasis rentang atau acak?

Pola Akses yang Diantisipasi

  • Jumlah indeks sekunder yang diperlukan?
  • Jumlah Atribut?
  • Kondisi semacam?
  • Tunggal atau majemuk?
Ostati
sumber