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

Haruskah saya menggunakan indeks sparse untuk flag boolean di mongodb?

Bendera yang jarang sedikit aneh. Untuk memahami kapan menggunakannya, Anda harus memahami mengapa "jarang" ada sejak awal.

Saat Anda membuat indeks sederhana pada satu bidang, ada entri untuk setiap dokumen, bahkan dokumen yang tidak memiliki bidang itu.

Misalnya, jika Anda memiliki indeks di {rarely_set_field : 1} , Anda akan memiliki indeks yang sebagian besar diisi dengan null karena bidang itu tidak ada dalam banyak kasus. Ini membuang-buang ruang dan tidak efisien untuk mencari.

{sparse:true} opsi akan menghilangkan null nilai, sehingga Anda mendapatkan indeks yang hanya berisi entri saat {rarely_set_field} didefinisikan.

Kembali ke kasus Anda.

Anda bertanya tentang penggunaan boolean + sparse. Namun sparse tidak terlalu memengaruhi "boolean", sparse mempengaruhi "disetel vs. tidak disetel".

Dalam kasus Anda, Anda mencoba mengambil unfinished . Untuk memanfaatkan sparse kuncinya bukan nilai boolean, tetapi fakta bahwa unfinished entri memiliki kunci itu dan entri "selesai" tidak memiliki kunci sama sekali.

{ _id: 1, data: {...}, unfinished: true }
{ _id: 2, data: {...} } // this entry is finished

Sepertinya Anda menggunakan Antrian

Anda pasti dapat memanfaatkan informasi di atas untuk mengimplementasikan indeks sparse. Namun, sepertinya Anda menggunakan Antrian. MongoDB dapat digunakan sebagai Antrian, berikut adalah dua contoh .

Namun, jika Anda melihat Antrian, mereka tidak melakukannya seperti yang Anda lakukan. Saya pribadi menggunakan MongoDB sebagai Antrian untuk beberapa sistem produksi dan ini berjalan cukup baik, tetapi uji beban yang Anda harapkan sebagai Antrian khusus akan berkinerja jauh lebih baik.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Node.js dan Passport Object tidak memiliki metode yang validPassword

  2. Bandingkan antara 2 bidang dokumen di MongoDB

  3. Apa perbedaan antara database jurnal dan non jurnal Mongodb?

  4. Agregat luwak mengembalikan hasil kosong

  5. Kesalahan saat mengaktifkan enkripsi data menggunakan kunci lokal MONGODB