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

Persingkat ID MongoDB dalam javascript

Mengurai ObjectId dari permintaan tidak akan sulit (jadi saya tidak yakin mengapa itu menjadi masalah?). Jika tujuannya adalah untuk membuat URL yang dapat diketik, maka memiliki URL yang lebih pendek dan "lebih ramah" akan sangat berharga.

Anda tidak dapat mengambil angka 12 byte yang dijamin unik dalam pengaturan MongoDB yang di-sharded dan memadatkannya menjadi kurang dari 12 byte dan memastikannya unik (misalnya Anda menyebutkan di bawah tujuh karakter).

Dari dokumen , ObjectId MongoDB terdiri dari:

  • stempel waktu 4 byte
  • pengidentifikasi mesin 3 byte
  • id proses 2-byte
  • dan penghitung 3 byte.

Jadi, Anda harus mengorbankan sebagian dari ObjectId (dan karenanya sharding), atau merancang format pembuatan Id alternatif yang diindeks.

Meskipun Anda berpotensi melakukan hash ID, sekali lagi, konflik dapat muncul yang ingin Anda kodekan (sekali lagi, Anda tidak dapat mengurangi 12 byte menjadi 4 byte dan menjamin keunikan). Dan jika ada kemungkinan konflik (dan akan ada jika Anda mengurangi jumlah total bit yang tersedia), Anda tetap memerlukan semacam tabel sekunder (dan Anda harus membuat indeks untuk beralih dari ID yang dihasilkan ke ObjectId) .

Opsi hasil:

  • Hapus bit yang biasanya signifikan -- jika Anda melakukan ini, jangan shard koleksinya
  • Rancang sendiri solusi ID unik Anda sendiri (dan jika berada di web-farm, mungkin akan terlihat sangat mirip dengan MongoDB untuk menangani keunikan)
  • gunakan ObjectId sebagai angka panjang dan jalankan algoritma pemendekan di atasnya (ini perlu dipecah terlebih dahulu menjadi potongan yang lebih kecil karena melebihi presisi numerik JavaScript dari 53 bit), coba algoritma ini misalnya =encode itu (akan berakhir sekitar 17 karakter)
  • gunakan yang lain yang lebih pendek, tetapi unik sebagai ID untuk dokumen Anda
  • Termudah:Terima saja ID-nya panjang. :)

(Tidak jelas mengapa browser perlu melakukan konversi ini--mengapa ia memiliki ObjectID dokumen?)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Menggunakan $$ROOT dalam urutan agregasi

  2. Menggunakan pecl untuk menginstal driver Mongodb di OS X El Capitan (v10.11.1)

  3. Bagaimana cara mendeskripsikan koleksi di Mongo?

  4. Bagaimana saya bisa menggunakan tweet dari api streaming Twitter dan menyimpannya di mongodb

  5. Bagaimana cara menghitung persentil?