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

Haruskah saya menggunakan Java String Pool untuk sinkronisasi berdasarkan id pelanggan unik?

Nah, jika string Anda cukup unik (mis., dihasilkan melalui hash kriptografis) sinkronisasi pada ID klien mungkin akan berfungsi , selama Anda memanggil String.intern() pada mereka terlebih dahulu. Karena ID unik, Anda tidak akan mengalami konflik dengan modul lain, kecuali jika Anda memberikan ID Anda ke modul tersebut dan mereka mengikuti praktik buruk menguncinya.

Yang mengatakan, itu mungkin ide yang buruk. Selain kemungkinan kecil suatu hari mengalami pertengkaran yang tidak perlu jika orang lain mengunci String yang sama misalnya, masalah utamanya adalah Anda harus intern() semua String . Anda objek, dan ini sering mengalami kinerja yang buruk karena implementasi asli dari tabel string intern, ukurannya tetap, dll. Jika Anda benar-benar perlu mengunci hanya berdasarkan String , Anda lebih baik menggunakan Interners.newWeakInterner() implementasi internal, yang kemungkinan akan berkinerja jauh lebih baik. Bungkus string Anda di kelas lain untuk menghindari bentrokan pada String . bawaan kunci. Detail lebih lanjut tentang pendekatan itu dalam jawaban ini .

Selain itu, seringkali ada objek alami lain yang harus dikunci, seperti mengunci objek sesi, dll.

Ini sangat mirip dengan pertanyaan ini yang memiliki jawaban yang lebih lengkap.

... atau, minimal, setidaknya memiliki cukup bit untuk membuat tabrakan tidak mungkin terjadi dan jika ID klien Anda bukan bagian dari permukaan serangan .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bisakah saya mengurangi teks di mongodb?

  2. Kelompokkan dan hitung di MongoDB

  3. 'autoIndexID' bukan opsi pengumpulan yang valid - mongoDB

  4. Manakah dari CouchDB atau MongoDB yang sesuai dengan kebutuhan saya?

  5. InvalidDocument:Tidak dapat menyandikan objek:<Pengguna:Objek pengguna> ReferenceField dengan MongoEngine