Apa keuntungan menjalankan NoSQL (ex MongoDB) dari MySQL, PostGRE SQL atau MSSQL di Drupal? Apakah keuntungan diperoleh dari hanya menggunakan penyimpanan atau apakah beberapa konfigurasi Drupal perlu diubah?
Apa keuntungan menjalankan NoSQL (ex MongoDB) dari MySQL, PostGRE SQL atau MSSQL di Drupal? Apakah keuntungan diperoleh dari hanya menggunakan penyimpanan atau apakah beberapa konfigurasi Drupal perlu diubah?
Jawaban:
MongoDB dapat digunakan untuk menyimpan sebagian besar atau semua entitas Anda ke dalam penyimpanan yang cepat dan berorientasi dokumen. Jenis penyimpanan ini jauh lebih baik daripada penyimpanan berbasis SQL standar yang kami miliki di inti Drupal (yang didasarkan pada skema "satu tabel per bidang").
Dalam keadaan Drupal 7 saat ini, Anda akan memiliki:
Ini memungkinkan pencarian cepat pada entitas di MongoDB, dan kemampuan untuk menambahkan indeks kompleks yang tidak didukung oleh basis data SQL OpenSource (termasuk indeks lintas tabel). Pada saat yang sama, Anda tidak kehilangan interoperabilitas karena tabel dasar entitas masih disimpan dalam SQL dan dengan demikian dapat digabung dengan modul yang masih SQL-saja (seperti Flag).
Jenis kueri cepat ini tersedia berkat mekanisme EntityFieldQuery, cara untuk membangun kueri pada entitas, properti mereka, dan bidangnya secara abstrak. Implementasi default di core menerjemahkan query-query itu ke SQL, tetapi modul MongoDB memiliki implementasi fitur lengkap yang dapat memenuhi permintaan-permintaan dari MongoDB secara langsung.
Berkat backend EntityFieldQuery untuk Views , Anda dapat dengan mudah memanfaatkan kekuatan ini, dengan menggunakan alat yang Anda gunakan. Satu-satunya downside adalah bahwa hubungan tidak didukung (tetapi dalam praktiknya Anda jarang membutuhkannya - dan ini dapat diselesaikan dengan mendorong data tambahan ke objek entitas dan menambahkan mengeksposnya sebagai properti tambahan entitas).
Singkatnya, segera setelah kinerja kueri adalah masalah pada proyek Anda, yang terjadi segera setelah Anda memiliki dataset yang signifikan (katakanlah mulai dari sepersepuluh dari ribuan entitas pada jenis entitas tertentu), MongoDB adalah keuntungan bersih untuk kekurangan sangat sedikit. Sangat dianjurkan.
MongoDB dan sejenisnya dirancang untuk menyimpan data terstruktur (hierarkis) dengan cara yang relatif fleksibel.
Misalnya Drupal 7
, saat menggunakan field_sql_storage
, setiap bidang mendapatkan tabelnya sendiri. Ketika Anda melampirkan 10 bidang ke jenis konten, Anda berakhir dengan 10 tabel di database Anda. Saat Anda memuat simpul itu, field_sql_storage
akan menjalankan kueri per bidang dan per simpul (atau beberapa simpul, saat menggunakan node_load_multiple
).
Saat Anda menggunakan mongodb_field_storage , Anda dapat menyimpan semua bidang dari sebuah simpul dalam satu dokumen dan mendapatkan dengan satu permintaan.
Anda juga dapat menyimpan hal-hal lain seperti anjing penjaga, sesi, cache, blok di MongoDB .
Namun Anda masih membutuhkan MySQL, MongoDB tidak menggantinya (hanya untuk bagian tertentu).
Keuntungan lain adalah bahwa dengan MongoDB lebih mudah untuk skala, Anda dapat menambahkan banyak server ke cluster berbagi data di antara mereka.
Pro datang dengan kontra.
Drupal secara keseluruhan tidak dapat dialihkan ke MongoDb, jadi Anda harus mendukung dua database dan memastikan keduanya bekerja dengan baik.
Banyak modul tidak akan dapat bekerja dengan mongodb sehingga Anda akan kehilangan interoperabilitas.
Kecuali jika Anda memiliki kebutuhan mendesak (seperti bagian dari sistem Anda tidak mengatasi jumlah permintaan / atau jumlah data) saya tidak akan beralih. Dan bahkan ketika Anda mulai mendekati batas melihat melempar perangkat keras pada masalah atau penyetelan sebelum beralih.
Saya pikir saya telah menjawab ini sebelumnya, hampir ada duplikat pada SO