MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

alternatif mongoDB untuk batasan kunci asing

MongoDB tidak memiliki penghapusan berjenjang. Saat aplikasi Anda menghapus data, itu juga bertanggung jawab untuk menghapus objek yang direferensikan itu sendiri dan referensi apa pun ke dokumen yang dihapus. Tapi biasanya ketika Anda menggunakan on delete dalam database relasional, Anda memiliki kasus komposisi di mana satu objek induk memiliki satu atau lebih objek anak, dan objek anak tidak ada artinya tanpa induk. Dalam situasi itu, MongoDB mendorong penyematan alih-alih referensi . Itu berarti Anda membuat larik di objek induk, dan memasukkan dokumen anak lengkap ke dalam larik itu alih-alih menyimpannya di koleksi sendiri. Dengan begitu mereka akan dihapus bersama dengan induknya, karena mereka adalah bagian darinya.

Meskipun menyimpan lebih dari satu nilai dalam suatu bidang adalah hal yang mutlak tidak boleh dilakukan dalam SQL, tidak ada yang salah dengan itu di MongoDB. Itu karena bahasa kueri MongoDB dapat dengan mudah bekerja dengan array dan objek yang disematkan. Anda bahkan dapat membuat indeks pada bidang sub-dokumen dalam array, sehingga Anda dapat dengan mudah mencari objek yang disematkan di objek lain.

Saat Anda masih ingin mereferensikan objek dari koleksi lain, Anda dapat menggunakan DBRef, atau Anda juga dapat menggunakan pengenal unik lainnya (keunikan adalah salah satu dari sedikit hal yang dapat diterapkan oleh MongoDB. Untuk melakukannya, buat indeks unik dengan perintah createIndex ). Tetapi MongoDB tidak menegakkan konsistensi dalam kasus ini. Anda dapat membuat DBRefs yang mengarah ke ObjectIds yang tidak ada dan ketika dokumen yang ditunjuk DBRef dihapus, tidak akan terjadi apa-apa. Aplikasi bertanggung jawab untuk memastikan bahwa saat menghapus dokumen, semua dokumen yang merujuknya diperbarui.

Batasan juga tidak dapat ditegakkan oleh MongoDB. Itu bahkan tidak dapat menerapkan tipe tertentu untuk suatu bidang, karena sifat MongoDB yang tanpa skema. Sekali lagi, aplikasi Anda bertanggung jawab untuk memastikan bahwa data yang dimasukkan ke dalam mongodb mengikuti spesifikasi tertentu. Saat Anda ingin mengotomatiskan ini, ada kerangka kerja pemetaan relasional objek untuk MongoDB untuk banyak bahasa pemrograman yang tersedia.

Untuk menyelesaikan semuanya: MongoDB tidak "pintar" seperti database SQL. Itu tidak melakukan banyak hal sendiri. Itu melakukan apa yang diperintahkan untuk dilakukan oleh aplikasi, tidak lebih dan tidak kurang. Tapi itulah alasan mengapa begitu cepat (tidak ada pemeriksaan konsistensi yang mahal) dan fleksibel (tidak perlu modifikasi database untuk mengimplementasikan fitur baru).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Hubungan Mongoid dan ActiveRecord:metode tidak terdefinisi `quoted_table_name'

  2. Kesalahan mongo-go-driver Kesalahan klien baru ClientOptions dalam argumen ke mongo.NewClient

  3. temukan di dokumen BSON dengan driver MongoDB C++

  4. Metode findOne luwak mengambil dokumen yang valid dengan _id yang hilang

  5. Apakah menerapkan indeks 2dsphere pada skema luwak memaksa bidang lokasi diperlukan?