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

Apakah ada alasan mengapa saya harus/tidak boleh menggunakan ObjectId di url RESTful saya

Setelah menggunakan ObjectId s di RESTful API beberapa kali, kelemahan terbesarnya adalah mereka sangat berisik dalam hal memiliki URL yang bersih. Anda akan membiarkannya sebagai nomor HEX, atau mengonversinya menjadi bilangan bulat yang sangat besar, keduanya membuat URL yang agak tidak ramah:

/rest/resource/52435dbecb970072ec3a780f
/rest/resource/25459211534898951476729247759

Saya telah menambahkan "judul" ke URL (seperti yang dilakukan StackOverflow) untuk membuatnya sedikit lebih ramah:

    /rest/resource/52435dbecb970072ec3a780f/FriendlyResourceName

Tentu saja, "judul" diabaikan dalam perangkat lunak, tetapi pengguna melihatnya dan secara mental dapat mengabaikan segmen ID gila.

Sangat sedikit manfaat yang dapat dipelajari dari infrastruktur dengan memaparkannya:

  1. Stempel waktu
  2. ID Mesin
  3. ID Proses
  4. Nilai kenaikan acak

Selain berpotensi mengumpulkan ID Mesin (yang umumnya akan menunjukkan jumlah klien yang membuat ObjectId s), tidak banyak di sana.

ObjectId s tidak acak, jadi Anda tidak dapat menggunakannya untuk keamanan. Anda akan selalu perlu mengamankan data. Meskipun mereka mungkin tidak bertambah dengan cara yang jelas, akan mudah untuk menemukan sumber daya lain melalui kekerasan. Namun, jika Anda menggunakan ID yang bertambah secara otomatis sebelumnya, ini bukan masalah baru bagi Anda.

Jika Anda tahu bahwa Anda tidak membuat banyak dokumen baru pada waktu tertentu, mungkin ada baiknya menggunakan salah satu pola di sini untuk membuat ID yang lebih sederhana. Dalam satu aplikasi yang saya tulis, saya menggunakan teknik auto-inc untuk beberapa ID dokumen yang ditampilkan di URL, dan untuk yang hanya Ajax, saya menggunakan ObjectId s. Saya benar-benar ingin beberapa URL mudah "diketik". Tidak ada bentuk ObjectId mudah diketik oleh pengguna akhir. Itulah salah satu kelebihan MongoDB -- Anda dapat menggunakan _id apa saja format yang Anda inginkan. :)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pembaruan koleksi meteor dengan id tradisional

  2. Cara memperbarui subdokumen di mongodb

  3. Benchmarking MongoDB - Mendorong Kinerja NoSQL

  4. 3 Cara Membuat Indeks di MongoDB

  5. lanjutkan di cursor.forEach()