it-swarm-id.com

NoSQL vs SQL Lainnya Drupal Pengaturan

Apa keuntungan menjalankan NoSQL (ex MongoDB) dari MySQL, PostGRE SQL atau MSSQL di Drupal? Apakah keuntungan diperoleh dari hanya menggunakan penyimpanan atau apakah beberapa Drupal perlu diubah?

14
Kevin

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 Drupal inti (yang didasarkan pada skema "satu tabel per bidang").

Dalam keadaan Drupal 7 saat ini, Anda akan memiliki:

  • Tabel dasar entitas yang disimpan di SQL (mis. Tabel pengguna, tabel simpul, dll.)
  • Semua bidang disimpan dalam SQL
  • Properti entitas dari tabel dasar mereka digandakan dalam MongoDB

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 digabungkan 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 meningkatkan kekuatan ini, dengan menggunakan alat-alat yang biasa 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.

13
Damien Tournoud

MongoDB dan sejenisnya dirancang untuk menyimpan data terstruktur (hierarkis) dengan cara yang relatif fleksibel.

Misalnya dalam Drupal 7, ketika 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 node (atau beberapa node, saat menggunakan node_load_multiple).

Ketika Anda menggunakan mongodb_field_storage , Anda dapat menyimpan semua bidang dari sebuah simpul dalam satu dokumen dan dapatkan dengan satu permintaan.

Anda juga dapat menyimpan hal-hal lain seperti anjing penjaga, sesi, cache, blok di MongoDB .

Anda masih membutuhkan MySQL, MongoDB tidak menggantikannya (hanya untuk bagian-bagian tertentu).

Keuntungan lain adalah lebih mudah dengan MongoDB untuk skala, Anda dapat menambahkan banyak server ke sebuah cluster yang membagi data di antara mereka.

7
Berdir

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 lihat melempar perangkat keras pada masalah atau penyetelan sebelum beralih.

Saya pikir saya telah menjawab ini sebelumnya, ada hampir duplikat pada SO

5
Jeremy French