UUID কীভাবে টাইমস্ট্যাম্প সংরক্ষণ করে?

বেশ কয়েকটি UUID সংস্করণ সরাসরি তাদের কাঠামোর মধ্যে একটি টাইমস্ট্যাম্প এম্বেড করে। RFC 4122-এ প্রবর্তিত UUID v1, অক্টোবর 15, 1582 থেকে 100-ন্যানোসেকেন্ড বিরতি প্রতিনিধিত্বকারী একটি 60-বিট গ্রেগোরিয়ান টাইমস্ট্যাম্প এনকোড করে। UUID v6 আরও ভালো সর্টযোগ্যতার জন্য একই টাইমস্ট্যাম্প ফিল্ডগুলি পুনর্বিন্যাস করে, এবং RFC 9562-এ সংজ্ঞায়িত UUID v7, মিলিসেকেন্ডে একটি 48-বিট Unix epoch টাইমস্ট্যাম্প সংরক্ষণ করে। এই এম্বেড করা টাইমস্ট্যাম্পগুলি একটি UUID তৈরির সঠিক মুহূর্ত পুনরুদ্ধার করা সম্ভব করে — যা ডিবাগিং, অডিটিং এবং ফরেনসিক বিশ্লেষণের জন্য উপযোগী।

প্রতিটি UUID সময়ের তথ্য বহন করে না। সংস্করণ 3, 4 এবং 5 র্যান্ডম ডেটা বা নেমস্পেস হ্যাশ থেকে তৈরি, তাই এগুলিতে কোনো পুনরুদ্ধারযোগ্য টাইমস্ট্যাম্প নেই। সংস্করণ 2 (DCE Security) একটি টাইমস্ট্যাম্প অন্তর্ভুক্ত করে কিন্তু বাস্তবে খুব কমই ব্যবহৃত হয়।

টুলের বিবরণ

এই টুলটি টাইম-ভিত্তিক UUID-এ এম্বেড করা টাইমস্ট্যাম্প বের করে এবং ডিকোড করে। যেকোনো UUID পেস্ট করুন এবং তাৎক্ষণিকভাবে একাধিক ফরম্যাটে এনকোড করা তারিখ ও সময় দেখুন: ISO 8601, UTC, স্থানীয় সময়, এবং সেকেন্ড ও মিলিসেকেন্ড উভয়ে Unix টাইমস্ট্যাম্প। টুলটি স্বয়ংক্রিয়ভাবে UUID সংস্করণ শনাক্ত করে এবং সঠিক ডিকোডিং অ্যালগরিদম প্রয়োগ করে।

উদাহরণ

UUID v1 ইনপুট:

6ba7b810-9dad-11d1-80b4-00c04fd430c8 → এপ্রিল 7, 1998

UUID v7 ইনপুট:

018f3e88-5c00-7b3a-8512-2d4a3f8e9c01 → মে 3, 2024

UUID v4 ইনপুট (কোনো টাইমস্ট্যাম্প নেই):

550e8400-e29b-41d4-a716-446655440000 → "এই UUID সংস্করণে কোনো টাইমস্ট্যাম্প নেই"

বৈশিষ্ট্যসমূহ

  • UUID v1 (গ্রেগোরিয়ান টাইমস্ট্যাম্প), v6 (পুনর্বিন্যস্ত গ্রেগোরিয়ান), এবং v7 (Unix epoch মিলিসেকেন্ড) সমর্থন করে
  • ISO 8601, UTC, স্থানীয় সময় এবং Unix টাইমস্ট্যাম্প ফরম্যাটে ফলাফল প্রদর্শন করে
  • স্বয়ংক্রিয়ভাবে UUID সংস্করণ শনাক্ত করে এবং সঠিক ডিকোডিং পদ্ধতি নির্বাচন করে
  • বের করার চেষ্টা করার আগে UUID ফরম্যাট যাচাই করে
  • যেসব UUID সংস্করণে টাইমস্ট্যাম্প নেই সেগুলির জন্য স্পষ্ট বার্তা প্রদর্শন করে

এটি কীভাবে কাজ করে

প্রতিটি টাইম-ভিত্তিক UUID সংস্করণ তার টাইমস্ট্যাম্প ভিন্নভাবে সংরক্ষণ করে:

  • UUID v1 একটি 60-বিট গ্রেগোরিয়ান টাইমস্ট্যাম্পকে তিনটি ফিল্ডে বিভক্ত করে: time_low (বিট 0–31), time_mid (বিট 32–47), এবং time_hi (বিট 48–59)। টাইমস্ট্যাম্পটি অক্টোবর 15, 1582 থেকে 100-ন্যানোসেকেন্ড বিরতি গণনা করে।
  • UUID v6 v1 টাইমস্ট্যাম্প ফিল্ডগুলি পুনর্বিন্যাস করে যাতে সবচেয়ে গুরুত্বপূর্ণ বিটগুলি প্রথমে আসে, একই গ্রেগোরিয়ান epoch ব্যবহার করে তৈরির সময় অনুযায়ী UUID স্বাভাবিকভাবে সর্টযোগ্য করে তোলে।
  • UUID v7 একটি সহজ পদ্ধতি অনুসরণ করে: প্রথম 48 বিট মিলিসেকেন্ডে একটি আদর্শ Unix টাইমস্ট্যাম্প ধারণ করে, যা বের করা সহজ এবং আধুনিক সিস্টেমের সাথে সামঞ্জস্যপূর্ণ।

ব্যবহারের ক্ষেত্রসমূহ

  • বিতরণকৃত সিস্টেম ডিবাগিং — একটি রেকর্ড বা ইভেন্টে নির্ধারিত UUID ডিকোড করে ঠিক কখন এটি তৈরি হয়েছিল তা নির্ধারণ করুন
  • অডিট ও ফরেনসিক — যেসব ডেটাবেসে প্রাথমিক কী হিসেবে টাইম-ভিত্তিক UUID ব্যবহার করা হয় সেগুলিতে তৈরির টাইমস্ট্যাম্প যাচাই করুন
  • মাইগ্রেশন পরিকল্পনা — সিস্টেমের মধ্যে মাইগ্রেট করার আগে ডেটার বিতরণ ও বয়স বোঝার জন্য UUID টাইমস্ট্যাম্প বিশ্লেষণ করুন