Pada dasarnya ada dua skenario:segar dan basi .
Data baru
Menyimpan data duplikat itu mudah. Mempertahankan data duplikat adalah bagian yang sulit. Jadi hal termudah untuk dilakukan adalah menghindari pemeliharaan, dengan tidak menyimpan data duplikat apa pun sejak awal. Ini terutama berguna jika Anda membutuhkan data baru . Hanya simpan referensi, dan kueri koleksi saat Anda perlu mengambil informasi.
Dalam skenario ini, Anda akan memiliki beberapa overhead karena kueri tambahan. Alternatifnya adalah melacak semua lokasi data duplikat, dan memperbarui semua instance pada setiap pembaruan. Ini juga melibatkan overhead, terutama dalam hubungan N-ke-M seperti yang Anda sebutkan. Jadi bagaimanapun juga, Anda akan memiliki beberapa overhead, jika Anda memerlukan data baru. Anda tidak dapat memiliki yang terbaik dari kedua dunia.
Data basi
Jika Anda mampu untuk memiliki data basi, hal-hal menjadi jauh lebih mudah. Untuk menghindari overhead kueri, Anda dapat menyimpan data duplikat. Untuk menghindari keharusan mempertahankan data duplikat, Anda tidak akan menyimpan data duplikat. Setidaknya tidak aktif .
Dalam skenario ini Anda juga ingin menyimpan hanya referensi antar dokumen. Kemudian gunakan pekerjaan pengurangan peta secara berkala untuk menghasilkan data duplikat. Anda kemudian dapat menanyakan hasil pengurangan peta tunggal, daripada koleksi terpisah. Dengan cara ini Anda menghindari overhead kueri, tetapi Anda juga tidak perlu mencari perubahan data.
Ringkasan
Hanya simpan referensi ke dokumen lain. Jika Anda mampu membeli data yang basi, gunakan pekerjaan pengurangan peta secara berkala untuk menghasilkan data duplikat. Hindari memelihara duplikat data; ini rumit dan rawan kesalahan.