Saya terbiasa menggunakan database relasional seperti MySQL atau PostgreSQL, dan dikombinasikan dengan kerangka kerja MVC seperti Symfony, RoR atau Django, dan menurut saya ini berfungsi dengan baik.
Tapi belakangan ini saya banyak mendengar tentang MongoDB yang merupakan database non-relasional, atau, mengutip definisi resminya ,
database yang dapat diskalakan, berkinerja tinggi, open source, bebas skema, dan berorientasi dokumen.
Saya sangat tertarik untuk menjadi gelisah dan ingin mengetahui semua opsi yang akan saya miliki untuk proyek berikutnya dan memilih teknologi terbaik di luar sana.
Dalam kasus mana menggunakan MongoDB (atau database serupa) lebih baik daripada menggunakan database relasional "klasik"? Dan apa saja keunggulan MongoDB vs MySQL secara umum? Atau setidaknya, mengapa ini sangat berbeda?
Jika Anda memiliki petunjuk ke dokumentasi dan / atau contoh, itu akan sangat membantu juga.
Ada banyak keuntungan.
Misalnya skema database Anda akan lebih skalabel, Anda tidak perlu khawatir tentang migrasi, kode akan lebih menyenangkan untuk ditulis ... Misalnya, berikut salah satu kode model saya:
Menambahkan kunci hanya menambahkan sebaris kode!
Ada juga keuntungan lain yang akan muncul dalam jangka panjang, seperti skalabilitas dan kecepatan yang lebih baik.
... Namun perlu diingat bahwa database non-relasional tidak lebih baik dari database relasional . Jika database Anda memiliki banyak relasi dan normalisasi, mungkin tidak masuk akal untuk menggunakan sesuatu seperti MongoDB. Ini semua tentang menemukan alat yang tepat untuk pekerjaan itu.
Untuk lebih banyak hal untuk dibaca, saya akan merekomendasikan untuk melihat " Mengapa saya pikir Mongo adalah untuk Database apa Rails untuk Frameworks " atau posting ini di situs web mongodb. Untuk menjadi bersemangat dan jika Anda berbicara bahasa Prancis, lihat artikel ini yang menjelaskan cara mengatur MongoDB dari awal.
Sunting: Saya hampir lupa memberi tahu Anda tentang siaran kereta api ini oleh Ryan . Ini sangat menarik dan membuat Anda ingin segera memulainya!
sumber
Keuntungan bebas skema adalah Anda dapat membuang apa pun yang dimuat di dalamnya, dan tidak akan ada yang memiliki alasan untuk mengeluh tentangnya, atau mengatakan bahwa itu salah.
Ini juga berarti bahwa apa pun yang Anda masukkan ke dalamnya, tetap kosong sama sekali setelah Anda melakukannya.
Beberapa akan melabeli hal itu sebagai kerugian besar, beberapa lainnya tidak.
Fakta bahwa database relasional memiliki skema yang mapan, adalah konsekuensi dari fakta bahwa ia memiliki kumpulan predikat ekstensional yang mapan, yang memungkinkan kita untuk melampirkan makna pada apa yang dicatat dalam database, dan mana yang juga prasyarat penting bagi kami untuk melakukannya.
Tanpa skema yang mapan, tidak ada predikat ekstensional, dan tanpa precicates ekstensional, tidak ada cara bagi pengguna untuk membuat makna dari apa yang ada di dalamnya.
sumber
MongoDB ditampilkan di FLOSS Weekly minggu ini - http://twit.tv/floss105 Database yang menggunakan konsep serupa adalah CouchDB yang ditampilkan di FLOSS Weekly lainnya: http://twit.tv/floss36
Saya pikir ada baiknya mendengarkan mereka selain tautan yang disediakan oleh @marcgg
sumber
Pengalaman saya dengan Postgres dan Mongo setelah bekerja dengan kedua database dalam proyek saya.
Postgres (RDBMS)
Postgres direkomendasikan jika aplikasi masa depan Anda memiliki skema rumit yang membutuhkan banyak gabungan atau semua data memiliki relasi atau jika kami memiliki tulisan yang berat. Postgres adalah open source, lebih cepat, kompatibel dengan ACID dan menggunakan lebih sedikit memori pada disk, dan semuanya berkinerja baik untuk penyimpanan JSON juga dan mencakup serialisasi penuh transaksi dengan 3 tingkat isolasi transaksi.
Keuntungan terbesar tetap bersama Postgres adalah kami memiliki yang terbaik dari kedua dunia. Kita dapat menyimpan data ke dalam JSONB dengan batasan, konsistensi dan kecepatan. Di sisi lain, kita dapat menggunakan semua fitur SQL untuk jenis data lainnya. Mesin yang mendasarinya sangat stabil dan dapat menangani berbagai volume data dengan baik. Ini juga berjalan pada perangkat keras dan sistem operasi pilihan Anda. Postgres menyediakan kemampuan NoSQL bersama dengan dukungan transaksi penuh, menyimpan dokumen JSON dengan batasan pada data lapangan.
Batasan Umum untuk Postgres
Scaling Postgres Horizontal secara signifikan lebih sulit, tetapi bisa dilakukan.
Operasi baca cepat tidak dapat sepenuhnya dicapai dengan Postgres.
TIDAK ADA Basis Data SQL
Mongo DB (Macan Kabel)
MongoDB dapat mengalahkan Postgres dalam dimensi "skala horizontal". Menyimpan JSON adalah hal yang dioptimalkan Mongo. Mongo menyimpan datanya dalam format biner yang disebut BSONb yang (secara kasar) hanyalah representasi biner dari superset JSON. MongoDB menyimpan objek persis seperti yang dirancang. Menurut MongoDB, untuk aplikasi intensif tulis, Mongo mengatakan mesin baru (Wired Tiger) memberi pengguna peningkatan kinerja tulis hingga 10x (saya harus mencobanya), dengan pengurangan penggunaan penyimpanan sebesar 80 persen, membantu menurunkan biaya penyimpanan. , mencapai pemanfaatan perangkat keras yang lebih besar.
Batasan Umum MongoDb
Penggunaan mesin penyimpanan tanpa skema menyebabkan masalah skema implisit. Skema ini tidak ditentukan oleh mesin penyimpanan kami, tetapi ditentukan berdasarkan perilaku dan harapan aplikasi.
Teknologi NoSQL yang berdiri sendiri tidak memenuhi standar ACID karena mengorbankan perlindungan data penting demi kinerja throughput yang tinggi untuk aplikasi tidak terstruktur. Tidak sulit untuk menerapkan ACID pada database NoSQL tetapi akan membuat database menjadi lambat dan tidak fleksibel hingga batas tertentu. “Sebagian besar batasan NoSQL dioptimalkan di versi dan rilis yang lebih baru yang telah mengatasi sebagian besar batasan sebelumnya”.
sumber
Ini semua tentang pertukaran. MongoDB cepat tapi bukan ACID, tidak ada transaksi. Ini lebih baik daripada MySQL dalam beberapa kasus penggunaan dan lebih buruk di kasus lain.
sumber
Garis Bawah Ditulis dalam MongoDB: Panduan Definitif.
sumber
Setelah pertanyaan tentang database dengan penyimpanan tekstual), saya melirik MongoDB dan sistem serupa.
Jika saya mengerti dengan benar, mereka seharusnya lebih mudah digunakan dan diatur, dan lebih cepat. Mungkin juga lebih aman karena kurangnya SQL mencegah injeksi SQL ...
Rupanya, MongoDB sebagian besar digunakan untuk aplikasi Web.
Pada dasarnya, dan mereka menyatakan bahwa mereka sendiri, database ini tidak cocok untuk kueri kompleks, penambangan data, dll. Tetapi mereka bersinar dalam mengambil banyak data datar dengan cepat.
sumber
sumber