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

Praktik terbaik untuk memperbarui data yang digandakan secara tidak sinkron di mongodb

Pada dasarnya Anda memiliki 3 opsi:

  1. Cukup simpan userId dan kemudian ambil pengguna secara terpisah. Dengan cara ini Anda selalu mendapatkan hasil yang optimal dalam hal data baru. Tapi tentu saja lebih lambat. Pada dasarnya itulah yang dilakukan database relasional. SQL DB hanya akan melihat kunci asing dan mengambil data dengan id.

  2. Hidup dengan data yang kedaluwarsa. Simpan duplikat nama pengguna di dalam komentar. Terkadang ini adalah perilaku yang diinginkan, karena dengan cara ini Anda dapat menampilkan data persis seperti saat disimpan. Ini berarti:Jika John membuat komentar dan kemudian nama pengguna-nya diperbarui menjadi Paul, Anda masih dapat melihat, yang telah dibuat sebagai John. (Ini terutama berguna untuk faktur, ketika Anda merujuk seseorang di sana dan alamatnya berubah, daripada Anda tidak ingin memperbarui alamat faktur lama)

  3. Perbarui semua yang berisi nama pengguna, saat nama pengguna diperbarui. Ini juga tidak buruk, karena nama pengguna biasanya tidak boleh berubah. Jadi pembacaan akan selalu cepat, karena namanya tersimpan di dalam komentar. Dan jika namanya berubah, Anda harus memperbarui semua yang melibatkan pengguna. Ini adalah tugas yang lambat tentu saja, tetapi karena itu tidak boleh terjadi setiap menit, itu dapat ditoleransi.

    3.1 Anda dapat mengoptimalkan berbagai hal:jika nama pengguna berubah, ini akan disimpan di suatu tempat dan diterapkan pada tengah malam. Dengan cara ini Anda dapat mengumpulkan beberapa perubahan nama dan memperbarui semuanya secara bersamaan.

Seperti yang Anda lihat:NoSQL adalah tentang pilihan . Anda dapat melakukan hal-hal yang paling sesuai dengan data Anda. Tentu saja selalu ada tradeoff:Lebih lambat/lebih cepat, lebih banyak/lebih sedikit kode untuk ditulis, lebih mudah/lebih sulit untuk dipelihara.

Ringkasnya:

  1. Tulis cepat, data konsisten, pembacaan lambat
  2. Tulis cepat, data tidak konsisten, pembacaan cepat
  3. Tulis cepat, baca cepat, data menjadi konsisten setelah proses pembaruan yang mungkin memakan waktu lama. Dan proses update tentunya lambat.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kueri model lain dalam metode instance dari model yang berbeda

  2. Apakah mungkin mengganti nama bidang dalam output kueri Mongo di PyMongo?

  3. Buat pengguna MongoDB yang hanya dapat mengelola dokumen yang dibuatnya

  4. findOneAndUpdate - Perbarui objek pertama dalam array yang memiliki atribut tertentu

  5. Bagaimana Mengelola Database Besar Secara Efektif