\
यह लेख बिग डेटा के संदर्भ में कम्प्रेशन पर चर्चा करेगा, जिसमें कम्प्रेशन के प्रकार और तरीकों को शामिल किया जाएगा। मैं यह भी उजागर करूंगा कि प्रत्येक प्रकार और विधि का उपयोग क्यों और कब किया जाना चाहिए।
\
कम्प्रेशन की सामान्य अंग्रेजी परिभाषा के अनुसार, यह किसी चीज़ को कम जगह घेरने के लिए घटाने को संदर्भित करता है। कंप्यूटर विज्ञान में, कम्प्रेशन डेटा को छोटे आकार में कम करने की प्रक्रिया है। इस मामले में डेटा को टेक्स्ट, ऑडियो, वीडियो फ़ाइलों आदि में दर्शाया जा सकता है। इसे अपने कंप्यूटर की हार्ड ड्राइव पर संग्रहीत की जाने वाली किसी भी चीज़ के रूप में सोचें, जो विभिन्न प्रारूपों में दर्शाए गए डेटा के रूप में है। अधिक तकनीकी परिभाषा प्रदान करने के लिए, कम्प्रेशन कम बिट्स का उपयोग करने के लिए डेटा को एन्कोड करने की प्रक्रिया है।
\ डेटा को कम्प्रेस करने के कई कारण हैं। सबसे सामान्य और सहज कारण स्टोरेज स्पेस बचाना है। अन्य कारण डेटा के छोटे होने का परिणाम हैं। छोटे डेटा के साथ काम करने के लाभों में शामिल हैं:
\ कम्प्रेशन के अन्य कारण विभिन्न कम्प्रेशन तकनीकों और प्रारूपों पर निर्भर करते हैं। कुछ एन्क्रिप्शन एल्गोरिदम को कम्प्रेशन की विधि के रूप में उपयोग किया जा सकता है। ऐसा करने में, यह डेटा को कम्प्रेस करने के पहले चर्चा किए गए कारणों के लिए सुरक्षा की एक परत शामिल करता है। इसके अतिरिक्त, सामान्य कम्प्रेशन प्रारूपों का उपयोग करने से इंटीग्रेशन उद्देश्यों के लिए बाहरी सिस्टम के लिए संगतता और विस्तारशीलता के लिए जगह मिलती है।
\ यह ध्यान देने योग्य है कि कम्प्रेशन के कारण लाभों की तरह भी लगते हैं। हालाँकि, कम्प्रेशन ट्रेड-ऑफ के बिना नहीं है। कम्प्रेशन के लिए एक सामान्य ट्रेड-ऑफ डीकम्प्रेशन की आवश्यकता है, जो संसाधन-सीमित सिस्टम के लिए चिंताजनक हो सकता है। अन्य ट्रेड-ऑफ कम्प्रेशन तकनीक और उपयोग किए जा रहे डेटा के प्रकार पर निर्भर करते हैं।
\
डेटा को कम्प्रेस करने के लिए उपयोग की जाने वाली विभिन्न तकनीकों पर चर्चा करने के लिए, मैं पहले कम्प्रेशन को 2 मुख्य श्रेणियों में वर्गीकृत करूंगा। यह लेख फिर प्रत्येक श्रेणी के लिए प्रासंगिक तकनीकों पर चर्चा करेगा। कम्प्रेशन को व्यापक रूप से लॉसी और लॉसलेस कम्प्रेशन में समूहित किया जा सकता है।
\ जैसा कि नाम पहले से ही उनका अर्थ बताते हैं, लॉसी कम्प्रेशन तकनीकें ऐसी तकनीकें हैं जो डेटा की पूर्ण निष्ठा को संरक्षित नहीं करती हैं। सीधे शब्दों में, कुछ डेटा को छोड़ दिया जाता है, लेकिन इतना नहीं कि डेटा जो दर्शाता है वह अपरिचित हो जाए। इसलिए, लॉसी कम्प्रेशन लॉसलेस कम्प्रेशन की तुलना में बहुत उच्च स्तर की कम्प्रेशन प्रदान कर सकता है, जिसे शीघ्र ही पेश किया जाएगा।
\ लॉसी कम्प्रेशन की एक विशेषता यह है कि यह अपरिवर्तनीय है, अर्थात, कम्प्रेस्ड फ़ाइल के साथ प्रस्तुत होने पर, कोई भी अपनी मूल निष्ठा के साथ कच्चे डेटा को पुनर्स्थापित नहीं कर सकता है। कुछ फ़ाइलें और फ़ाइल प्रारूप लॉसी कम्प्रेशन के लिए उपयुक्त हैं। यह आमतौर पर छवियों, ऑडियो और वीडियो के लिए उपयोग किया जाता है। उदाहरण के लिए, JPEG-स्वरूपित छवियां कम्प्रेशन के लिए अच्छी तरह से उधार देती हैं, और JPEG छवि को कम्प्रेस करके, निर्माता या संपादक यह चुन सकता है कि कितना नुकसान पेश करना है।
\ दूसरी ओर, लॉसलेस कम्प्रेशन प्रतिवर्ती है, जिसका अर्थ है कि जब कम्प्रेस किया जाता है, तो सभी डेटा संरक्षित होता है और डीकम्प्रेशन के दौरान पूरी तरह से पुनर्स्थापित होता है। इसका मतलब है कि लॉसलेस कम्प्रेशन टेक्स्ट-जैसी फ़ाइलों के लिए उपयुक्त है, और डेटा वेयरहाउस और लेकहाउस की दुनिया में, यह उपयोग करने के लिए केवल प्रासंगिक प्रकार होगा। कुछ ऑडियो (FLAC और ALAC) और छवि फ़ाइल (GIF, PNG, आदि) प्रारूप इस कम्प्रेशन प्रकार के साथ अच्छी तरह से काम करते हैं।
कोई सामान्य सर्वश्रेष्ठ कम्प्रेशन विधि नहीं है। केस-बाय-केस आधार पर कौन सी विधि उपयुक्त होगी, यह चुनने में विभिन्न कारक शामिल होते हैं। इसे उदाहरणों के साथ स्पष्ट करने के लिए, वित्त उद्योग में संग्रहीत सारणीबद्ध डेटा पर काम करने वाला एक डेटा इंजीनियर सटीक रिपोर्टिंग बनाने में गुम डेटा के प्रभाव के कारण लॉसलेस कम्प्रेशन का उपयोग करने की प्रवृत्ति रखता है। वैकल्पिक रूप से, छवियों को कम्प्रेस करके और वेबसाइट को हल्का बनाकर लोड आइटम को कम करके बहुत सारी छवियों वाले वेब पेज को अनुकूलित करने में लॉसी कम्प्रेशन का उपयोग किया जा सकता है। इसलिए, व्यावसायिक आवश्यकताओं के साथ संरेखित सबसे उपयुक्त कम्प्रेशन विधि निर्धारित करने के लिए एक मूल्यांकन करना महत्वपूर्ण है।
यह खंड केवल लॉसी और लॉसलेस कम्प्रेशन दोनों के लिए सामान्य कम्प्रेशन तकनीकों को कवर करेगा। कृपया ध्यान दें कि यह किसी भी तरह से संपूर्ण नहीं है। इसके अलावा, चर्चा की गई तकनीकों में उनके प्रदर्शन को बढ़ाने के लिए मामूली भिन्नताएं हो सकती हैं, जैसा कि विभिन्न शोध द्वारा समर्थित है।
तीन सामान्य लॉसलेस तकनीकें रन-लेंथ एन्कोडिंग (RLE), हफमैन कोडिंग, और लेम्पेल-ज़िव-वेल्च तकनीकें हैं।
\ रन-लेंथ एन्कोडिंग: RLE डेटा को एन्कोड करने पर आधारित है, जैसे कि यह दोहराए जाने वाले डेटा के अनुक्रमों को डेटा के एक एकल टुकड़े और उस डेटा के टुकड़े की गिनती से बदल देता है। यह दोहराए गए डेटा के लंबे रन के लिए प्रभावी है। इसके अलावा, डेटासेट जिनमें आयाम (फ़ील्ड) हैं जो निम्न स्तर से उच्च स्तर की कार्डिनैलिटी तक क्रमबद्ध हैं, RLE से लाभान्वित होते हैं।
\ उदाहरण के लिए, एक सरल स्ट्रिंग लें जैसे AAAAABBCDDD। RLE डेटा को A(5)B(2)C(1)D(3) बनने के लिए कम्प्रेस करता है। अधिक व्यावहारिक होने के लिए, नीचे दी गई छवि में एक टेबल लें।
\ चित्र 1 - RLE से पहले। यह देखना महत्वपूर्ण है कि कार्डिनैलिटी का स्तर बाएं से दाएं फ़ील्ड पर बढ़ रहा है
चित्र 2 - RLE के बाद
क्योंकि RLE दोहराए गए फ़ील्ड के रन पर निर्भर करता है, और दूसरे उदाहरण में, कार्डिनैलिटी और डेटा का क्रम क्रम, आइटम कॉलम पर Mouse रिकॉर्ड को केवल Mouse (3) में कम्प्रेस नहीं किया जा सकता क्योंकि पूर्ववर्ती कॉलम सभी मूल्यों को IT, Mouse और HR, Mouse में विभाजित करता है। कुछ फ़ाइल प्रारूप RLE के साथ संगत हैं, जैसे कि बिटमैप फ़ाइल प्रारूप जैसे TIFF, BMP, आदि। Parquet फ़ाइलें भी RLE का समर्थन करती हैं, जो S3 या GCS जैसे ऑब्जेक्ट स्टोरेज का उपयोग करने वाले आधुनिक डेटा लेकहाउस में इसे बहुत उपयोगी बनाती हैं।
\ हफमैन कोडिंग: यह सांख्यिकीय मॉडलिंग पर आधारित है जो कच्चे डेटा में मूल्यों को उनकी आवृत्ति के आधार पर परिवर्तनीय-लंबाई कोड असाइन करती है। इस मॉडलिंग के प्रतिनिधित्व को हफमैन ट्री के रूप में संदर्भित किया जा सकता है, जो एक बाइनरी ट्री के समान है। इस ट्री का उपयोग फिर कच्चे डेटा में प्रत्येक मान के लिए एक हफमैन कोड बनाने के लिए किया जाता है। एल्गोरिदम सबसे अधिक बार होने वाले मूल्यों को कम से कम संभव बिट्स में एन्कोड करने को प्राथमिकता देता है।
\ चलिए RLE उदाहरण में उपयोग किए गए उसी डेटा को लें AAAAABBCDDD। संबंधित हफमैन ट्री इस तरह दिखता है।
\ हफमैन ट्री
ट्री से, हम देख सकते हैं कि अक्षर A को 0 द्वारा दर्शाया गया है और इसी तरह D को 10 द्वारा प्रस्तुत किया गया है। अक्षरों B: 111 और C:110 की तुलना में, हम देखते हैं कि A और D को कम बिट्स द्वारा दर्शाया गया है। ऐसा इसलिए है क्योंकि उनकी आवृत्ति अधिक है; इसलिए, हफमैन एल्गोरिदम डिज़ाइन द्वारा उन्हें कम बिट्स के साथ दर्शाता है। परिणामी कम्प्रेस्ड डेटा 00000111111110101010 बन जाता है।
\ हफमैन कोडिंग प्रीफिक्स नियम का उपयोग करता है, जो बताता है कि एक वर्ण का प्रतिनिधित्व करने वाला कोड किसी अन्य कोड के प्रीफिक्स में मौजूद नहीं होना चाहिए। उदाहरण के लिए, एक वैध हफमैन कोड में अक्षर c और d को C: 00 और D: 000 का उपयोग करके प्रदर्शित नहीं किया जा सकता क्योंकि C का प्रतिनिधित्व D का एक प्रीफिक्स है।
\ इसे क्रिया में देखने के लिए, कंप्यूटर साइंस फ़ील्ड गाइड में एक हफमैन ट्री जनरेटर है जिसके साथ आप खेल सकते हैं।
\ लेम्पेल–ज़िव–वेल्च कोडिंग: इसे 1984 में अब्राहम लेम्पेल, जैकब ज़िव और टेरी वेल्च द्वारा बनाया गया था और निर्माताओं के नाम पर इसका नाम रखा गया है, जाहिर है 😅। RLE और हफमैन कोडिंग के समान, LZW उस डेटा के साथ अच्छी तरह से काम करता है जिसमें बहुत सारा दोहराया गया डेटा होता है। LZW एल्गोरिदम डिक्शनरी-आधारित है और एक डिक्शनरी बनाता है जिसमें कच्चे डेटा में आमतौर पर देखे जाने वाले पैटर्न की की-वैल्यू जोड़ी होती है। ऐसी डिक्शनरी को कोड टेबल के रूप में भी संदर्भित किया जा सकता है। यह समझाने के लिए एक उदाहरण का उपयोग करते हुए कि यह तकनीक कैसे काम करती है, चलिए हमारे कच्चे डेटा को ABBABABABA द्वारा दर्शाया जाता है। जब A-Z को संभावित मूल्यों के रूप में एक कॉन्फ़िगरेशन का उपयोग करके एल्गोरिदम के माध्यम से पास किया जाता है, तो परिणामी कोड टेबल इस तरह दिखती है:
\ LZW कोड टेबल
उपरोक्त कोड टेबल से, सभी अक्षरों A-Z के लिए एक की-वैल्यू जोड़ी है और AB, BB, BA, और ABA जैसे पैटर्न के लिए की-वैल्यू जोड़ी हैं। इन पैटर्न के एक छोटे प्रतिनिधित्व के होने से, LZW एल्गोरिदम इसे कम बिट्स में एन्कोड करके कच्चे डेटा को कम्प्रेस कर सकता है। इसलिए, उस इनपुट से उत्पन्न कोड टेबल का उपयोग करते हुए, कम्प्रेस्ड संस्करण 0 1 1 26 29 28 है। कम्प्रेस्ड डेटा में रिक्त स्थान को नोटिस करना महत्वपूर्ण है। कोई भी उन्हें एक वर्ण के अंत के रूप में सोच सकता है, इसलिए डिकोडर एक 1,0 को 10 के रूप में व्याख्या नहीं करेगा क्योंकि वे विभिन्न चीजों का मतलब रखते हैं।
\ LZW आमतौर पर सामान्य-उद्देश्य और आज व्यापक रूप से उपयोग किया जाता है। यह compress शेल कमांड के पीछे कई Unix/Linux-आधारित ऑपरेटिंग सिस्टम में एकीकृत है। इसके अलावा, LZW के साथ संगत सामान्य फ़ाइल प्रारूप GIF, TIFF, और PDF हैं। LZW कम्प्रेशन के अन्य अनुप्रयोग प्राकृतिक भाषा प्रसंस्करण के क्षेत्र में देखे जा सकते हैं, जैसा कि NLP में टोकनाइज़ेशन पर इस पेपर में चर्चा की गई है।
\ RLE, हफमैन कोडिंग, और LZW कोडिंग केवल सामान्य उदाहरण हैं। लॉसलेस कम्प्रेशन तकनीकें इन तीन (3) ऊपर वर्णित से परे जाती हैं। अन्य तकनीकों में DEFLATE शामिल है, जो हफमैन और LZW - विशेष रूप से LZ77 - कोडिंग के संयोजन का उपयोग करता है।
इस खंड में, हम दो प्रकार के लॉसी कम्प्रेशन को देखेंगे। याद रखें कि लॉसी कम्प्रेशन मूल डेटा में नुकसान पेश करता है, जिसका अर्थ है कि सभी डेटा नहीं रखा जाता है।
\ डिस्क्रीट कोसाइन ट्रांसफॉर्म (DCT): यह कम्प्रेशन विधि मुख्य रूप से ऑडियो, छवि और वीडियो फ़ाइलों में उपयोग की जाती है और आमतौर पर ब्लॉक कम्प्रेशन के रूप में भी संदर्भित की जाती है। यह एक गणितीय फ़ंक्शन - कोसाइन फ़ंक्शन, जैसा कि नाम से पता चलता है - का उपयोग करके मूल डेटा के ब्लॉक को आवृत्तियों में बदलने के लिए करता है। डेटा के ब्लॉक आमतौर पर 8x8, 4x4 के मैट्रिक्स होते हैं, और इसी क्रम में।
\ कम्प्रेशन तब आता है जब डेटा में होने वाली उच्च आवृत्तियों से निपटने में, एक बार कच्चे डेटा को गणितीय फ़ंक्शन का उपयोग करके आवृत्ति डोमेन में अनुवादित किया जाता है। कम्प्रेशन के लिए DCT का उपयोग करने की समग्र प्रक्रिया है:
\ DCT आज विभिन्न क्षेत्रों में व्यापक रूप से उपयोग किया जाता है, न केवल कम्प्रेशन में बल्कि सिग्नल प्रोसेसिंग में भी। DCT के साथ संगत सामान्य फ़ाइल प्रारूप JPEG (छवियां), MP3 (ऑडियो), और MPEG (वीडियो) हैं। इसके अतिरिक्त, DCT उच्च कम्प्रेशन अनुपात प्राप्त कर सकता है, जिससे यह इंटरनेट पर वेब पेजों जैसे बहुत सारी छवियों वाले डिजिटल सिस्टम के लिए उपयुक्त हो जाता है।
\ फ्रैक्टल कम्प्रेशन: एक फ्रैक्टल एक स्व-दोहराने वाला अनंत पैटर्न है जो विभिन्न स्केल पर दोहराता है। जब स्केल पर किसी भी बिंदु से देखा जाता है, तो पैटर्न समान दिखता है। क्योंकि पैटर्न किसी भी स्केल पर समान हैं, फ्रैक्टल कम्प्रेशन डेटा के आकार को कम करने के लिए 'बड़े' फ्रैक्टल के स्केल को कम करता है।
\ फ्रैक्टल के उदाहरण
फ्रैक्टल कम्प्रेशन को माइकल बार्न्सले द्वारा 1980 के दशक में पेश किया गया था। एक छवि का उपयोग करते हुए सामान्य विचार यह है कि यदि एक छवि में कई भाग हैं जो एक जैसे दिखते हैं, तो उन्हें दो बार क्यों संग्रहीत करें? ऐसा करने के लिए, फ्रैक्टल कम्प्रेशन निम्नलिखित करता है:
\ फ्रैक्टल कोड के साथ, छवि को एक पुनरावृत्त प्रक्रिया का उपयोग करके पुनर्निर्मित किया जाता है। यह प्रक्रिया कम्प्यूटेशनल रूप से महंगी हो सकती है, लेकिन फ्रैक्टल कम्प्रेशन अन्य कम्प्रेशन तकनीकों की तुलना में कम्प्रेशन का एक उच्च अनुपात प्राप्त कर सकता है। स्व-दोहराने वाले पैटर्न पर इसकी निर्भरता के कारण, यह उन डेटा पर बेहतर प्रदर्शन करेगा जो ऐसे स्व-दोहराने वाले पैटर्न के अनुरूप हैं। उदाहरण परिदृश्य तस्वीरें (प्रकृति की छवियां) और DNA छवियां होंगी।
\ अन्य लॉसी कम्प्रेशन तकनीकें हैं, जैसे कि डिस्क्रीट वेवलेट ट्रांसफॉर्म, क्वांटाइज़ेशन। इन तकनीकों का उपयोग आमतौर पर छवियों, ऑडियो और वीडियो फ़ाइलों में किया जाता है और प्रत्येक फ़ाइल प्रकार के लिए कुछ प्रकार या फ़ाइल प्रारूपों - JPEG, MP3 - के लिए उपयुक्त हैं।
\ लॉसी कम्प्रेशन में आमतौर पर लॉसलेस कम्प्रेशन की तुलना में उच्च कम्प्रेशन अनुपात होते हैं और कभी-कभी उम्मीद की जाती है कि उपयोगकर्ता पहले से ही पेश करने के लिए नुकसान की मात्रा जानता है। यह जोर देना प्रासंगिक है कि कम्प्रेशन विधि और तकनीक की पसंद कई कारकों पर निर्भर करती है। इन कारकों के मूल में डेटा प्रारूप और वांछित परिणाम हैं।
कुल मिलाकर, यह पोस्ट डेटा की दुनिया में कम्प्रेशन पर चर्चा करती है। यह कंप्यूटर विज्ञान और सूचना सिद्धांत में ज्ञान के मौजूदा निकाय पर मजबूती से निर्भर करता है। कम्प्रेस करने का मतलब है कि एक इकाई जो मात्रा घेरती है उसे कम करना, और डेटा के क्षेत्र में, मात्रा स्टोरेज स्पेस को संदर्भित करती है। डिजिटल सिस्टम में कम्प्रेशन के कई फायदे हैं जब इसे सही तरीके से किया जाता है। स्पष्ट यह है कि यह स्थान को कम करता है और अधिक डेटा संग्रहीत करने के लिए जगह देता है। अन्य फायदों में तेज़ ट्रांसमिशन, कम बैंडविड्थ उपयोग और कहे गए सिस्टम की दक्षता में सामान्य सुधार शामिल हैं। याद रखें, यह तब है जब इसे सही तरीके से किया जाता है।
\ कम्प्रेशन के फायदों का लाभ उठाने के लिए, यह जानना महत्वपूर्ण है कि किस प्रकार का उपयोग करना है। कम्प्रेशन या तो लॉसी या लॉसलेस है। लॉसी कम्प्रेशन मूल डेटा में नुकसान पेश करता है जो आमतौर पर अपरिवर्तनीय होता है, जबकि लॉसलेस कम्प्रेशन डेटा को कम्प्रेस करता है और मूल डेटा में निहित सभी जानकारी को बरकरार रखता है। इसके अलावा, हाइब्रिड कम्प्रेशन प्रकारों पर चर्चा है, लेकिन मुझे लगता है कि लॉसी और लॉसलेस का संयोजन सिर्फ लॉसी है। मुझे बताएं कि आप टिप्पणियों में क्या सोचते हैं।
\ अंत में, लॉसी और लॉसलेस कम्प्रेशन दोनों के लिए विभिन्न तकनीकों को पेश किया गया था। तकनीकों की सूची और इन तकनीकों की व्याख्याएं न तो संपूर्ण हैं और न ही व्यापक। मैं उन्हें केवल एक अच्छी शुरुआत मानता हूं कि आपको यह विचार देने में कि प्रत्येक तकनीक कैसे काम करती है। समाप्त करने के लिए, मैंने आगे की जांच करने और बिग डेटा में कम्प्रेशन के बारे में गहराई से पढ़ने में आपकी मदद करने के लिए अतिरिक्त संसाधन जोड़े हैं।
वीडियो: डेटा लेक फंडामेंटल्स - प्रैक्टिस में Parquet के साथ RLE एन्कोडिंग
पेपर: डेटा कम्प्रेशन तकनीकों की समीक्षा
पेपर: लॉसलेस कम्प्रेशन तकनीकें
डेविड सैलोमन द्वारा डेटा कम्प्रेशन का एक संक्षिप्त परिचय
पेपर: विभिन्न डेटा कम्प्रेशन तकनीकों का एक अध्ययन
ब्लॉग पोस्ट: ओपन फ़ाइल प्रारूपों में कम्प्रेशन
लेख: ओपन फ़ाइल प्रारूप
लेख: डेटाबेस में कम्प्रेशन
जीनोमिक डेटा (RNA) के लिए लॉसी कम्प्रेशन
\


