জেডএসটিডি, জেডস্ট্যান্ডার্ডের সংক্ষিপ্ত রূপ, একটি দ্রুত এবং দক্ষ লসলেস কম্প্রেশন অ্যালগরিদম এবং ফাইল ফরম্যাট যা ফেসবুকে ইয়ান কলেট দ্বারা উন্নত করা হয়েছে। এটি দ্রুত কম্প্রেশন এবং ডিকম্প্রেশন গতি বজায় রাখার পাশাপাশি উচ্চ কম্প্রেশন অনুপাত প্রদানের জন্য ডিজাইন করা হয়েছে, যা এটিকে রিয়েল-টাইম কম্প্রেশন দৃশ্যনাট্য এবং বৃহৎ ডেটাসেটের কম্প্রেশনের জন্য উপযুক্ত করে তোলে।
জেডএসটিডি ফরম্যাট একটি দ্রুত এনট্রপি স্টেজ এবং একটি শক্তিশালী লসলেস কম্প্রেশন স্টেজের সমন্বয়ের উপর ভিত্তি করে। এনট্রপি স্টেজ ফিনাইট স্টেট এনট্রপি (এফএসই) এবং হাফম্যান কোডিং ব্যবহার করে, যখন লসলেস কম্প্রেশন স্টেজ জেডস্ট্যান্ডার্ড ডিকশনারি কম্প্রেশন (জেডডিক) নামে এলজেড৭৭ অ্যালগরিদমের একটি রূপ ব্যবহার করে।
জেডএসটিডির মূল বৈশিষ্ট্যগুলির মধ্যে একটি হল কম্প্রেশনের সময় একটি ডিকশনারি তৈরি এবং ব্যবহার করার ক্ষমতা। ডিকশনারি হল ডেটাের একটি প্রাক-শেয়ার করা সেট যা কম্প্রেসর এবং ডিকম্প্রেসর উভয়ই কম্প্রেশন অনুপাত উন্নত করতে ব্যবহার করে। জেডএসটিডি দুই ধরনের ডিকশনারি সমর্থন করে: কন্টেন্ট-সংজ্ঞায়িত ডিকশনারি এবং ব্যবহারকারী-প্রদত্ত ডিকশনারি।
কন্টেন্ট-সংজ্ঞায়িত ডিকশনারি স্বয়ংক্রিয়ভাবে ইনপুট ডেটার উপর ভিত্তি করে জেডএসটিডি কম্প্রেসর দ্বারা উৎপন্ন হয়। কম্প্রেসর পুনরাবৃত্তিমূলক প্যাটার্ন চিহ্নিত করতে এবং এই প্যাটার্নগুলিকে উপস্থাপন করে এমন একটি ডিকশনারি তৈরি করতে ডেটা বিশ্লেষণ করে। তারপর ডিকশনারিটি কম্প্রেশনের সময় পুনরাবৃত্তিমূ লক প্যাটার্নগুলিকে ডিকশনারির রেফারেন্স দ্বারা প্রতিস্থাপন করতে ব্যবহৃত হয়, যার ফলে উচ্চতর কম্প্রেশন অনুপাত পাওয়া যায়।
অন্যদিকে, ব্যবহারকারী-প্রদত্ত ডিকশনারি ব্যবহারকারী দ্বারা তৈরি করা হয় এবং একাধিক কম্প্রেসড ফাইলের মধ্যে শেয়ার করা যেতে পারে। এই ডিকশনারিগুলি একই রকম বা সম্পর্কিত ডেটা কম্প্রেস করার সময় দরকারী, কারণ এগুলি কম্প্রেসরকে ডেটা প্যাটার্নের পূর্ব-বিদ্যমান জ্ঞানকে কাজে লাগাতে দেয়। ব্যবহারকারী-প্রদত্ত ডিকশনারিগুলি কম্প্রেশন অনুপাতকে উল্লেখযোগ্যভাবে উন্নত করতে পারে, বিশেষ করে ছোট ফাইল বা সাধারণ ডেটা স্ট্রাকচারযুক্ত ফাইলের জন্য।
জেডএসটিডি একাধিক কম্প্রেশন স্তর সমর্থন করে, যা ১ থেকে ২২ পর্যন্ত, উচ্চতর স্তরগুলি ধীর কম্প্রেশন গতির বিনিময়ে আরও ভাল কম্প্রেশন অনুপাত অফার করে। ডিফল্ট কম্প্রেশন স্তর হল ৩, যা কম্প্রেশন অনুপাত এবং গতির মধ্যে একটি ভাল ভা রসাম্য প্রদান করে। জেডএসটিডিতে "আল্ট্রা" নামে একটি বিশেষ কম্প্রেশন স্তরও রয়েছে, যা সর্বোচ্চ কম্প্রেশন অনুপাত অফার করে তবে কম্প্রেশন সময়ে উল্লেখযোগ্য বৃদ্ধি ঘটে।
জেডএসটিডি ফরম্যাটে একটি হেডার থাকে যার পরে একটি বা একাধিক কম্প্রেসড ফ্রেম থাকে। হেডারে কম্প্রেসড ডেটার মেটাডেটা থাকে, যেমন ডিকশনারি আইডি, উইন্ডোর আকার এবং ফ্রেমের সংখ্যা। প্রতিটি কম্প্রেসড ফ্রেম স্বাধীন এবং পৃথকভাবে ডিকম্প্রেস করা যেতে পারে, যা সমান্তরাল ডিকম্প্রেশন এবং কম্প্রেসড ডেটার র্যান্ডম অ্যাক্সেসের অনুমতি দেয়।
জেডএসটিডিতে কম্প্রেসড ফ্রেমগুলি লিটারাল ব্লক এবং সিকোয়েন্স ব্লকের সমন্বয় ব্যবহার করে। লিটারাল ব্লকগুলিতে কাঁচা, অকম্প্রেসড ডেটা থাকে, যখন সিকোয়েন্স ব্লকগুলিতে ডিকশনারি বা পূর্বে দেখা ডেটার রেফারেন্স থাকে। রেফারেন্সের আকার কমাতে সিকোয়েন্স ব্লকগুলি এফএসই বা হাফম্যান কোডিং ব্যবহার করে এনকোড করা হয়।
জেডএসটিডি কম্প্রেশন দক্ষতা এবং গতি উন্নত করতে বেশ কয়েকটি কৌশল ব্যবহার করে। এমন একটি কৌশল হল ডিকশনারি বা পূর্বে দেখা ডেটাতে মিলিং সিকোয়েন্সগুলি দ্রুত সনাক্ত করতে একটি হ্যাশ টেবিল ব্যবহার করা। হ্যাশ টেবিলটি কম্প্রেসর ইনপুট ডেটা প্রক্রিয়াকরণ করার সাথে সাথে ক্রমাগত আপডেট করা হয়, যা সম্ভাব্য ম্যাচের দক্ষ লুকআপের অনুমতি দেয়।
জেডএসটিডি দ্বারা ব্যবহৃত আরেকটি অপ্টিমাইজেশন কৌশল হল লেজি ম্যাচিং কৌশল। একটি ম্যাচকে অবিলম্বে এনকোড করার পরিবর্তে, কম্প্রেসর দীর্ঘতর ম্যাচের জন্য অনুসন্ধান চালিয়ে যায়। যদি একটি দীর্ঘতর ম্যাচ পাওয়া যায়, তাহলে কম্প্রেসর দীর্ঘতর ম্যাচটিকে এনকোড করার পরিবর্তে এনকোড করতে বেছে নিতে পারে, যার ফলে আরও ভাল কম্প্রেশন অনুপাত পাওয়া যায়।
জেডএসটিডিতে "লং ডিস্ট্যান্স ম্যাচিং" (এলডিএম) নামে একটি দ্রুত মোডও রয়েছে, যা দীর্ ঘ-দূরত্বের ম্যাচগুলি স
ফাইল কম্প্রেশন অপ্রয়োজনীয় ডেটা কমিয়ে দেয় যাতে একই তথ্য কম বিট ব্যবহার করে। আপনি কতদূর যেতে পারবেন তার উপরের সীমা তথ্য তত্ত্ব দ্বারা নিয়ন্ত্রিত হয়: ক্ষতিহীন কম্প্রেশনের জন্য, সীমা হলো উৎসের এনট্রপি (শ্যানন-এর সোর্স কোডিং থিওরেম এবং তার আসল ১৯৪৮ সালের পেপার “যোগাযোগের একটি গাণিতিক তত্ত্ব”দেখুন)। ক্ষতিযুক্ত কম্প্রেশনের জন্য, হার এবং মানের মধ্যে ট্রেড-অফ রেট-ডিসটরশন তত্ত্ব দ্বারা ক্যাপচার করা হয়।
বেশিরভাগ কম্প্রেসারের দুটি পর্যায় থাকে। প্রথমত, একটি মডেল ডেটাতে কাঠামো ভবিষ্যদ্বাণী করে বা প্রকাশ করে। দ্বিতীয়ত, একটি কোডার সেই ভবি ষ্যদ্বাণীগুলিকে প্রায়-সর্বোত্তম বিট প্যাটার্নে পরিণত করে। একটি ক্লাসিক মডেলিং পরিবার হলো লেম্পেল-জিভ: LZ77 (১৯৭৭) এবং LZ78 (১৯৭৮) পুনরাবৃত্ত সাবস্ট্রিং শনাক্ত করে এবং কাঁচা বাইটের পরিবর্তে রেফারেন্স নির্গত করে। কোডিং দিকে, হাফম্যান কোডিং (আসল পেপারটি দেখুন ১৯৫২) বেশি সম্ভাব্য প্রতীকগুলির জন্য ছোট কোড বরাদ্দ করে। অ্যারিথমেটিক কোডিং এবং রেঞ্জ কোডিং হলো সূক্ষ্ম-দানাদার বিকল্প যা এনট্রপি সীমার কাছাকাছি চেপে ধরে, যেখানে আধুনিক অ্যাসিমেট্রিক নিউমেরাল সিস্টেম (ANS)