Tôi đang sử dụng System.currentTimeMillis()
(trả về số long
số nguyên) trong Java để tạo ID duy nhất cho các thực thể cơ sở dữ liệu vì tôi cho rằng không thể trùng lặp tại bất kỳ thời điểm nào.An toàn để sử dụng System.currentTimeMillis() để tạo một ID cơ sở dữ liệu duy nhất?
Đây có phải là giả định an toàn không?
Ví dụ, tại thời điểm này tôi có được điều này:
1296691225227
Về xác suất thất bại, tôi nghi ngờ cách tiếp cận hàng nghìn giây sẽ tồn tại trong thử nghiệm đơn vị. – Dolph
@Dolph - hoặc kiểm tra tải hệ thống. Chắc chắn nó không nên ... nếu bạn đang làm chúng đúng cách. –
Tôi thích UUID rất nhiều tuy nhiên nó là khá kém hiệu quả (hiểu rằng cách cứng ...) cách thông thường để lưu trữ là UUID.toString() đó là khủng khiếp 36bytes dài (thường được ánh xạ tới một cái gì đó như varchar (36)). Chỉ số DB nên được lưu trong bộ nhớ - chỉ mục càng lớn, càng cần nhiều bộ nhớ hơn, việc lập chỉ mục sẽ chậm hơn, v.v. Tôi khuyên bạn nên sử dụng một số bit phân vùng cao/phân cụm và id 'long'. – bestsss