এই সাইটটি Kohei Koyanagi-এর তৈরি সফটওয়্যার দিয়ে স্বয়ংক্রিয়ভাবে বহু ভাষায় অনূদিত। যথাসম্ভব নির্ভুল তথ্যের জন্য মূল ইংরেজি সংস্করণ দেখুন।

Splync এর দ্বৈত শনাক্তকারী পদ্ধতি UUID এবং অটো-ইনক্রিমেন্টেড ইনট

Splync সংবেদনশীল আইডির জন্য দুটি শনাক্তকারী ব্যবহার করে

Splync এর ডাটাবেসে, প্রতিটি ব্যবহারকারী এবং প্রকল্প দুটি ভিন্ন আইডি দ্বারা সনাক্ত করা হয়: একটি UUID এবং একটি অটো-ইনক্রিমেন্টেড পূর্ণসংখ্যা। অটো-ইনক্রিমেন্টেড পূর্ণসংখ্যাটি সবচেয়ে পরিচিত — এটি কেবল একটি কাউন্টার: ১, ২, ৩, ইত্যাদি। Splync এই পূর্ণসংখ্যাগুলি সার্ভার ডাটাবেসের প্রায় প্রতিটি টেবিল সংগঠিত করতে ব্যবহার করে কারণ এগুলি সহজ, দ্রুত এবং সংযোগের জন্য কার্যকর। তবে, আমরা কখনই এই অভ্যন্তরীণ সংখ্যাগুলি অ্যাপে প্রকাশ করি না। উদাহরণস্বরূপ, আপনি যদি ৪২ তম ব্যবহারকারী হিসেবে সাইন আপ করেন, তবে আপনার অভ্যন্তরীণ আইডি ডাটাবেসে হবে ৪২। কিন্তু আপনার iOS অ্যাপ কখনই "৪২" দেখে না। এর পরিবর্তে, অ্যাপটি আপনাকে উপস্থাপন করতে একটি UUID ব্যবহার করে। আমরা প্রকল্পের ক্ষেত্রেও একই পদ্ধতি প্রয়োগ করি — একটি প্রকল্প আইডি ডাটাবেসের ভিতরে "৭" হতে পারে, তবে অ্যাপটি সর্বদা একটি দীর্ঘ UUID ব্যবহার করে উল্লেখ করে।

UUID কি

UUID এর অর্থ হল Universally Unique Identifier। Splync সংস্করণ ৪, বৈকল্পিক ১ UUID ব্যবহার করে, যা RFC 4122 এর সাথে সামঞ্জস্যপূর্ণ — এটি সবচেয়ে ব্যাপকভাবে গৃহীত মানগুলির মধ্যে একটি। এটি একটি র‍্যান্ডমভাবে তৈরি করা স্ট্রিং, যা দেখতে কিছুটা 949ca11c-a6ed-48a3-b40a-fa9727494917 এর মতো। একটি UUID সাধারণত ৩২ হেক্সাডেসিমাল অক্ষর হিসাবে লেখা হয় যা পাঁচটি অংশে বিভক্ত হয় এবং হাইফেন দ্বারা আলাদা করা হয়। এটি বিশ্বব্যাপী অনন্য হওয়ার জন্য ডিজাইন করা হয়েছে, যার মানে এটি বিভিন্ন সার্ভার বা ডাটাবেস জুড়ে সংঘর্ষ করবে না। গাণিতিকভাবে, প্রায় 16^32 = 2^128 সম্ভাব্য সংমিশ্রণ রয়েছে। যাইহোক, যেহেতু ছয়টি বিট বৈকল্পিক এবং সংস্করণ নির্দেশ করতে সংরক্ষিত, তাই মোট স্বতন্ত্র সংস্করণ-৪, বৈকল্পিক-১ UUID এর সংখ্যা প্রায় 2^122, বা প্রায় 5.3 x 10^36 — একটি বিশাল বড় সংখ্যা যা বাস্তবিক অনন্যতা নিশ্চিত করে।

১ / ৫,৩০০,০০০,০০০,০০০,০০০,০০০,০০০,০০০,০০০,০০০,০০০ কতটা ছোট

প্রতি UUIDv4 জোড়ার প্রায় ১ এর মধ্যে ৫.৩ × 10^36 মিলিত হওয়ার সম্ভাবনা রয়েছে। এই সংখ্যা এতই ছোট যে এটি প্রায় মনে হয় মানব কল্পনার মধ্যে যুক্তি করে না। কল্পনা করুন, একবারে ৪৭টি ডাইস রোল করছেন। সবগুলো এক পাওয়ার সম্ভাবনা — প্রতিটি ডাইসে "১" দেখাচ্ছে — প্রায় ৬^৪৭ এর মধ্যে ১, বা আনুমানিক ৩.৭ × 10^36 এর মধ্যে ১। এটি একটি UUID সংঘর্ষের সাথে একই ক্রমের। এখন, কল্পনা করুন পৃথিবীর প্রতিটি মানুষ — প্রায় আট বিলিয়ন আমরা — প্রতি মিলিসেকেন্ডে সেই ৪৭টি ডাইস রোল করছি ট্রিলিয়ন বছর ধরে। এটি প্রায় ২.৫ × 10^32 মোট প্রচেষ্টা। এতকিছুর পরেও, কেউ কোথাও একবারে ৪৭টি এক পাওয়ার সম্ভাবনা মাত্র একের মধ্যে দশ হাজার। এই কারণেই দুটি UUIDv4 এর সংঘর্ষের সম্ভাবনা এতই কম। এটি "বিরল" নয়। এটি মহাজাগতিকভাবে অবাস্তব — এমন একটি মিল যা গণিতবিদদের তাদের কফি ফেলে দিতে এবং মহাবিশ্বের জন্য বাগ পরীক্ষা করতে বাধ্য করবে।

একটি UUID তৈরি করা কি সহজ

প্রথমে মনে হয়, একটি UUID তৈরি করা সহজ — কারণ এটি কেবল একটি র্যান্ডম দেখতে আলফানিউমেরিক স্ট্রিং। কিন্তু আপনি নিজে কলম এবং কাগজ দিয়ে একটি লিখতে চেষ্টা করুন। আপনি ৩৬টি অক্ষর লিখতে পারেন, ঠিক আছে, তবে আপনি যদি হাজার বার এই অনুশীলন করেন, স্পষ্ট প্যাটার্নগুলি উদ্ভব হবে। হয়তো আপনি নির্দিষ্ট সংখ্যা যেমন ৩ বা ৮ পছন্দ করেন, এবং x এর মতো অক্ষর খুব কমই ব্যবহার করেন। একটি কম্পিউটার এই পক্ষপাতগুলি তাৎক্ষণিকভাবে সনাক্ত করতে পারে। একটি ক্ষতিকারক হ্যাকার আপনার অভ্যাস বিশ্লেষণ করতে পারে এবং আপনার "র্যান্ডম" গোপন স্ট্রিংটি এক দিনের মধ্যে সংকুচিত করতে পারে। তারপর, যদি আপনি একটি কম্পিউটার ব্যবহার করেন এবং প্রতিটি অঙ্ক তৈরি করতে rand() কল করেন। এটি ভাল — কিন্তু যথেষ্ট নয়। সাধারণ প্রোগ্রামিং পরিবেশের অনেক "র্যান্ডম" সংখ্যা জেনারেটর ছদ্মর্যান্ডম, যার মানে তারা একটি অভ্যন্তরীণ বীজ থেকে শুরু করে একটি পূর্বানুমেয় গাণিতিক ক্রম অনুসরণ করে, যা সাধারণত সিস্টেম সময়ের উপর ভিত্তি করে। যদি কেউ সেই বীজটি আবিষ্কার বা অনুমান করে, তবে তারা আপনার জেনারেটর দ্বারা উত্পন্ন প্রতিটি মান পুনরুত্পাদন করতে পারে।

একটি UUID কতটা নিখুঁতভাবে র্যান্ডম

নিখুঁত র্যান্ডমনেস প্রকৃতপক্ষে বিদ্যমান নয় — যেমন একটি নিখুঁত ডাইস বিদ্যমান নেই, বা নিখুঁতভাবে র্যান্ডম ডাইসের থ্রো বিদ্যমান নেই। প্রতিটি শারীরিক বা ডিজিটাল প্রক্রিয়া কিছু মূল নিয়ম অনুসরণ করে। তবুও, গণিতবিদ এবং প্রকৌশলীরা প্রকৃত র্যান্ডমনেসের যতটা সম্ভব কাছাকাছি আসার জন্য কয়েক দশক ধরে অ্যালগরিদম ডিজাইন করেছেন। যখন Splync একটি নতুন সংস্করণ-৪ UUID তৈরি করে, এটি কেবল র্যান্ডমলি সংখ্যা বেছে নেয় না যেমন ডাইস রোল করার মতো। এটি অপারেটিং সিস্টেমকে সামান্য অপ্রত্যাশিততার জন্য জিজ্ঞাসা করে — উদাহরণস্বরূপ, আপনার CPU একটি কাজ শেষ করার সঠিক মুহূর্ত, হার্ডওয়্যারের ভিতরে ক্ষীণ বৈদ্যুতিক শব্দ, অথবা মেমোরিতে পটভূমি সময়ের পরিবর্তন। এই অ্যান্ট্রপির টুকরাগুলি সংগ্রহ এবং ১২৮ বিট ডেটায় মিশ্রিত করা হয় — একটি দীর্ঘ এক এবং শূন্যের ক্রম। ফলাফল হচ্ছে একটি কোড যা অ্যাপ ব্যবহারকারীদের জন্য বা সম্ভাব্য ক্ষতিকারক আক্রমণকারীদের জন্য প্রায় অসম্ভব অনুমান করা বা পুনরাবৃত্তি করা।

Splync এর দ্বৈত-শনাক্তকারী পদ্ধতি

Splync সংবেদনশীল শনাক্তকারীদের জন্য যেমন ব্যবহারকারী আইডি এবং প্রকল্প আইডির জন্য UUID ব্যবহার করে, কারণ তারা অত্যন্ত র্যান্ডম এবং নিরাপদ। একই সময়ে, এর সার্ভারের ভিতরে, Splync দ্রুত অনুসন্ধান এবং বিশ্লেষণের জন্য বড় ডেটাসেটে এই UUID গুলি অটো-ইনক্রিমেন্টেড পূর্ণসংখ্যায় রূপান্তর করে। এই দ্বৈত-শনাক্তকারী পদ্ধতি নিরাপত্তা এবং সুবিধার মধ্যে একটি ভারসাম্য বজায় রাখে — বাহ্যিক গোপনীয়তা এবং অভ্যন্তরীণ কর্মদক্ষতা। Splync এর লক্ষ্য হল চাপমুক্ত, সহজ এবং নিরাপদ বাজেট-ট্র্যাকিং অ্যাপ। দৃশ্যমান UI এর পিছনে, আমরা আমাদের স্থাপত্যকে মসৃণ, নিরাপদ, এবং শান্তভাবে স্মার্ট রাখতে পরিমার্জনা চালিয়ে যাচ্ছি।