MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tôi có nên sử dụng Java String Pool để đồng bộ hóa dựa trên id khách hàng duy nhất không?

Chà nếu các chuỗi của bạn đủ duy nhất (ví dụ:được tạo thông qua băm mật mã) thì việc đồng bộ hóa trên ID ứng dụng khách có thể sẽ hoạt động , miễn là bạn gọi String.intern() trên chúng đầu tiên. Vì các ID là duy nhất, bạn không có khả năng xảy ra xung đột với các mô-đun khác, trừ khi bạn tình cờ chuyển ID của mình cho chúng họ thực hiện theo thói quen xấu là khóa chúng.

Điều đó nói rằng, nó có lẽ là một ý tưởng tồi. Ngoài khả năng một ngày bạn gặp phải sự tranh cãi không cần thiết nếu ai đó khóa trên cùng một String ví dụ, vấn đề chính là bạn phải intern() tất cả String của bạn các đối tượng và điều này thường có hiệu suất kém do bảng thực tập chuỗi được triển khai nguyên bản, nó có kích thước cố định, v.v. Nếu bạn thực sự cần khóa chỉ dựa trên String , bạn nên sử dụng Interners.newWeakInterner() thực hiện interner, có khả năng hoạt động tốt hơn nhiều. Bọc chuỗi của bạn trong một lớp khác để tránh xung đột trên String tích hợp sẵn Khóa. Thêm chi tiết về cách tiếp cận đó trong câu trả lời này .

Bên cạnh đó, thường có một đối tượng tự nhiên khác để khóa, chẳng hạn như khóa trong một đối tượng phiên, v.v.

Điều này khá giống với câu hỏi này có nhiều câu trả lời hơn.

... hoặc tối thiểu là phải có đủ bit để ít xảy ra va chạm và nếu ID khách hàng của bạn không phải là một phần của bề mặt tấn công .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb bản sao lỗi thay đổi tên máy chủ

  2. Sắp xếp kết quả tổng hợp addToSet

  3. ném mới mongoose.Error.MissingSchemaError (tên); ^ MongooseError:Schema chưa được đăng ký cho người bán mô hình

  4. Jackson không thể deserialize đối tượng MongoDB được truyền qua REST

  5. Làm thế nào để xây dựng một truy vấn có điều kiện trong Mongoose?