UUID কী?
একটি UUID (Universally Unique Identifier) হলো একটি ১২৮-বিটের মান যা 550e8400-e29b-41d4-a716-446655440000-এর মতো ৩৬-অক্ষরের স্ট্রিং হিসেবে রেন্ডার হয়। ফরম্যাট এবং সংস্করণের সিমান্টিক্স v1 থেকে v5-এর জন্য RFC 4122 দ্বারা এবং নতুন v6, v7 এবং v8 সংস্করণের জন্য RFC 9562 দ্বারা সংজ্ঞায়িত। এই টুল v4 (বিশুদ্ধ এলোমেলো), v1 (টাইমস্ট্যাম্প প্লাস এলোমেলো নোড ID) এবং v7 (Unix-মিলিসেকেন্ড টাইমস্ট্যাম্প প্রিফিক্স প্লাস এলোমেলো সাফিক্স, তৈরির সময় অনুযায়ী সাজানোযোগ্য) তৈরি করে — সব আপনার ব্রাউজারে, প্ল্যাটফর্মের Web Crypto API ব্যবহার করে। কোনো ডেটা সার্ভারে পাঠানো হয় না।
UUID তৈরি কীভাবে কাজ করে?
প্রতিটি সংস্করণ ভিন্নভাবে নির্ধারিতবাদ, সাজানোযোগ্যতা এবং এনট্রপি বিনিময় করে। টুলটি আপনার নির্বাচনের উপর ভিত্তি করে সঠিক অ্যালগরিদম বেছে নেয়:
- v4 (এলোমেলো) ব্রাউজারের
crypto.randomUUID()কল করে, যা ১২২ বিট ক্রিপ্টোগ্রাফিক এলোমেলোতা ৬টি স্থির বিট (সংস্করণ0100এবং10ভেরিয়েন্ট) সঠিক অবস্থানে সেট করে ফেরত দেয়। সংঘর্ষ জ্যোতির্বিজ্ঞানগতভাবে অসম্ভব। - v1 (টাইমস্ট্যাম্প + নোড) একটি ৬০-বিট Gregorian টাইমস্ট্যাম্প (1582-10-15 থেকে ১০০-ন্যানোসেকেন্ড টিক)
time_low/time_mid/time_hi_and_version-এ প্যাক করে, সংস্করণ নিবল0001সেট করে, ভেরিয়েন্ট বিট সেট করে ১৪-বিট ক্লক সিকোয়েন্স বেছে নেয় এবং মাল্টিকাস্ট বিট জোর করে চালু করে একটি এলোমেলো ৪৮-বিট নোড ID ব্যবহার করে। - v7 (সাজানোযোগ্য টাইমস্ট্যাম্প), RFC 9562 §5.7 অনুযায়ী, একটি ৪৮-বিট বিগ-এন্ডিয়ান Unix-মিলিসেকেন্ড টাইমস্ট্যাম্প, তারপর ৪-বিট সংস্করণ
0111, তারপর ১২টি এলোমেলো বিট, তারপর ২-বিট ভেরিয়েন্ট10, তারপর আরও ৬২টি এলোমেলো বিট বিন্যস্ত করে। কারণ টাইমস্ট্যাম্প সবচেয়ে গুরুত্বপূর্ণ বিটে থাকে, v7 UUID তৈরির ক্রমে লেক্সিকোগ্রাফিক্যালি সাজায়। - সমস্ত এলোমেলোতা
crypto.getRandomValues()থেকে আসে, ব্রাউজারের ক্রিপ্টোগ্রাফিক্যালি-নিরাপদ RNG। v1 এবং v7 উভয়ই একটি ইন্ট্রা-টিক মনোটনিক গার্ড অন্তর্ভুক্ত করে তাই একই ক্লক টিকের মধ্যে দুটি পরপর কল এখনও দ্বিতীয়টিকে প্রথমটির উপরে সাজায় — বাল্ক জেনারেশন রানের জন্য গুরুত্বপূর্ণ। - ফরম্যাট পাইপলাইন তৈরির পরে চলে। আপনি হাইফেন সরাতে, আপারকেসে পরিবর্তন করতে, ব্রেসে মান মোড়াতে (
{…}— Microsoft GUID কনভেনশন), বা কাঁচা ১৬ বাইট base64 হিসেবে রেন্ডার করতে পারেন (২২-অক্ষরের আউটপুট, কোনো প্যাডিং নেই)।
কেন এই UUID জেনারেটর ব্যবহার করবেন?
- কিছুই আপনার ব্রাউজার ছেড়ে যায় না। Web Crypto API স্থানীয়ভাবে চলে; প্রাথমিক ডকুমেন্ট লোডের পরে পেজ শূন্য নেটওয়ার্ক অনুরোধ করে। DevTools খুলুন, Generate ক্লিক করুন এবং Network প্যানেল নীরব থাকে।
- RFC-সঠিক আউটপুট। v4 RFC 4122 §4.4 অনুসরণ করে, v1 §4.2 এবং §4.5 অনুসরণ করে এবং v7 RFC 9562 §5.7 অনুসরণ করে। সংস্করণ নিবল এবং ভেরিয়েন্ট বিট সেই অবস্থানে রাখা হয় যেখানে মানদণ্ড বলে রাখতে — প্রতিটি UUID ক্যানোনিকাল সংস্করণ রেগেক্সের বিপরীতে যাচাই করে।
- ডেটাবেস কীর জন্য সাজানোযোগ্য v7। Postgres, MySQL বা SQL Server-এ ক্লাস্টারড প্রাথমিক কী হিসেবে ব্যবহৃত একটি v7 UUID সন্নিবেশগুলো ইনডেক্সে অ্যাপেন্ড-অনলি রাখে — কোনো পেজ বিভাজন নেই, কোনো এলোমেলো I/O নেই — বিশ্বব্যাপী অনন্য থেকেও।
- রেট লিমিট ছাড়া বাল্ক জেনারেশন। একসাথে ১, ১০, ১০০ বা ১,০০০ UUID তৈরি করুন। কোনো কোটা এবং কোনো সাইনআপ নেই — টুলটি আপনার ট্যাবে চলে, তাই সীমা আপনার CPU, কোনো ভেন্ডরের API টায়ার নয়।
UUID-এর সাধারণ প্রয়োগ কী কী?
UUID যেখানে একটি সিস্টেমের কেন্দ্রীয় কর্তৃপক্ষের সাথে সমন্বয় ছাড়াই একটি বিশ্বব্যাপী-অনন্য আইডেন্টিফায়ার প্রয়োজন সেখানে দেখা যায়:
- ডেটাবেস প্রাথমিক কী। অটো-ইনক্রিমেন্টিং পূর্ণ সংখ্যা সারি গণনা ফাঁস করে এবং শার্ডিং ভেঙে দেয়। UUID শার্ড জুড়ে স্থিতিশীল, অঞ্চল জুড়ে মার্জ করা নিরাপদ এবং (v7 দিয়ে) পেজ বিভাজন ছাড়াই B-tree সন্নিবেশ গরম রাখে।
- অনুরোধ সংযোগ ID। HTTP মিডলওয়্যার প্রতিটি আগত অনুরোধে একটি v4 UUID সংযুক্ত করে, প্রতিটি স্প্যানে লগ করে এবং ডাউনস্ট্রিমে প্রচার করে (প্রায়ই
X-Request-Idহেডার হিসেবে)। একজন গ্রাহক যখন বাগ রিপোর্ট করেন, সাপোর্ট ইঞ্জিনিয়ার ID পেস্ট করেন এবং সম্পূর্ণ অনুরোধ ট্রেস প্রকাশ পায়। - Idempotency কী। পেমেন্ট API (Stripe, Adyen, Square) একটি
Idempotency-Keyহেডার গ্রহণ করে যাতে একটি পুনরায় চেষ্টা করা অনুরোধ গ্রাহককে দুবার চার্জ না করে। ক্লায়েন্ট-জেনারেটেড UUID প্রতিটি লজিক্যাল অপারেশনে কী অনন্য থাকার নিশ্চয়তা দেয়।
UUID উদাহরণ কেমন দেখায়?
Node.js বা আধুনিক ব্রাউজারে, ওয়ান-লাইনার crypto.randomUUID() একটি তাজা v4 UUID ফেরত দেয় — উদাহরণস্বরূপ 3f50b5a8-2c54-4b9c-9c1f-3e5c7e2b8d12। ক্লাস্টারড প্রাথমিক কী হবে এমন ডেটাবেস কলামে UUID যাচ্ছে হলে, v7 তৈরি করুন: এক মিলিসেকেন্ড ব্যবধানে তৈরি দুটি v7 মান, যেমন 0190a3b0-7d4f-7c9e-8b21-a4d6f0bd9c11 এবং 0190a3b0-7d50-7f15-9c4e-72b3e0c1d8a4, তৈরির ক্রমে লেক্সিকোগ্রাফিক্যালি সাজায়।
এই UUID জেনারেটর একটি কাজ করে: একটি ক্লিককে একটি বা অনেক RFC-সম্মত আইডেন্টিফায়ারে পরিণত করে, আপনার প্রয়োজনীয় ফরম্যাটে, আপনার অনুরোধ সার্ভারে না পাঠিয়ে। একটি সংস্করণ, একটি সংখ্যা, একটি ফরম্যাট বেছে নিন — তৈরি করুন, কপি করুন, এগিয়ে যান।