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

Struktur Basis Data MongoDB dan Bantuan Praktik Terbaik

Skema basis data Anda bagi saya terlihat seperti skema basis data relasional 'klasik'. Mongodb cocok untuk denormalisasi data. Saya kira ketika Anda menampilkan rute, Anda memuat semua pelanggan, pengemudi, truk terkait.

Jika Anda ingin membuat sistem Anda sangat cepat, Anda dapat menyematkan semuanya dalam koleksi rute.

Jadi saya sarankan modifikasi skema Anda berikut:

  1. pelanggan - apa adanya
  2. truk - apa adanya
  3. pengemudi - apa adanya
  4. daftar rute:

    Menyematkan data tentang pelanggan di dalam perhentian alih-alih referensi. Juga tertanam truk. Dalam hal ini skema akan menjadi:

     {
         "route_name": "monday_1",
         "day": "monday",
         "truck": {
             _id = 1,
             // here will be all truck data
         },
         "stops": [{
             "customer": {
                 _id = 1,
                 //here will be all customer data
             }
         }, {
             "customer": {
                 _id = 2,
                 //here will be all customer data
             }
         }]
     }
    
  5. rute:

    Saat pengemudi memulai rute baru, salin rute dari daftar rute dan sebagai tambahan informasi driver yang disematkan:

     {
         //copy all route-list data (just make new id for the current route and leave reference to routes-list. In this case you will able to sync route with route-list.)
         "_id": "1",
         route_list_id: 1,
         "start_time": "04:31 AM",
         "status": "active",
         driver: {
             //embedd all driver data here
         },
         "stops": [{
             "customer": {
                 //all customer data
             },
             "status": "complete",
             "start_time": "04:45 AM",
             "finish_time": "04:48 AM",
             "elapsed_time": "3"
         }]
     }
    

Saya kira Anda bertanya pada diri sendiri apa yang dilakukan jika driver, pelanggan, atau data yang didenormalisasi lainnya berubah dalam koleksi utama. Ya, Anda perlu memperbarui semua data yang didenormalisasi dalam koleksi lain. Anda mungkin perlu memperbarui miliaran dokumen (tergantung pada ukuran sistem Anda) dan tidak apa-apa. Anda dapat melakukannya secara asinkron jika itu akan memakan banyak waktu.

Apa manfaat dari struktur data di atas?

  1. Setiap dokumen berisi semua data yang mungkin perlu Anda tampilkan di aplikasi Anda. Jadi, misalnya, Anda tidak perlu memuat pelanggan, pengemudi, truk terkait saat Anda membutuhkan rute tampilan.
  2. Anda dapat membuat kueri sulit apa pun ke database Anda. Misalnya dalam skema Anda, Anda dapat membuat kueri yang akan mengembalikan semua rute yang berisi pemberhentian di perhentian pelanggan dengan nama ="Tagihan" (Anda perlu memuat pelanggan berdasarkan nama terlebih dahulu, dapatkan id, dan lihat berdasarkan id pelanggan dalam skema Anda saat ini).

Mungkin Anda bertanya pada diri sendiri bahwa data Anda dapat tidak disinkronkan dalam beberapa kasus, tetapi untuk menyelesaikannya, Anda hanya perlu membuat beberapa pengujian unit untuk memastikan bahwa Anda memperbarui data yang didenormalisasi dengan benar.

Harapan di atas akan membantu Anda untuk melihat dunia dari sisi tidak relasional, dari sudut pandang database dokumen.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana data dalam database MongoDB disimpan di disk?

  2. Mengurutkan mongo pada kondisi yang diperhitungkan

  3. Luwak bagaimana cara menulis kueri dengan kondisi if?

  4. Konektor Sumber Mongodb Kafka Resmi Terdistribusi dengan Banyak tugas Tidak berfungsi

  5. MongoDB - Cara memilih hanya string numerik / Periksa apakah string numerik di mongo-Shell