Kami menawarkan platform untuk klip video dan audio, foto dan vektor-grafika. Kami mulai dengan MySQL sebagai backend basis data dan baru-baru ini menyertakan MongoDB untuk menyimpan semua meta-informasi file, karena MongoDB lebih sesuai dengan persyaratan. Misalnya: foto mungkin memiliki informasi Exif , video mungkin memiliki trek audio tempat kami ingin menyimpan informasi meta juga. Video dan vektor-grafik tidak membagikan meta-informasi umum, dll. Jadi saya tahu, bahwa MongoDB sempurna untuk menyimpan data yang tidak terstruktur ini dan menjaganya tetap dapat dicari.
Namun, kami terus mengembangkan platform kami dan menambahkan fitur. Sekarang salah satu langkah selanjutnya akan menyediakan forum untuk pengguna kami. Pertanyaan yang sekarang muncul adalah: gunakan database MySQL, yang akan menjadi pilihan yang baik untuk menyimpan forum dan posting forum, dll. Atau menggunakan MongoDB untuk ini juga?
Jadi pertanyaannya adalah: kapan harus menggunakan MongoDB dan kapan harus menggunakan RDBMS. Apa yang akan Anda ambil, mongoDB atau MySQL, jika Anda punya pilihan dan mengapa Anda mengambilnya?
Jawaban:
Dalam NoSQL: Jika Hanya Itu yang Mudah , penulis menulis tentang MongoDB:
Kemudian, dalam kesimpulan:
Saya suka artikel ini, saya merasa sangat informatif, memberikan gambaran yang bagus tentang lanskap dan hype NoSQL. Tetapi, dan itulah bagian terpenting, sangat membantu untuk bertanya pada diri sendiri pertanyaan yang tepat ketika memilih antara RDBMS dan NoSQL. Layak dibaca IMHO.
Tautan alternatif ke artikel
sumber
/dev/null
, itu akan sangat cepat" : DSetelah dua tahun menggunakan MongoDb untuk aplikasi sosial, saya telah menyaksikan apa artinya hidup tanpa SQL RDBMS.
Saya percaya bahwa 98% dari semua proyek mungkin jauh lebih baik dengan RDBMS SQL khas daripada dengan NoSQL.
sumber
Seperti yang Anda katakan, MongoDB paling cocok untuk menyimpan data yang tidak terstruktur. Dan ini dapat mengatur data Anda ke dalam format dokumen. ALtenative RDBMS ini disebut penyimpanan data NoSQL ( MongoDB , CouchDB , Voldemort ) sangat berguna untuk aplikasi yang berskala besar dan membutuhkan akses data yang lebih cepat dari toko data besar ini.
Dan implementasi dari basis data ini lebih sederhana daripada RDBMS biasa. Karena ini adalah objek biner yang diberi nilai kunci atau gaya dokumen langsung diserialisasi ke disk. Menyimpan data ini tidak menegakkan properti ACID , dan skema apa pun . Ini tidak memberikan kemampuan transaksi apa pun . Jadi ini dapat berskala besar dan kita dapat mencapai akses yang lebih cepat (baik membaca dan menulis).
Namun sebaliknya, RDBM memberlakukan ACID dan skema pada data. Jika Anda ingin bekerja dengan data terstruktur, Anda dapat melanjutkan dengan RDBM.
Saya akan memilih MySQL untuk membuat forum untuk hal semacam ini. Karena ini tidak akan berskala besar. Dan ini adalah aplikasi (umum) yang sangat sederhana yang memiliki hubungan terstruktur di antara data.
sumber
Perhatikan bahwa Mongo pada dasarnya menyimpan JSON. Jika aplikasi Anda berurusan dengan banyak JS Objects (dengan nesting) dan Anda ingin tetap menggunakan objek ini, maka ada argumen yang sangat kuat untuk menggunakan Mongo. Itu membuat lapisan DAL dan MVC Anda sangat tipis, karena mereka tidak mengemas semua properti objek JS dan mencoba untuk memasangnya secara paksa ke dalam struktur (skema) yang tidak sesuai dengan mereka secara alami.
Kami memiliki sistem yang memiliki beberapa objek JS yang kompleks, dan kami mencintai Mongo karena kami dapat bertahan dengan sangat, sangat mudah. Objek kami juga agak amorf dan tidak terstruktur, dan Mongo menyerap kerumitan itu tanpa berkedip. Kami memiliki lapisan pelaporan khusus yang menguraikan data amorf untuk konsumsi manusia, dan itu tidak sulit untuk dikembangkan.
sumber
Saya akan mengatakan menggunakan RDBMS jika Anda membutuhkan transaksi yang kompleks. Kalau tidak, saya akan pergi dengan MongoDB - lebih fleksibel untuk bekerja dengan dan Anda tahu itu bisa skala ketika Anda perlu. (Saya bias meskipun - saya bekerja pada proyek MongoDB)
sumber
Siapa yang butuh forum yang terdistribusi dan terlindung? Mungkin Facebook, tetapi kecuali Anda membuat pesaing Facebook, cukup gunakan Mysql, Postgres atau apa pun yang paling nyaman bagi Anda. Jika Anda ingin mencoba MongoDB, ok, tapi jangan berharap itu melakukan sihir untuk Anda. Ini akan memiliki keanehan dan kekotoran umum, seperti yang lainnya, karena saya yakin Anda sudah menemukan jika Anda benar-benar telah mengusahakannya.
Tentu, MongoDB mungkin hyped dan tampaknya mudah di permukaan, tetapi Anda akan mengalami masalah yang lebih banyak produk dewasa telah diatasi. Jangan terpikat dengan mudah, tetapi lebih baik menunggu sampai "nosql" matang, atau mati.
Secara pribadi, saya pikir "nosql" akan layu dan mati karena fragmentasi, karena tidak ada standar yang ditetapkan (hampir secara definisi). Jadi saya tidak akan secara pribadi bertaruh untuk proyek jangka panjang.
Satu-satunya hal yang dapat menyimpan "nosql" di buku saya, adalah jika itu dapat diintegrasikan ke dalam Ruby atau bahasa serupa dengan mulus, dan membuat bahasa "persisten", hampir tanpa overhead dalam pengkodean dan desain. Itu mungkin terjadi, tetapi saya akan menunggu sampai saat itu, tidak sekarang, DAN itu harus lebih matang tentu saja.
Btw, mengapa Anda membuat forum dari awal? Ada banyak sekali forum open source yang dapat disesuaikan dengan sebagian besar persyaratan, kecuali Anda benar-benar menciptakan Forum Generasi Selanjutnya (yang saya ragu).
sumber
Saya telah melihat banyak perusahaan menggunakan MongoDB untuk analisis waktu nyata dari log aplikasi. Skema-freeness-nya sangat cocok untuk log aplikasi, di mana skema catatan cenderung berubah dari waktu ke waktu. Selain itu, fitur Capped Collection -nya berguna karena secara otomatis membersihkan data lama agar data tetap masuk ke dalam memori.
Itu adalah salah satu area yang menurut saya cocok untuk MongoDB, tetapi MySQL / PostgreSQL lebih direkomendasikan secara umum. Ada banyak dokumentasi dan sumber daya pengembang di web, serta fungsionalitas dan kekokohannya.
sumber
2 alasan utama mengapa Anda mungkin ingin memilih Mongo adalah
Sangat cocok untuk aplikasi big data. RDBMS tidak baik untuk data besar.
sumber
Anda tahu, semua hal ini tentang gabungan dan 'transaksi kompleks' - tetapi Monty sendiri yang, bertahun-tahun lalu, menjelaskan "kebutuhan" untuk COMMIT / ROLLBACK, dengan mengatakan bahwa 'semua yang dilakukan dalam kelas logika (dan bukan database) '- jadi itu adalah hal yang sama lagi. Apa yang dibutuhkan adalah mesin penyimpanan / pengambilan data yang bodoh namun sangat rapi dan cepat, untuk 99% dari apa yang dilakukan aplikasi web.
sumber
Seperti yang dikatakan sebelumnya, Anda dapat memilih di antara banyak pilihan, lihat semua pilihan itu: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
Apa yang saya sarankan adalah mencari kombinasi terbaik Anda: MySQL + Memcache benar-benar hebat jika Anda memerlukan ACID dan Anda ingin bergabung dengan beberapa tabel MongoDB + Redis sempurna untuk toko dokumen Neo4J sempurna untuk basis data grafik
Apa yang saya lakukan: Saya mulai dengan MySQl + Memcache karena saya terbiasa, kemudian saya mulai menggunakan kerangka kerja basis data orang lain. Dalam satu proyek, Anda dapat menggabungkan MySQL dan MongoDB misalnya!
sumber