Penggunaan Umum
Jika Anda memiliki struktur data yang tidak didefinisikan secara jelas pada saat Anda membuat sistem. Saya cenderung menyimpan pengaturan pengguna di nosql, misalnya. Contoh lain adalah sistem di mana pengguna harus dapat menambahkan bidang saat runtime - sangat menyakitkan di RDBMS dan mudah di NoSQL.
Jika struktur model Anda sebagian besar berpusat di sekitar satu atau beberapa objek model dan sebagian besar hubungan sebenarnya adalah objek anak-anak dari objek model utama. Dalam hal ini Anda akan menemukan bahwa Anda akan memiliki sedikit kebutuhan untuk bergabung secara aktual. Saya menemukan bahwa sistem manajemen kontak dapat diimplementasikan dengan cukup baik di nosql misalnya. Seseorang dapat memiliki banyak alamat, telepon, dan email. Alih-alih menempatkan mereka masing-masing ke dalam tabel yang terpisah, mereka semua menjadi bagian dari model yang sama dan Anda memiliki objek satu orang.
Jika Anda ingin mendapat manfaat dari pengelompokan data Anda di beberapa server daripada memiliki satu server monolitik, yang biasanya diperlukan oleh RDBMS.
Caching. Bahkan jika Anda ingin tetap menggunakan RDBMS sebagai basis data utama Anda, akan berguna untuk menggunakan basis data NoSQL untuk menyimpan hasil kueri atau menyimpan data, seperti penghitung.
Menyimpan dokumen. Jika Anda ingin menyimpan dokumen yang koheren, dalam database beberapa database NoSQL (seperti MongoDB) sebenarnya khusus menyimpannya.
Bagaimana dengan bergabung?
Sejujurnya, hal no join juga terdengar menakutkan bagi saya pada awalnya. Tetapi triknya adalah berhenti berpikir dalam SQL. Anda harus benar-benar berpikir dengan objek yang ada dalam memori saat Anda menjalankan aplikasi. Ini harus lebih atau kurang hanya disimpan ke dalam basis data NoSQL karena daerah mereka.
Karena Anda dapat menyimpan grafik objek lengkap Anda, dengan objek anak, sebagian besar kebutuhan untuk bergabung dihilangkan. Dan jika Anda membutuhkannya, Anda harus menggigit peluru dan mengambil kedua objek dan bergabung dalam kode aplikasi Anda.
Untungnya, sebagian besar driver dapat melakukan penggabungan untuk Anda, jika Anda mengatur skema Anda dengan benar.
Untuk bacaan lebih lanjut, saya benar-benar merekomendasikan Martin Fowler .
Dalam beberapa kasus, Anda tidak memerlukan kunci asing. Contohnya:
bisa sesederhana memuat
comments
bagian dokumen yang sesuai dengan pengguna. Ini disebut denormalisasi : alih-alih memiliki dua set dengan gabungan, Anda memiliki satu dokumen dan semua yang Anda butuhkan ada di dalam dokumen. Satu permintaan, tanpa bergabung, kinerja lebih baik .Tetapi dalam beberapa keadaan, ini dapat menyebabkan duplikasi data , jadi menghubungkan dari satu dokumen ke dokumen lain mungkin cocok. Dalam hal ini, Anda mungkin tertarik dengan normalisasi MongoDB, kunci asing dan bergabung , halaman Referensi Database dan terutama fitur DBRefs.
sumber