सवाल समय आधारित यूयूआईडी कैसे उत्पन्न करें?


मैं जावा में समय आधारित यूयूआईडी उत्पन्न करना चाहता हूं - java.util.UUID.randomUUID () एक यूयूआईडी संस्करण जेनरेट करता है 4. संस्करण 1 (समय आधारित) यूयूआईडी कैसे उत्पन्न करें? क्या इसके लिए कोई अलग पुस्तकालय है या यह जावा 7 एपीआई में कुछ प्रदान किया गया है और मुझे यह याद आ रही है।


45
2017-08-15 01:20


मूल


नहीं, जावा एसडीके में एक अलग यूयूआईडी कक्षा शामिल नहीं है UUID। - Brian Roach
यूयूआईडी कक्षा यूआईआईडी से टाइमस्टैम्प प्राप्त करने के लिए सार्वजनिक लंबी टाइमस्टैंप () जैसी विधियां प्रदान करती है, यदि यह समय आधारित है .. लेकिन इसे उत्पन्न करने के लिए कोई विधि नहीं है - dogfish
जेयूजी देखें @ wiki.fasterxml.com/JugHome, यह टाइप 1 कर सकते हैं। - Jason C
जुग बहुत अच्छा काम करता है! - dogfish


जवाब:


Com.eaio.uuid.UUID का उपयोग करके बहुत सावधान रहें, यदि आपको वर्तमान समय के अलावा समय के अनुसार GUID उत्पन्न करने की आवश्यकता है, क्योंकि यह हमेशा दिए गए समय के लिए एक ही यूयूआईडी उत्पन्न करेगा। इसलिए यदि आपके डेटा को यूयूआईडी उत्पन्न करने की आवश्यकता है, जहां रिकॉर्ड एक ही समय हो सकते हैं, तो यह एक ही यूयूआईडी उत्पन्न करेगा।

हमें रिकॉर्ड्स के लिए यूयूआईडी उत्पन्न करने के लिए इसकी आवश्यकता थी, जिसे आगे बनाया गया है और एक ही समय में कई रिकॉर्ड भी हैं, हमने UUIDGen.createTime () का उपयोग करने की कोशिश करके इसे ट्विक करने का प्रयास किया। हमने पाया कि ऑर्डर के रिकॉर्ड के लिए समय को बदलने के लिए इसका दुष्प्रभाव है। यदि बनाने के बाद एक अनुरोध है UUID पिछले अनुरोध की तुलना में पुराना समय पुराना है, आप एक होने के अंत में UUID, जो पिछले अनुरोध के समय टिकट पर आधारित है।

सभी विश्लेषण के बाद, हमें बस बनाने के लिए वापस जाना पड़ा UUID सृजन के समय, ताकि हमें इसे तर्क के रूप में पारित न किया जाए। जो भी समाधान हम उत्पन्न करने के लिए आते हैं UUID बाद में, हर किसी को एक कमी है।


10
2017-08-05 05:15





String timeuuid = com.datastax.driver.core.utils.UUIDs.timeBased().toString();

अच्छी तरह से देखिए https://docs.datastax.com/en/drivers/java/2.0/com/datastax/driver/core/utils/UUIDs.html


6
2018-03-30 05:55



यह भी देखें datastax-oss.atlassian.net/browse/JAVA-109 - Vadzim


फास्टरएक्सएमएल जावा यूयूड जेनरेटर (जेयूजी)

https://github.com/cowtowncoder/java-uuid-generator

UUID uuid = Generators.timeBasedGenerator().generate();

1
2018-02-12 12:13