ইউনিক্স সময়ের উত্স
যথার্থভাবে এপোক টাইমস্ট্যাম্পটি বোঝার জন্য, যা প্রায়শই ইউনিক্স টাইম, POSIX টাইম বা শুধু এপোক নামে পরিচিত, আমাদের ১৯৭০-এর দশকের শুরুতে ইউনিক্স অপারেটিং সিস্টেমের উত্সের দিকে তাকাতে হবে। ইউনিক্স সময় হলো সময় ট্র্যাক করার একটি ব্যবস্থা যা সেকেন্ডের চলমান মোট হিসেবে কাজ করে। বিশেষভাবে, এটি তাদের সেকেন্ডের সংখ্যা উপস্থাপন করে যা ইউনিক্স এপোক থেকে অতিক্রম হয়েছে। এপোককে নিজেই সংজ্ঞায়িত করা হয়েছে ০১ জানুয়ারি ১৯৭০ বৃহস্পতিবার, কোঅর্ডিনেটেড ইউনিভার্সাল টাইম (UTC) অনুযায়ী ০০:০০:০০ হিসাবে।
যখন কেন থম্পসন এবং ডেনিস রিচি বেল ল্যাবসে ইউনিক্সের প্রথম সংস্করণগুলি উন্নয়ন করছিলেন, তারা কম্পিউটারগুলির জন্য তারিখ এবং সময় উপস্থাপন এবং সংরক্ষণের জন্য একটি সহজ, দক্ষ উপায়ের প্রয়োজন ছিল। মানুষ পড়তে সক্ষম এমন তারিখগুলি (যেমন 'July 29, 2026') কম্পিউটারের জন্য প্রসেসিং করতে অসাধারণভাবে জটিল। এগুলি অনিয়মিত মাস জড়িত করে (কিছু 28, 29, 30, বা 31 দিনের), লিপ ইয়ার, টাইম জোন, এবং ডেলাইট সেভিং সময় স্থানান্তর। সময়কে একটি একক, ধারাবাহিকভাবে বৃদ্ধি পায় এমন পূর্ণসংখ্যা হিসেবে উপস্থাপন করে, ইউনিক্স বিকাশকারীরা একটি সার্বজনীন, অস্পষ্ট সময় মানক তৈরি করেছিলেন যা সহজেই সংরক্ষণ করা, তুলনা করা এবং গাণিতিকভাবে পরিচালনা করা যায়।
আজ কেন ডেভেলপাররা এপোক টাইমস্ট্যাম্প ব্যবহার করেন
দশক দশক পরেও, এপোক সময় আধুনিক কম্পিউটিং অবকাঠামোর মেরুদণ্ড হিসেবে থাকে। এটাই সার্বজনীনভাবে গ্রহণ করা হয়েছে এমন কারণগুলো:
- সরলতা এবং দক্ষতা: একটি ৩২-বিট বা ৬৪-বিট পূর্ণসংখ্যা সংরক্ষণ করা একটি ফরম্যাট করা তারিখ স্ট্রিং সংরক্ষণ করার চেয়ে উল্লেখযোগ্যভাবে কম ডিস্ক স্পেস এবং মেমোরি নেয়। যখন ডাটাবেসে কোটি কোটি রেকর্ড থাকে, প্রতিটি রোতে কয়েক বাইট সংরক্ষণ করা বৃহৎ স্টোরেজ খরচ হ্রাস এবং ডাটাবেস ইনডেক্সের কর্মক্ষমতা উন্নত করতে সাহায্য করে। 2. টাইম জোন-নিরপেক্ষ: একটি এপোক টাইমস্ট্যাম্প স্বাভাবিকভাবে ইউটিসিতে সংযুক্ত। এটি ব্যবহারকারীর ভৌত অবস্থান নিয়ে কেয়ার করে না। যখন টোকিওতে থাকা একটি সার্ভার নিউ ইয়র্কে থাকা ক্লায়েন্টের সাথে যোগাযোগ করে, একটি এপোক পূর্ণসংখ্যা প্রেরণ করা সময় অঞ্চলের ক্ষেত্রে কোনও বিভ্রান্তি এড়ায়। ক্লায়েন্ট এটি গ্রহণ করলে কেবল পূর্ণসংখ্যাটিকে তাদের স্থানীয় সময় অঞ্চলে রূপান্তর করে। 3. সহজ গাণিতিক অপারেশন: দুটি ঘটনাকালের মধ্যে সময়কাল নির্ধারণ করা ঠিক একইভাবে সহজ যেমন একটি টাইমস্ট্যাম্প থেকে অন্যটি বিয়োগ করা।
যদি আপনি জানতে চান দুটি লগ এন্ট্রির মধ্যে কত সেকেন্ড কেটে গেছে, timestamp2 - timestamp1 আপনাকে সঠিক উত্তর তাৎক্ষণিকভাবে দেয়, জটিল তারিখ বিশ্লেষণের লজিক ছাড়াই। ৪। ডাটাবেস সাজানো: একটি পূর্ণসংখ্যা কলাম দ্বারা রেকর্ডগুলি ক্রমানুসারে সাজানো ডাটাবেস ইঞ্জিনের জন্য টেক্সট-ভিত্তিক টাইমস্ট্যাম্প স্ট্রিং পার্স এবং সাজানোর চেয়ে অনেক দ্রুত।
লিপ সেকেন্ডের প্রভাব
ইউনিক্স সময়ের একটি প্রযুক্তিগত সূক্ষ্ম দিক হল এটি কীভাবে লিপ সেকেন্ড পরিচালনা করে। একটি লিপ সেকেন্ড হল এক সেকেন্ডের সমন্বয় যা মাঝে মাঝে কোঅর্ডিনেটেড ইউনিভার্সাল টাইম (UTC)-এ প্রয়োগ করা হয় যাতে দিনের সময় গড় সৌর সময়ের সাথে কাছাকাছি থাকে। আকর্ষণীয়ভাবে, ইউনিক্স সময় লিপ সেকেন্ডকে গণনা করে না। ইউনিক্স সময় সিস্টেমে প্রতিটি দিনকে ঠিক ৮৬,৪০০ সেকেন্ড দীর্ঘ হিসাবে গণ্য করা হয়। যখন একটি লিপ সেকেন্ড ঘটে, তখন ইউনিক্স ঘড়ি মূলত একই সেকেন্ডটি দুইবার পুনরাবৃত্তি করে। এই ইচ্ছাকৃত ডিজাইন পছন্দের ফলে টাইমস্ট্যাম্প অপ্রত্যাশিত হয়ে যাওয়া এড়ানো হয়, যদিও এর মানে হল ইউনিক্স সময় ১৯৭০ সাল থেকে পার্থিব সময়ের কঠোর, রৈখিক পরিমাপ নয়। সফটওয়্যার ইঞ্জিনিয়ারিং এর অধিকাংশ অ্যাপ্লিকেশনের জন্য, এই ছোট ব্যত্যয় সম্পূর্ণরূপে গ্রহণযোগ্য এবং প্রতিটি ঐতিহাসিক লিপ সেকেন্ড ট্র্যাক করার জটিলতার চেয়ে এটি অগ্রাধিকারপ্রাপ্ত।