डेल्टा एन्कोडिंग: Difference between revisions

From Vigyanwiki
No edit summary
 
(8 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Distinguish|Elias delta coding|delta modulation}}
{{Distinguish|इलियास डेल्टा कोडिंग|डेल्टा मॉड्यूलेशन}}


डेल्टा एन्कोडिंग पूर्ण फ़ाइलों के बजाय अनुक्रमिक [[आंकड़े]] के बीच ''[[डेटा अंतर]]'' (डेल्टा) के रूप में डेटा को संग्रहीत या प्रसारित करने का एक तरीका है; अधिक सामान्यतः इसे डेटा विभेदन के रूप में जाना जाता है। डेल्टा एन्कोडिंग को कभी-कभी डेल्टा संपीड़न कहा जाता है, खासकर जहां परिवर्तनों के अभिलेखीय इतिहास की आवश्यकता होती है (उदाहरण के लिए, संशोधन नियंत्रण सॉफ़्टवेयर में)।
'''डेल्टा एन्कोडिंग''' पूर्ण फ़ाइलों के अंकित अनुक्रमिक [[आंकड़े|डाटा]] के बीच ''[[डेटा अंतर|डेटा डिफ्फ्रेंस]]'' (डेल्टा) के रूप में डेटा को संग्रहीत या प्रसारित करने का एक विधि है; जो की अधिक सामान्यतः इसे डेटा दिफ्फ़रेंसिंग के रूप में जाना जाता है। डेल्टा एन्कोडिंग को कभी-कभी डेल्टा कम्प्रेशन कहा जाता है, यह विशेष कर जहां परिवर्तनों के अर्चिवल इतिहास की आवश्यकता होती है (उदाहरण के लिए, संशोधन नियंत्रण सॉफ़्टवेयर में)।


अंतरों को अलग-अलग फाइलों में दर्ज किया जाता है जिन्हें डेल्टा या डिफ कहा जाता है। ऐसी स्थितियों में जहां अंतर छोटे होते हैं - उदाहरण के लिए, किसी बड़े दस्तावेज़ में कुछ शब्दों का परिवर्तन या बड़ी तालिका में कुछ रिकॉर्ड का परिवर्तन - डेल्टा एन्कोडिंग डेटा अतिरेक को बहुत कम कर देता है। अद्वितीय डेल्टाओं का संग्रह उनके गैर-एन्कोडेड समकक्षों की तुलना में काफी अधिक स्थान-कुशल है।
डिफरेंस को अलग-अलग फाइलों में अंकित किया जाता है जिन्हें डेल्टा या डिफ कहा जाता है। ऐसी स्थितियों में जहां डिफरेंस छोटे होते हैं - उदाहरण के लिए, किसी बड़े डॉक्यूमेंट में कुछ शब्दों का परिवर्तन या बड़ी टेबल में कुछ रिकॉर्ड का परिवर्तन - डेल्टा एन्कोडिंग डेटा रिडनडेन्सी को बहुत कम कर देता है। अद्वितीय डेल्टाओं का संग्रह उनके गैर-एन्कोडेड समकक्षों की तुलना में बहुत अधिक स्थान-कुशल है।


तार्किक दृष्टिकोण से दो डेटा मानों के बीच का अंतर एक मान को दूसरे से प्राप्त करने के लिए आवश्यक जानकारी है - [[सापेक्ष एन्ट्रापी]] देखें। समान मानों (कुछ तुल्यता संबंध के तहत) के बीच के अंतर को अक्सर ''0'' या तटस्थ तत्व कहा जाता है।
तार्किक दृष्टिकोण से दो डेटा मानों के बीच का डिफरेंस एक मान को दूसरे से प्राप्त करने के लिए आवश्यक जानकारी है - [[सापेक्ष एन्ट्रापी|रिलेटिव एन्ट्रापी]] देखें। समान मानों (कुछ तुल्यता संबंध के अनुसार) के बीच के डिफरेंस को अधिकांशतः ''0'' या तटस्थ अवयव कहा जाता है।


==सरल उदाहरण==
==साधारण उदाहरण==
शायद सबसे सरल उदाहरण बाइट्स के मानों को स्वयं मानों के बजाय अनुक्रमिक मानों के बीच अंतर (डेल्टा) के रूप में संग्रहीत करना है। इसलिए, 2, 4, 6, 9, 7 के बजाय, हम 2, 2, 2, 3, −2 संग्रहित करेंगे। जब पड़ोसी नमूने सहसंबद्ध होते हैं तो यह मानों के विचरण (सीमा) को कम कर देता है, जिससे समान डेटा के लिए कम बिट उपयोग सक्षम हो जाता है। इंटरचेंज फ़ाइल प्रारूप [[8एसवीएक्स]] ध्वनि प्रारूप इस एन्कोडिंग को कच्चे ध्वनि डेटा पर संपीड़न लागू करने से पहले लागू करता है। डेल्टा एनकोडेड होने पर सभी 8-बिट ध्वनि [[नमूनाकरण (सिग्नल प्रोसेसिंग)]] भी बेहतर ढंग से संपीड़ित नहीं होते हैं, और 16-बिट और बेहतर नमूनों के लिए डेल्टा एन्कोडिंग की उपयोगिता और भी छोटी है। इसलिए, संपीड़न एल्गोरिदम अक्सर डेल्टा एनकोड को तभी चुनते हैं जब संपीड़न बिना से बेहतर होता है। हालाँकि, [[वीडियो संपीड़न]] में, डेल्टा फ़्रेम फ़्रेम आकार को काफी कम कर सकते हैं और लगभग हर वीडियो संपीड़न [[कोडेक]] में उपयोग किए जाते हैं।
संभवतः सबसे सरल उदाहरण बाइट्स के मानों को स्वयं मानों के अंकित अनुक्रमिक मानों के बीच डिफरेंस (डेल्टा) के रूप में संग्रहीत करना है। इसलिए, 2, 4, 6, 9, 7 के अतिरिक्त , हम 2, 2, 2, 3, −2 संग्रहित करेंगे जब निकट के नमूने सहसंबद्ध होते हैं तो यह मानों के वैरिंऐंस (सीमा) को कम कर देता है, जिससे समान डेटा के लिए कम बिट उपयोग सक्षम हो जाता है। इंटरचेंज फ़ाइल प्रारूप [[8एसवीएक्स]] ध्वनि प्रारूप इस एन्कोडिंग को राव ध्वनि डेटा पर कोम्प्रेसन प्रयुक्त करने से पहले प्रयुक्त करता है। डेल्टा एनकोडेड होने पर सभी 8-बिट ध्वनि [[नमूनाकरण (सिग्नल प्रोसेसिंग)|सैंपल (सिग्नल प्रोसेसिंग)]] भी उत्तम विधि से कोम्प्रेसन नहीं होते हैं, और 16-बिट और उत्तम नमूनों के लिए डेल्टा एन्कोडिंग की उपयोगिता और भी छोटी है। इसलिए, कोम्प्रेसन एल्गोरिदम अधिकांशतः डेल्टा एनकोड को तभी चुनते हैं जब कोम्प्रेसन के बिना से उत्तम होता है। चूँकि, [[वीडियो संपीड़न|वीडियो कोम्प्रेसन]] में, डेल्टा फ़्रेम फ़्रेम आकार को अधिक कम कर सकते हैं और लगभग हर वीडियो कोम्प्रेसन [[कोडेक]] में उपयोग किए जाते हैं।


==परिभाषा==
==परिभाषा==
डेल्टा को 2 तरीकों से परिभाषित किया जा सकता है, सममित डेल्टा और निर्देशित डेल्टा। एक सममित डेल्टा को इस प्रकार व्यक्त किया जा सकता है
डेल्टा को 2 विधियों से परिभाषित किया जा सकता है, सिमेट्रिक डेल्टा और डाईरेक्टेड डेल्टा एक सिमेट्रिक डेल्टा को इस प्रकार व्यक्त किया जा सकता है
: <math>\Delta(v_1, v_2) = (v_1 \setminus v_2) \cup (v_2 \setminus v_1),</math>
: <math>\Delta(v_1, v_2) = (v_1 \setminus v_2) \cup (v_2 \setminus v_1),</math>
कहाँ <math>v_1</math> और <math>v_2</math> दो संस्करणों का प्रतिनिधित्व करें।
जहाँ <math>v_1</math> और <math>v_2</math> दो वर्जन का प्रतिनिधित्व करें।


एक निर्देशित डेल्टा, जिसे परिवर्तन भी कहा जाता है, (प्राथमिक) परिवर्तन संचालन का एक क्रम है, जो एक संस्करण पर लागू होने पर <math>v_1</math>, एक और संस्करण उत्पन्न करता है <math>v_2</math> (डेटाबेस में लेनदेन लॉग के पत्राचार पर ध्यान दें)। कंप्यूटर कार्यान्वयन में, वे आम तौर पर दो कमांड वाली भाषा का रूप लेते हैं: v1 से डेटा कॉपी करें और शाब्दिक डेटा लिखें।
एक निर्देशित डेल्टा, जिसे परिवर्तन भी कहा जाता है, (प्राथमिक) परिवर्तन संचालन का एक क्रम है, जो एक वर्जन <math>v_1</math> पर प्रयुक्त होने पर, एक और वर्जन <math>v_2</math> उत्पन्न करता है (डेटाबेस में लेनदेन लॉग के पत्राचार पर ध्यान दें)। कंप्यूटर कार्यान्वयन में, वे समान्यत: दो कमांड वाली लैंग्वेज का रूप लेते हैं: v1 से डेटा कॉपी करें और शाब्दिक डेटा लिखा जाता है।


===वेरिएंट===
===वेरिएंट===
डेल्टा एन्कोडिंग की एक भिन्नता जो [[स्ट्रिंग (कंप्यूटर विज्ञान)]] के [[उपसर्ग (कंप्यूटर विज्ञान)]] या [[प्रत्यय (कंप्यूटर विज्ञान)]] के बीच अंतर को एन्कोड करती है, [[वृद्धिशील एन्कोडिंग]] कहलाती है। यह स्ट्रिंग के बीच छोटे अंतर वाली क्रमबद्ध सूचियों के लिए विशेष रूप से प्रभावी है, जैसे [[शब्द]]कोश से शब्दों की सूची।
डेल्टा एन्कोडिंग की एक भिन्नता जो [[स्ट्रिंग (कंप्यूटर विज्ञान)]] के [[उपसर्ग (कंप्यूटर विज्ञान)|प्रीफिक्स (कंप्यूटर विज्ञान)]] या [[प्रत्यय (कंप्यूटर विज्ञान)|सफिक्स (कंप्यूटर विज्ञान)]] के बीच डिफरेंस को एन्कोड करती है, [[वृद्धिशील एन्कोडिंग|इन्क्रेमेंटेड एन्कोडिंग]] कहलाती है। यह स्ट्रिंग के बीच छोटे डिफरेंस वाली क्रमबद्ध सूचियों के लिए विशेष रूप से प्रभावी है, जैसे [[शब्द]]कोश से शब्दों की सूची है।


==कार्यान्वयन मुद्दे==
==कार्यान्वयन उद्देश्य ==
एन्कोड किए जाने वाले डेटा की प्रकृति एक विशेष संपीड़न एल्गोरिदम की प्रभावशीलता को प्रभावित करती है।
एन्कोड किए जाने वाले डेटा की प्रकृति एक विशेष कोम्प्रेसन एल्गोरिदम की प्रभावशीलता को प्रभावित करती है।


डेल्टा एन्कोडिंग सबसे अच्छा प्रदर्शन करती है जब डेटा में छोटी या निरंतर भिन्नता होती है; किसी अवर्गीकृत डेटा सेट के लिए, इस पद्धति से बहुत कम या कोई संपीड़न संभव नहीं हो सकता है।
डेल्टा एन्कोडिंग सबसे अच्छा प्रदर्शन करती है जब डेटा में छोटी या निरंतर भिन्नता होती है; किसी अवर्गीकृत डेटा सेट के लिए, इस पद्धति से बहुत कम या कोई कोम्प्रेसन संभव नहीं हो सकता है।


एक नेटवर्क पर डेल्टा एन्कोडेड ट्रांसमिशन में जहां संचार चैनल के प्रत्येक छोर पर फ़ाइल की केवल एक प्रति उपलब्ध होती है, विशेष त्रुटि-सुधार का उपयोग यह पता लगाने के लिए किया जाता है कि फ़ाइल के कौन से हिस्से इसके पिछले संस्करण के बाद से बदल गए हैं।
एक नेटवर्क पर डेल्टा एन्कोडेड ट्रांसमिशन में जहां कम्युनिकेशन चैनल के प्रत्येक छोर पर फ़ाइल की केवल एक प्रति उपलब्ध होती है, विशेष एरर कंट्रोल कोड का उपयोग यह पता लगाने के लिए किया जाता है कि फ़ाइल के कौन से भाग इसके पिछले वर्जन के बाद से बदल गए हैं।
उदाहरण के लिए, [[rsync]] मार्क एडलर के [[एडलर-32]] [[ अंततः, |अंततः,]] पर आधारित एक रोलिंग चेकसम एल्गोरिदम का उपयोग करता है।


==नमूना सी कोड==
उदाहरण के लिए, [[rsync|आरसिंक]] मार्क एडलर के [[एडलर-32]] [[ अंततः, |अंततः,]] पर आधारित एक रोलिंग चेकसम एल्गोरिदम का उपयोग करता है।
 
==सैंपल सी कोड==
निम्नलिखित [[सी (प्रोग्रामिंग भाषा)]] कोड वर्णों के अनुक्रम पर डेल्टा एन्कोडिंग और डिकोडिंग का एक सरल रूप निष्पादित करता है: <syntaxhighlight lang="c">
निम्नलिखित [[सी (प्रोग्रामिंग भाषा)]] कोड वर्णों के अनुक्रम पर डेल्टा एन्कोडिंग और डिकोडिंग का एक सरल रूप निष्पादित करता है: <syntaxhighlight lang="c">
void delta_encode(unsigned char *buffer, int length)
void delta_encode(unsigned char *buffer, int length)
Line 55: Line 56:
==उदाहरण==
==उदाहरण==


===[[HTTP]] में डेल्टा एन्कोडिंग===
===[[HTTP|एचटीटीपी]] में डेल्टा एन्कोडिंग===
डेल्टा एन्कोडिंग के उपयोग का एक अन्य उदाहरण है [https://datatracker.ietf.org/doc/html/rfc3229 RFC 3229], HTTP में डेल्टा एन्कोडिंग, जो प्रस्तावित करता है कि HTTP सर्वर अद्यतन वेब पेजों को इस रूप में भेजने में सक्षम होना चाहिए संस्करणों (डेल्टा) के बीच अंतर, जिससे इंटरनेट ट्रैफ़िक में कमी आनी चाहिए, क्योंकि अधिकांश पृष्ठ बार-बार पूरी तरह से लिखे जाने के बजाय समय के साथ धीरे-धीरे बदलते हैं:
डेल्टा एन्कोडिंग के उपयोग का एक अन्य उदाहरण है [https://datatracker.ietf.org/doc/html/rfc3229 आरएफसी 3229], एचटीटीपी में डेल्टा एन्कोडिंग में जो प्रस्तावित करता है कि एचटीटीपी सर्वर अपडेटेड वेब पेजों को इस रूप में भेजने में सक्षम होना चाहिए वर्जन (डेल्टा) के बीच डिफरेंस है जिससे इंटरनेट ट्रैफ़िक में कमी आनी चाहिए, क्योंकि अधिकांश पृष्ठ बार-बार पूरी तरह से लिखे जाने के अंकित समय के साथ धीरे-धीरे बदलते हैं:


{{blockquote|This document describes how delta encoding can be supported as a compatible extension to HTTP/1.1.
{{blockquote|यह डॉक्यूमेंट बताता है कि डेल्टा एन्कोडिंग को एचटीटीपी/1.1 के संगत एक्सटेंशन के रूप में कैसे समर्थित किया जा सकता है।


Many HTTP (Hypertext Transport Protocol) requests cause the retrieval of slightly modified instances of resources for which the client already has a cache entry. Research has shown that such modifying updates are frequent, and that the modifications are typically much smaller than the actual entity. In such cases, HTTP would make more efficient use of network bandwidth if it could transfer a minimal description of the changes, rather than the entire new instance of the resource.
कई एचटीटीपी (हाइपरटेक्स्ट ट्रांसपोर्ट प्रोटोकॉल) अनुरोध संसाधनों के थोड़े संशोधित उदाहरणों की पुनर्प्राप्ति का कारण बनते हैं जिनके लिए क्लाइंट के पास पहले से ही कैश एंट्री है। अनुसंधान से पता चला है कि ऐसे संशोधित अद्यतन अधिकांशतः होते रहते हैं, और ये संशोधन सामान्यतः वास्तविक इकाई की तुलना में बहुत छोटे होते हैं। ऐसे स्थितियों में, एचटीटीपी नेटवर्क बैंडविड्थ का अधिक कुशल उपयोग करेगा यदि यह संसाधन के संपूर्ण नए उदाहरण के अतिरिक्त परिवर्तनों का न्यूनतम विवरण स्थानांतरित कर सकते है।


[...] We believe that it might be possible to support rsync using the "instance manipulation" framework described later in this document, but this has not been worked out in any detail.
[...] हमारा मानना है कि इस डॉक्यूमेंट में बाद में वर्णित "इंस्टेंस मैनीपुलेशन" फ्रेम वर्क का उपयोग करके आरसिंक का समर्थन करना संभव हो सकता है, किंतु इस पर किसी भी विवरण में काम नहीं किया गया है।}}
}}


सुझाए गए rsync-आधारित ढांचे को HTTP प्रॉक्सी की एक जोड़ी के रूप में rproxy सिस्टम में लागू किया गया था।<ref>{{cite web |title=rproxy: introduction |url=https://rproxy.samba.org/index.html |website=rproxy.samba.org}}</ref> बुनियादी vcdiff-आधारित कार्यान्वयन की तरह, दोनों प्रणालियों का उपयोग शायद ही कभी किया जाता है।
सुझाए गए आरसिंक-आधारित फ्रेम वर्क को एचटीटीपी प्रॉक्सी की एक जोड़ी के रूप में आरप्रॉक्सी सिस्टम में प्रयुक्त किया गया था।<ref>{{cite web |title=rproxy: introduction |url=https://rproxy.samba.org/index.html |website=rproxy.samba.org}}</ref> मूलभूत दी वीसीडिफ-आधारित कार्यान्वयन की अनुरूप दोनों प्रणालियों का उपयोग संभवतः ही कभी किया जाता है।


=== डेल्टा प्रतिलिपि ===
=== डेल्टा कॉपीिंग ===
डेल्टा प्रतिलिपि किसी फ़ाइल की प्रतिलिपि बनाने का एक तेज़ तरीका है जिसे आंशिक रूप से बदल दिया जाता है, जब पिछला संस्करण गंतव्य स्थान पर मौजूद होता है। डेल्टा कॉपीिंग के साथ, फ़ाइल का केवल बदला हुआ भाग ही कॉपी किया जाता है। इसका उपयोग आमतौर पर [[बैकअप]] या [[फ़ाइल प्रतिलिपि]] करने वाले सॉफ़्टवेयर में किया जाता है, अक्सर निजी नेटवर्क या इंटरनेट पर कंप्यूटर के बीच कॉपी करते समय [[बैंडविड्थ (कंप्यूटिंग)]] को बचाने के लिए। एक उल्लेखनीय ओपन-सोर्स उदाहरण rsync है।<ref>{{Cite web |url=http://www.2brightsparks.com/bb/viewtopic.php?t=4473 |title=Feature request: Delta copying - 2BrightSparks |access-date=2016-04-29 |archive-date=2016-03-13 |archive-url=https://web.archive.org/web/20160313021725/http://www.2brightsparks.com/bb/viewtopic.php?t=4473 |url-status=dead }}</ref><ref>{{Cite web|url=https://www.bvckup2.com/support/forum/topic/739|title = Bvckup 2 &#124; Forum &#124; How delta copying works}}</ref><ref>http://www.eggheadcafe.com/software/aspnet/33678264/delta-copying.aspx{{Dead link|date=July 2019 |bot=InternetArchiveBot |fix-attempted=yes }}</ref>
डेल्टा कॉपीिंग किसी फ़ाइल की प्रतिलिपि बनाने का एक तेज़ विधि है जिसे आंशिक रूप से बदल दिया जाता है, जब पिछला वर्जन गंतव्य स्थान पर उपस्थित होता है। डेल्टा कॉपीिंग के साथ, फ़ाइल का केवल बदला हुआ भाग ही कॉपी किया जाता है। इसका उपयोग समान्यत: [[बैकअप]] या [[फ़ाइल प्रतिलिपि]] करने वाले सॉफ़्टवेयर में किया जाता है,जो की अधिकांशतः निजी नेटवर्क या इंटरनेट पर कंप्यूटर के बीच कॉपी करते समय [[बैंडविड्थ (कंप्यूटिंग)]] को बचाने के लिए एक उल्लेखनीय ओपन-सोर्स उदाहरण आरसिंक है।<ref>{{Cite web |url=http://www.2brightsparks.com/bb/viewtopic.php?t=4473 |title=Feature request: Delta copying - 2BrightSparks |access-date=2016-04-29 |archive-date=2016-03-13 |archive-url=https://web.archive.org/web/20160313021725/http://www.2brightsparks.com/bb/viewtopic.php?t=4473 |url-status=dead }}</ref><ref>{{Cite web|url=https://www.bvckup2.com/support/forum/topic/739|title = Bvckup 2 &#124; Forum &#124; How delta copying works}}</ref><ref>http://www.eggheadcafe.com/software/aspnet/33678264/delta-copying.aspx{{Dead link|date=July 2019 |bot=InternetArchiveBot |fix-attempted=yes }}</ref>




==== ऑनलाइन बैकअप ====
==== ऑनलाइन बैकअप ====
{{main|Online backup services}}
{{main|ऑनलाइन बैकअप सेवाएँ}}
कई [[ऑनलाइन बैकअप सेवाएँ]] अपने उपयोगकर्ताओं को पिछले बैकअप से उसी फ़ाइल के पिछले संस्करण देने के लिए इस पद्धति को अपनाती हैं, जिसे अक्सर डेल्टा के रूप में जाना जाता है। इससे संबंधित लागत कम हो जाती है, न केवल डेटा की मात्रा में जिसे अलग-अलग संस्करणों के रूप में संग्रहीत किया जाना है (क्योंकि फ़ाइल के प्रत्येक परिवर्तित संस्करण को उपयोगकर्ताओं तक पहुंचने के लिए पेश किया जाना है), बल्कि अपलोडिंग (और) में लागत भी कम हो जाती है कभी-कभी अद्यतन की गई प्रत्येक फ़ाइल की डाउनलोडिंग (पूरी फ़ाइल के बजाय केवल छोटे डेल्टा का उपयोग करके)
कई [[ऑनलाइन बैकअप सेवाएँ]] अपने उपयोगकर्ताओं को पिछले बैकअप से उसी फ़ाइल के पिछले वर्जन देने के लिए इस पद्धति को अपनाती हैं, जिसे अधिकांशतः डेल्टा के रूप में जाना जाता है। इससे संबंधित निवेश कम हो जाती है, न केवल डेटा की मात्रा में जिसे अलग-अलग वर्जन के रूप में संग्रहीत किया जाना है (क्योंकि फ़ाइल के प्रत्येक परिवर्तित वर्जन को उपयोगकर्ताओं तक पहुंचने के लिए प्रस्तुत किया जाना है), किंतु अपलोडिंग (और) में निवेश भी कम हो जाती है कभी-कभी अपडेट की गई प्रत्येक फ़ाइल की डाउनलोडिंग (पूरी फ़ाइल के अंकित केवल छोटे डेल्टा का उपयोग करके) करते है।


==== डेल्टा अपडेट ====
==== डेल्टा अपडेट ====
{{main|delta update}}
{{main|डेल्टा अपडेट}}
बड़े सॉफ़्टवेयर पैकेजों के लिए, आमतौर पर संस्करणों के बीच बहुत कम डेटा बदला जाता है। कई विक्रेता समय और बैंडविड्थ बचाने के लिए डेल्टा ट्रांसफ़र का उपयोग करना चुनते हैं।
 
बड़े सॉफ़्टवेयर पैकेजों के लिए, समान्यत: वर्जन के बीच बहुत कम डेटा बदला जाता है। कई वंडर्स समय और बैंडविड्थ बचाने के लिए डेल्टा ट्रांसफ़र का उपयोग करना चुनते हैं।


===अंतर===
===अंतर===
{{main|Diff}}
{{main|डिफ}}
डिफ एक फ़ाइल तुलना प्रोग्राम है, जिसका उपयोग मुख्य रूप से टेक्स्ट फ़ाइलों के लिए किया जाता है। डिफ़ॉल्ट रूप से, यह सममित डेल्टा उत्पन्न करता है जो प्रतिवर्ती होता है। सॉफ़्टवेयर [[पैच (यूनिक्स)]] के लिए उपयोग किए जाने वाले दो प्रारूप, संदर्भ और एकीकृत, अतिरिक्त संदर्भ लाइनें प्रदान करते हैं जो लाइन संख्या में बदलाव को सहन करने की अनुमति देते हैं।
डिफ एक फ़ाइल कोम्पेरिसन प्रोग्राम है, जिसका उपयोग मुख्य रूप से टेक्स्ट फ़ाइलों के लिए किया जाता है। डिफ़ॉल्ट रूप से, यह सिमेट्रिक डेल्टा उत्पन्न करता है जो प्रतिवर्ती होता है। सॉफ़्टवेयर [[पैच (यूनिक्स)]] के लिए उपयोग किए जाने वाले दो प्रारूप, कांटेक्स्ट और यूनिफाइड, अतिरिक्त कांटेक्स्ट लाइनें प्रदान करते हैं जो लाइन संख्या में बदलाव को सहन करने की अनुमति देते हैं।


===गिट===
===गिट===
{{main|Git (software)}}
{{main|गिट (सॉफ्टवेयर)}}


Git स्रोत कोड नियंत्रण प्रणाली एक सहायक [http://git-scm.com/docs/git-repack git repack] ऑपरेशन में डेल्टा संपीड़न का उपयोग करती है। रिपॉजिटरी में मौजूद वस्तुएं जो अभी तक डेल्टा-संपीड़ित नहीं हुई हैं (ढीली वस्तुएं) की तुलना अन्य सभी वस्तुओं के अनुमानी रूप से चुने गए सबसेट से की जाती है, और सामान्य डेटा और अंतर को एक पैक फ़ाइल में संयोजित किया जाता है जिसे पारंपरिक तरीकों का उपयोग करके संपीड़ित किया जाता है। सामान्य उपयोग के मामलों में, जहां स्रोत या डेटा फ़ाइलों को कमिट के बीच क्रमिक रूप से बदला जाता है, इसके परिणामस्वरूप महत्वपूर्ण स्थान की बचत हो सकती है। रीपैक ऑपरेशन आम तौर पर [http://git-scm.com/docs/git-gc git gc] प्रक्रिया के भाग के रूप में किया जाता है, जो स्वचालित रूप से तब चालू हो जाता है जब ढीली वस्तुओं या पैक फ़ाइलों की संख्या कॉन्फ़िगर सीमा से अधिक हो जाती है।
गिट सोर्स कोड कंट्रोल सिस्टम एक सहायक [http://git-scm.com/docs/git-repack गिट रिपैक] ऑपरेशन में डेल्टा कोम्प्रेसन का उपयोग करती है। रिपॉजिटरी में उपस्थित वस्तुएं जो अभी तक डेल्टा-कोम्प्रेसन नहीं हुई हैं (लूज़ ओब्जेट्स) की तुलना अन्य सभी वस्तुओं के अनुमानी रूप से चुने गए सबसेट से की जाती है, और सामान्य डेटा और डिफरेंस को एक पैक फ़ाइल में संयोजित किया जाता है जिसे पारंपरिक विधियों का उपयोग करके कोम्प्रेसन किया जाता है। सामान्य उपयोग के स्थितियों में, जहां स्रोत या डेटा फ़ाइलों को कमिट के बीच क्रमिक रूप से बदला जाता है, इसके परिणामस्वरूप महत्वपूर्ण स्थान की बचत हो सकती है। रीपैक ऑपरेशन समान्यत: [http://git-scm.com/docs/git-gc गिट जीसी] प्रक्रिया के भाग के रूप में किया जाता है, जो स्वचालित रूप से तब चालू हो जाता है जब लूज़ ओब्जेट्स या पैक फ़ाइलों की संख्या कॉन्फ़िगर सीमा से अधिक हो जाती है।


प्रारूप को Git दस्तावेज़ के पैक-प्रारूप पृष्ठ में प्रलेखित किया गया है। यह एक निर्देशित डेल्टा लागू करता है।<ref>{{cite web |title=Git - पैक-प्रारूप दस्तावेज़ीकरण|url=https://git-scm.com/docs/pack-format |website=Git documentation |access-date=13 January 2020}}</ref>
प्रारूप को गिट डॉक्यूमेंट के पैक-प्रारूप पृष्ठ में प्रलेखित किया गया है। यह एक निर्देशित डेल्टा प्रयुक्त करता है।<ref>{{cite web |title=Git - पैक-प्रारूप दस्तावेज़ीकरण|url=https://git-scm.com/docs/pack-format |website=Git documentation |access-date=13 January 2020}}</ref>


===वीसीडीआईएफएफ===
{{main|वीसीडीआईएफएफ}}


===वीसीडीआईएफएफ===
निर्देशित डेल्टा एन्कोडिंग के लिए एक सामान्य प्रारूप वीसीडीआईएफएफ है, जिसका वर्णन [https://datatracker.ietf.org/doc/html/rfc3284 आरएफसी3284] में किया गया है। [[मुफ्त सॉफ्टवेयर|फ्री सॉफ्टवेयर]] कार्यान्वयन में [[Xdelta|एक्सडेल्टा]] और ओपन-वीसीडिफ सम्मिलित हैं।
{{main|VCDIFF}}
निर्देशित डेल्टा एन्कोडिंग के लिए एक सामान्य प्रारूप VCDIFF है, जिसका वर्णन [https://datatracker.ietf.org/doc/html/rfc3284 RFC 3284] में किया गया है। [[मुफ्त सॉफ्टवेयर]] कार्यान्वयन में [[Xdelta]] और open-vcdiff शामिल हैं।


===जीडीआईएफएफ===
===जीडीआईएफएफ===
जेनेरिक डिफ फॉर्मेट (जीडीआईएफएफ) एक अन्य निर्देशित डेल्टा एन्कोडिंग प्रारूप है। इसे 1997 में [[W3C]] को प्रस्तुत किया गया था।<ref>{{Cite web|url=https://www.w3.org/TR/NOTE-gdiff-19970901.html|title=सामान्य अंतर प्रारूप विशिष्टता|website=www.w3.org}}</ref> कई मामलों में, VCDIFF की संपीड़न दर GDIFF से बेहतर है।
जेनेरिक डिफ फॉर्मेट (जीडीआईएफएफ) एक अन्य निर्देशित डेल्टा एन्कोडिंग प्रारूप है। इसे 1997 में [[W3C]] को प्रस्तुत किया गया था।<ref>{{Cite web|url=https://www.w3.org/TR/NOTE-gdiff-19970901.html|title=सामान्य अंतर प्रारूप विशिष्टता|website=www.w3.org}}</ref> कई स्थितियों में, वीसीडीआईएफएफ की कोम्प्रेसन रेट जीडीआईएफएफ से उत्तम है।
 
===बीएसडिफ===
बीएसडिफ सफिक्स सोर्टिंग का उपयोग करने वाला एक बाइनरी डिफ प्रोग्राम है। उन निष्पादनयोग्यों के लिए जिनमें सूचक पते में कई परिवर्तन होते हैं, यह वीसीडीआईएफएफ-प्रकार की प्रतिलिपि और शाब्दिक एन्कोडिंग से उत्तम प्रदर्शन करता है। पार्स असेंबली कोड को पार्स करने की आवश्यकता के बिना एक छोटा सा डिफरेंस उत्पन्न करने का एक विधि खोजता है (जैसा कि गूगल के कौरगेट में है)। बीएसडिफ त्रुटियों के साथ प्रतिलिपि मिलान की अनुमति देकर इसे प्राप्त करता है, जिसे बाद में बाइटवाइज डिफरेंस की एक अतिरिक्त ऐड सरणी का उपयोग करके ठीक किया जाता है। चूँकि यह ऐरे अधिकतर या तो शून्य है या ऑफ़सेट परिवर्तनों के लिए दोहराई गई मान है, यह कोम्प्रेसन के बाद बहुत कम जगह लेती है।<ref>Colin Percival, Naive differences of executable code, http://www.daemonology.net/bsdiff/, 2003.</ref>
 
डेल्टा अपडेट के लिए बीएसडिफ उपयोगी है। गूगल क्रोमियम और एंड्रॉयड में बीएसडिफ का उपयोग करता है। [[आरपीएम पैकेज मैनेजर]] की डेल्टाआरपीएम सुविधा एक हेविली-मॉडिफाइड बीएसडिफ पर आधारित है जो मिलान के लिए हैश टेबल का उपयोग कर सकती है।<ref>{{cite web |title=rpmdelta/delta.c |url=https://github.com/rpm-software-management/deltarpm/blob/c5e0ca7482e2cfea5e4d902ffe488e0a71ed3e67/delta.c |publisher=rpm-software-management |access-date=13 January 2020 |date=3 July 2019}}</ref> [[FreeBSD|फ्रीबीएसडी]] अपडेट के लिए बीएसडिफ का भी उपयोग करता है।<ref>{{cite web|author=Anonymous|website=GitHub Gist|url=https://gist.github.com/anonymous/e48209b03f1dd9625a992717e7b89c4f|title=फ्रीबीएसडी अद्यतन घटकों के विरुद्ध गैर-क्रिप्टैनालिटिक हमले|date=May 2016}}</ref>
 
2005 में बीएसडिफ के 4.3 रिलीज़ के बाद से, इसके लिए विभिन्न सुधार या सुधार किए गए हैं। गूगल अपने प्रत्येक उत्पाद के लिए कोड के कई वर्जन रखता है।<ref>{{cite web |title=xtraeme/bsdiff-chromium: README.chromium |url=https://github.com/xtraeme/bsdiff-chromium/blob/master/README.chromium |website=GitHub |language=en |date=2012}}; {{cite web |title=courgette/third_party/bsdiff/README.chromium - chromium/src |url=https://chromium.googlesource.com/chromium/src/+/master/courgette/third_party/bsdiff/README.chromium |website=Git at Google}}; {{cite web |title= android/platform/external/bsdiff/|url=https://android.googlesource.com/platform/external/bsdiff/+/refs/heads/master|website=Git at Google}}</ref> फ्रीबीएसडी गूगल के कई संगत परिवर्तनों को अपनाता है, मुख्य रूप से वल्नरएबिलिटी को ठीक करना और तेजी से स्विच करना {{code|divsufsort}} प्रफिक्स -सॉर्टिंग रूटीन।<ref>{{cite web|url=https://github.com/freebsd/freebsd/commits/master/usr.bin/bsdiff|website=GitHub|title=History for freebsd/usr.bin/bsdiff}}</ref> [[डेबियन]] के पास कार्यक्रम में प्रदर्शन बदलावों की एक श्रृंखला है।<ref>{{cite web|url=https://sources.debian.org/patches/bsdiff/ |website=Debian Patch Tracker |title=Package: bsdiff}}</ref>


===bsdiff===
डेल्टा डेबियन डेल्टा अपडेट में उपयोग के लिए प्रस्तावित बीएसडिफ का पुनर्लेखन है। अन्य दक्षता सुधारों के अतिरिक्त यह मेमोरी और सीपीयू निवेश को कम करने के लिए एक स्लाइडिंग विंडो का उपयोग करता है।<ref>{{cite web |last1=Klode |first1=Julian |title=julian-klode/ddelta |url=https://github.com/julian-klode/ddelta |website=GitHub |access-date=13 January 2020}}</ref>
Bsdiff प्रत्यय सरणी का उपयोग करने वाला एक बाइनरी डिफ प्रोग्राम है। उन निष्पादनयोग्यों के लिए जिनमें सूचक पते में कई परिवर्तन होते हैं, यह वीसीडीआईएफएफ-प्रकार की प्रतिलिपि और शाब्दिक एन्कोडिंग से बेहतर प्रदर्शन करता है। इरादा असेंबली कोड को पार्स करने की आवश्यकता के बिना एक छोटा सा अंतर उत्पन्न करने का एक तरीका ढूंढना है (जैसा कि Google के कौरगेट में है)। Bsdiff त्रुटियों के साथ प्रतिलिपि मिलान की अनुमति देकर इसे प्राप्त करता है, जिसे बाद में बाइटवाइज अंतरों की एक अतिरिक्त ऐड सरणी का उपयोग करके ठीक किया जाता है। चूँकि यह सरणी अधिकतर या तो शून्य है या ऑफ़सेट परिवर्तनों के लिए दोहराई गई मान है, यह संपीड़न के बाद बहुत कम जगह लेती है।<ref>Colin Percival, Naive differences of executable code, http://www.daemonology.net/bsdiff/, 2003.</ref>
डेल्टा अपडेट के लिए Bsdiff उपयोगी है। Google क्रोमियम और Android में bsdiff का उपयोग करता है। [[आरपीएम पैकेज मैनेजर]] की deltarpm सुविधा एक भारी-संशोधित bsdiff पर आधारित है जो मिलान के लिए हैश तालिका का उपयोग कर सकती है।<ref>{{cite web |title=rpmdelta/delta.c |url=https://github.com/rpm-software-management/deltarpm/blob/c5e0ca7482e2cfea5e4d902ffe488e0a71ed3e67/delta.c |publisher=rpm-software-management |access-date=13 January 2020 |date=3 July 2019}}</ref> [[FreeBSD]] अपडेट के लिए bsdiff का भी उपयोग करता है।<ref>{{cite web|author=Anonymous|website=GitHub Gist|url=https://gist.github.com/anonymous/e48209b03f1dd9625a992717e7b89c4f|title=फ्रीबीएसडी अद्यतन घटकों के विरुद्ध गैर-क्रिप्टैनालिटिक हमले|date=May 2016}}</ref>
2005 में bsdiff के 4.3 रिलीज़ के बाद से, इसके लिए विभिन्न सुधार या सुधार किए गए हैं। Google अपने प्रत्येक उत्पाद के लिए कोड के कई संस्करण रखता है।<ref>{{cite web |title=xtraeme/bsdiff-chromium: README.chromium |url=https://github.com/xtraeme/bsdiff-chromium/blob/master/README.chromium |website=GitHub |language=en |date=2012}}; {{cite web |title=courgette/third_party/bsdiff/README.chromium - chromium/src |url=https://chromium.googlesource.com/chromium/src/+/master/courgette/third_party/bsdiff/README.chromium |website=Git at Google}}; {{cite web |title= android/platform/external/bsdiff/|url=https://android.googlesource.com/platform/external/bsdiff/+/refs/heads/master|website=Git at Google}}</ref> फ्रीबीएसडी Google के कई संगत परिवर्तनों को अपनाता है, मुख्य रूप से भेद्यता को ठीक करना और तेजी से स्विच करना {{code|divsufsort}} प्रत्यय-सॉर्टिंग रूटीन।<ref>{{cite web|url=https://github.com/freebsd/freebsd/commits/master/usr.bin/bsdiff|website=GitHub|title=History for freebsd/usr.bin/bsdiff}}</ref> [[डेबियन]] के पास कार्यक्रम में प्रदर्शन बदलावों की एक श्रृंखला है।<ref>{{cite web|url=https://sources.debian.org/patches/bsdiff/ |website=Debian Patch Tracker |title=Package: bsdiff}}</ref>
डेल्टा डेबियन डेल्टा अपडेट में उपयोग के लिए प्रस्तावित bsdiff का पुनर्लेखन है। अन्य दक्षता सुधारों के अलावा, यह मेमोरी और सीपीयू लागत को कम करने के लिए एक स्लाइडिंग विंडो का उपयोग करता है।<ref>{{cite web |last1=Klode |first1=Julian |title=julian-klode/ddelta |url=https://github.com/julian-klode/ddelta |website=GitHub |access-date=13 January 2020}}</ref>




==यह भी देखें==
 
* डेटा अंतर
==यह भी देखें                                                                                                 ==
* डेटा डिफरेंस
* [[इंटरलीव्ड डेल्टा]]
* [[इंटरलीव्ड डेल्टा]]
* [[स्रोत कोड नियंत्रण प्रणाली]]
* [[स्रोत कोड नियंत्रण प्रणाली|सोर्स कोड कंट्रोल सिस्टम]]  
* [[स्ट्रिंग-टू-स्ट्रिंग सुधार समस्या]]
* [[स्ट्रिंग-टू-स्ट्रिंग सुधार समस्या|स्ट्रिंग-टू-स्ट्रिंग करेक्शन प्रॉब्लम]]  
* एक्सडेल्टा: ओपन-सोर्स डेल्टा एनकोडर
* एक्सडेल्टा: ओपन-सोर्स डेल्टा एनकोडर


Line 117: Line 122:


==बाहरी संबंध==
==बाहरी संबंध==
* {{IETF RFC|3229|link=no}} – Delta Encoding in HTTP
* {{IETF RFC|3229|link=no}} – Delta Encoding in एचटीटीपी
 
{{Compression methods}}
{{Version control software}}
 
{{DEFAULTSORT:Delta Encoding}}[[Category: दोषरहित संपीड़न एल्गोरिदम]] [[Category: डेटा अंतर]] [[Category: उदाहरण सी कोड वाले लेख]]
 
 


[[Category: Machine Translated Page]]
[[Category:All articles with dead external links|Delta Encoding]]
[[Category:Created On 10/07/2023]]
[[Category:Articles with dead external links from July 2019|Delta Encoding]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Delta Encoding]]
[[Category:Articles with permanently dead external links|Delta Encoding]]
[[Category:CS1 English-language sources (en)|Delta Encoding]]
[[Category:Collapse templates|Delta Encoding]]
[[Category:Created On 10/07/2023|Delta Encoding]]
[[Category:Data compression|Delta Encoding]]
[[Category:Machine Translated Page|Delta Encoding]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists|Delta Encoding]]
[[Category:Pages with script errors|Delta Encoding]]
[[Category:Sidebars with styles needing conversion|Delta Encoding]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|Delta Encoding]]
[[Category:Templates generating microformats|Delta Encoding]]
[[Category:Templates that are not mobile friendly|Delta Encoding]]
[[Category:Templates using TemplateData|Delta Encoding]]
[[Category:Wikipedia metatemplates|Delta Encoding]]
[[Category:उदाहरण सी कोड वाले लेख|Delta Encoding]]
[[Category:डेटा अंतर|Delta Encoding]]
[[Category:दोषरहित संपीड़न एल्गोरिदम|Delta Encoding]]

Latest revision as of 15:54, 30 August 2023

डेल्टा एन्कोडिंग पूर्ण फ़ाइलों के अंकित अनुक्रमिक डाटा के बीच डेटा डिफ्फ्रेंस (डेल्टा) के रूप में डेटा को संग्रहीत या प्रसारित करने का एक विधि है; जो की अधिक सामान्यतः इसे डेटा दिफ्फ़रेंसिंग के रूप में जाना जाता है। डेल्टा एन्कोडिंग को कभी-कभी डेल्टा कम्प्रेशन कहा जाता है, यह विशेष कर जहां परिवर्तनों के अर्चिवल इतिहास की आवश्यकता होती है (उदाहरण के लिए, संशोधन नियंत्रण सॉफ़्टवेयर में)।

डिफरेंस को अलग-अलग फाइलों में अंकित किया जाता है जिन्हें डेल्टा या डिफ कहा जाता है। ऐसी स्थितियों में जहां डिफरेंस छोटे होते हैं - उदाहरण के लिए, किसी बड़े डॉक्यूमेंट में कुछ शब्दों का परिवर्तन या बड़ी टेबल में कुछ रिकॉर्ड का परिवर्तन - डेल्टा एन्कोडिंग डेटा रिडनडेन्सी को बहुत कम कर देता है। अद्वितीय डेल्टाओं का संग्रह उनके गैर-एन्कोडेड समकक्षों की तुलना में बहुत अधिक स्थान-कुशल है।

तार्किक दृष्टिकोण से दो डेटा मानों के बीच का डिफरेंस एक मान को दूसरे से प्राप्त करने के लिए आवश्यक जानकारी है - रिलेटिव एन्ट्रापी देखें। समान मानों (कुछ तुल्यता संबंध के अनुसार) के बीच के डिफरेंस को अधिकांशतः 0 या तटस्थ अवयव कहा जाता है।

साधारण उदाहरण

संभवतः सबसे सरल उदाहरण बाइट्स के मानों को स्वयं मानों के अंकित अनुक्रमिक मानों के बीच डिफरेंस (डेल्टा) के रूप में संग्रहीत करना है। इसलिए, 2, 4, 6, 9, 7 के अतिरिक्त , हम 2, 2, 2, 3, −2 संग्रहित करेंगे जब निकट के नमूने सहसंबद्ध होते हैं तो यह मानों के वैरिंऐंस (सीमा) को कम कर देता है, जिससे समान डेटा के लिए कम बिट उपयोग सक्षम हो जाता है। इंटरचेंज फ़ाइल प्रारूप 8एसवीएक्स ध्वनि प्रारूप इस एन्कोडिंग को राव ध्वनि डेटा पर कोम्प्रेसन प्रयुक्त करने से पहले प्रयुक्त करता है। डेल्टा एनकोडेड होने पर सभी 8-बिट ध्वनि सैंपल (सिग्नल प्रोसेसिंग) भी उत्तम विधि से कोम्प्रेसन नहीं होते हैं, और 16-बिट और उत्तम नमूनों के लिए डेल्टा एन्कोडिंग की उपयोगिता और भी छोटी है। इसलिए, कोम्प्रेसन एल्गोरिदम अधिकांशतः डेल्टा एनकोड को तभी चुनते हैं जब कोम्प्रेसन के बिना से उत्तम होता है। चूँकि, वीडियो कोम्प्रेसन में, डेल्टा फ़्रेम फ़्रेम आकार को अधिक कम कर सकते हैं और लगभग हर वीडियो कोम्प्रेसन कोडेक में उपयोग किए जाते हैं।

परिभाषा

डेल्टा को 2 विधियों से परिभाषित किया जा सकता है, सिमेट्रिक डेल्टा और डाईरेक्टेड डेल्टा एक सिमेट्रिक डेल्टा को इस प्रकार व्यक्त किया जा सकता है

जहाँ और दो वर्जन का प्रतिनिधित्व करें।

एक निर्देशित डेल्टा, जिसे परिवर्तन भी कहा जाता है, (प्राथमिक) परिवर्तन संचालन का एक क्रम है, जो एक वर्जन पर प्रयुक्त होने पर, एक और वर्जन उत्पन्न करता है (डेटाबेस में लेनदेन लॉग के पत्राचार पर ध्यान दें)। कंप्यूटर कार्यान्वयन में, वे समान्यत: दो कमांड वाली लैंग्वेज का रूप लेते हैं: v1 से डेटा कॉपी करें और शाब्दिक डेटा लिखा जाता है।

वेरिएंट

डेल्टा एन्कोडिंग की एक भिन्नता जो स्ट्रिंग (कंप्यूटर विज्ञान) के प्रीफिक्स (कंप्यूटर विज्ञान) या सफिक्स (कंप्यूटर विज्ञान) के बीच डिफरेंस को एन्कोड करती है, इन्क्रेमेंटेड एन्कोडिंग कहलाती है। यह स्ट्रिंग के बीच छोटे डिफरेंस वाली क्रमबद्ध सूचियों के लिए विशेष रूप से प्रभावी है, जैसे शब्दकोश से शब्दों की सूची है।

कार्यान्वयन उद्देश्य

एन्कोड किए जाने वाले डेटा की प्रकृति एक विशेष कोम्प्रेसन एल्गोरिदम की प्रभावशीलता को प्रभावित करती है।

डेल्टा एन्कोडिंग सबसे अच्छा प्रदर्शन करती है जब डेटा में छोटी या निरंतर भिन्नता होती है; किसी अवर्गीकृत डेटा सेट के लिए, इस पद्धति से बहुत कम या कोई कोम्प्रेसन संभव नहीं हो सकता है।

एक नेटवर्क पर डेल्टा एन्कोडेड ट्रांसमिशन में जहां कम्युनिकेशन चैनल के प्रत्येक छोर पर फ़ाइल की केवल एक प्रति उपलब्ध होती है, विशेष एरर कंट्रोल कोड का उपयोग यह पता लगाने के लिए किया जाता है कि फ़ाइल के कौन से भाग इसके पिछले वर्जन के बाद से बदल गए हैं।

उदाहरण के लिए, आरसिंक मार्क एडलर के एडलर-32 अंततः, पर आधारित एक रोलिंग चेकसम एल्गोरिदम का उपयोग करता है।

सैंपल सी कोड

निम्नलिखित सी (प्रोग्रामिंग भाषा) कोड वर्णों के अनुक्रम पर डेल्टा एन्कोडिंग और डिकोडिंग का एक सरल रूप निष्पादित करता है:

void delta_encode(unsigned char *buffer, int length)
{
    unsigned char last = 0;
    for (int i = 0; i < length; i++)
    {
        unsigned char current = buffer[i];
        buffer[i] = current - last;
        last = current;
    }
}

void delta_decode(unsigned char *buffer, int length)
{
    unsigned char last = 0;
    for (int i = 0; i < length; i++)
    {
        unsigned char delta = buffer[i];
        buffer[i] = delta + last;
        last = buffer[i];
    }
}


उदाहरण

एचटीटीपी में डेल्टा एन्कोडिंग

डेल्टा एन्कोडिंग के उपयोग का एक अन्य उदाहरण है आरएफसी 3229, एचटीटीपी में डेल्टा एन्कोडिंग में जो प्रस्तावित करता है कि एचटीटीपी सर्वर अपडेटेड वेब पेजों को इस रूप में भेजने में सक्षम होना चाहिए वर्जन (डेल्टा) के बीच डिफरेंस है जिससे इंटरनेट ट्रैफ़िक में कमी आनी चाहिए, क्योंकि अधिकांश पृष्ठ बार-बार पूरी तरह से लिखे जाने के अंकित समय के साथ धीरे-धीरे बदलते हैं:

यह डॉक्यूमेंट बताता है कि डेल्टा एन्कोडिंग को एचटीटीपी/1.1 के संगत एक्सटेंशन के रूप में कैसे समर्थित किया जा सकता है।

कई एचटीटीपी (हाइपरटेक्स्ट ट्रांसपोर्ट प्रोटोकॉल) अनुरोध संसाधनों के थोड़े संशोधित उदाहरणों की पुनर्प्राप्ति का कारण बनते हैं जिनके लिए क्लाइंट के पास पहले से ही कैश एंट्री है। अनुसंधान से पता चला है कि ऐसे संशोधित अद्यतन अधिकांशतः होते रहते हैं, और ये संशोधन सामान्यतः वास्तविक इकाई की तुलना में बहुत छोटे होते हैं। ऐसे स्थितियों में, एचटीटीपी नेटवर्क बैंडविड्थ का अधिक कुशल उपयोग करेगा यदि यह संसाधन के संपूर्ण नए उदाहरण के अतिरिक्त परिवर्तनों का न्यूनतम विवरण स्थानांतरित कर सकते है।

[...] हमारा मानना है कि इस डॉक्यूमेंट में बाद में वर्णित "इंस्टेंस मैनीपुलेशन" फ्रेम वर्क का उपयोग करके आरसिंक का समर्थन करना संभव हो सकता है, किंतु इस पर किसी भी विवरण में काम नहीं किया गया है।

सुझाए गए आरसिंक-आधारित फ्रेम वर्क को एचटीटीपी प्रॉक्सी की एक जोड़ी के रूप में आरप्रॉक्सी सिस्टम में प्रयुक्त किया गया था।[1] मूलभूत दी वीसीडिफ-आधारित कार्यान्वयन की अनुरूप दोनों प्रणालियों का उपयोग संभवतः ही कभी किया जाता है।

डेल्टा कॉपीिंग

डेल्टा कॉपीिंग किसी फ़ाइल की प्रतिलिपि बनाने का एक तेज़ विधि है जिसे आंशिक रूप से बदल दिया जाता है, जब पिछला वर्जन गंतव्य स्थान पर उपस्थित होता है। डेल्टा कॉपीिंग के साथ, फ़ाइल का केवल बदला हुआ भाग ही कॉपी किया जाता है। इसका उपयोग समान्यत: बैकअप या फ़ाइल प्रतिलिपि करने वाले सॉफ़्टवेयर में किया जाता है,जो की अधिकांशतः निजी नेटवर्क या इंटरनेट पर कंप्यूटर के बीच कॉपी करते समय बैंडविड्थ (कंप्यूटिंग) को बचाने के लिए एक उल्लेखनीय ओपन-सोर्स उदाहरण आरसिंक है।[2][3][4]


ऑनलाइन बैकअप

कई ऑनलाइन बैकअप सेवाएँ अपने उपयोगकर्ताओं को पिछले बैकअप से उसी फ़ाइल के पिछले वर्जन देने के लिए इस पद्धति को अपनाती हैं, जिसे अधिकांशतः डेल्टा के रूप में जाना जाता है। इससे संबंधित निवेश कम हो जाती है, न केवल डेटा की मात्रा में जिसे अलग-अलग वर्जन के रूप में संग्रहीत किया जाना है (क्योंकि फ़ाइल के प्रत्येक परिवर्तित वर्जन को उपयोगकर्ताओं तक पहुंचने के लिए प्रस्तुत किया जाना है), किंतु अपलोडिंग (और) में निवेश भी कम हो जाती है कभी-कभी अपडेट की गई प्रत्येक फ़ाइल की डाउनलोडिंग (पूरी फ़ाइल के अंकित केवल छोटे डेल्टा का उपयोग करके) करते है।

डेल्टा अपडेट

बड़े सॉफ़्टवेयर पैकेजों के लिए, समान्यत: वर्जन के बीच बहुत कम डेटा बदला जाता है। कई वंडर्स समय और बैंडविड्थ बचाने के लिए डेल्टा ट्रांसफ़र का उपयोग करना चुनते हैं।

अंतर

डिफ एक फ़ाइल कोम्पेरिसन प्रोग्राम है, जिसका उपयोग मुख्य रूप से टेक्स्ट फ़ाइलों के लिए किया जाता है। डिफ़ॉल्ट रूप से, यह सिमेट्रिक डेल्टा उत्पन्न करता है जो प्रतिवर्ती होता है। सॉफ़्टवेयर पैच (यूनिक्स) के लिए उपयोग किए जाने वाले दो प्रारूप, कांटेक्स्ट और यूनिफाइड, अतिरिक्त कांटेक्स्ट लाइनें प्रदान करते हैं जो लाइन संख्या में बदलाव को सहन करने की अनुमति देते हैं।

गिट

गिट सोर्स कोड कंट्रोल सिस्टम एक सहायक गिट रिपैक ऑपरेशन में डेल्टा कोम्प्रेसन का उपयोग करती है। रिपॉजिटरी में उपस्थित वस्तुएं जो अभी तक डेल्टा-कोम्प्रेसन नहीं हुई हैं (लूज़ ओब्जेट्स) की तुलना अन्य सभी वस्तुओं के अनुमानी रूप से चुने गए सबसेट से की जाती है, और सामान्य डेटा और डिफरेंस को एक पैक फ़ाइल में संयोजित किया जाता है जिसे पारंपरिक विधियों का उपयोग करके कोम्प्रेसन किया जाता है। सामान्य उपयोग के स्थितियों में, जहां स्रोत या डेटा फ़ाइलों को कमिट के बीच क्रमिक रूप से बदला जाता है, इसके परिणामस्वरूप महत्वपूर्ण स्थान की बचत हो सकती है। रीपैक ऑपरेशन समान्यत: गिट जीसी प्रक्रिया के भाग के रूप में किया जाता है, जो स्वचालित रूप से तब चालू हो जाता है जब लूज़ ओब्जेट्स या पैक फ़ाइलों की संख्या कॉन्फ़िगर सीमा से अधिक हो जाती है।

प्रारूप को गिट डॉक्यूमेंट के पैक-प्रारूप पृष्ठ में प्रलेखित किया गया है। यह एक निर्देशित डेल्टा प्रयुक्त करता है।[5]

वीसीडीआईएफएफ

निर्देशित डेल्टा एन्कोडिंग के लिए एक सामान्य प्रारूप वीसीडीआईएफएफ है, जिसका वर्णन आरएफसी3284 में किया गया है। फ्री सॉफ्टवेयर कार्यान्वयन में एक्सडेल्टा और ओपन-वीसीडिफ सम्मिलित हैं।

जीडीआईएफएफ

जेनेरिक डिफ फॉर्मेट (जीडीआईएफएफ) एक अन्य निर्देशित डेल्टा एन्कोडिंग प्रारूप है। इसे 1997 में W3C को प्रस्तुत किया गया था।[6] कई स्थितियों में, वीसीडीआईएफएफ की कोम्प्रेसन रेट जीडीआईएफएफ से उत्तम है।

बीएसडिफ

बीएसडिफ सफिक्स सोर्टिंग का उपयोग करने वाला एक बाइनरी डिफ प्रोग्राम है। उन निष्पादनयोग्यों के लिए जिनमें सूचक पते में कई परिवर्तन होते हैं, यह वीसीडीआईएफएफ-प्रकार की प्रतिलिपि और शाब्दिक एन्कोडिंग से उत्तम प्रदर्शन करता है। पार्स असेंबली कोड को पार्स करने की आवश्यकता के बिना एक छोटा सा डिफरेंस उत्पन्न करने का एक विधि खोजता है (जैसा कि गूगल के कौरगेट में है)। बीएसडिफ त्रुटियों के साथ प्रतिलिपि मिलान की अनुमति देकर इसे प्राप्त करता है, जिसे बाद में बाइटवाइज डिफरेंस की एक अतिरिक्त ऐड सरणी का उपयोग करके ठीक किया जाता है। चूँकि यह ऐरे अधिकतर या तो शून्य है या ऑफ़सेट परिवर्तनों के लिए दोहराई गई मान है, यह कोम्प्रेसन के बाद बहुत कम जगह लेती है।[7]

डेल्टा अपडेट के लिए बीएसडिफ उपयोगी है। गूगल क्रोमियम और एंड्रॉयड में बीएसडिफ का उपयोग करता है। आरपीएम पैकेज मैनेजर की डेल्टाआरपीएम सुविधा एक हेविली-मॉडिफाइड बीएसडिफ पर आधारित है जो मिलान के लिए हैश टेबल का उपयोग कर सकती है।[8] फ्रीबीएसडी अपडेट के लिए बीएसडिफ का भी उपयोग करता है।[9]

2005 में बीएसडिफ के 4.3 रिलीज़ के बाद से, इसके लिए विभिन्न सुधार या सुधार किए गए हैं। गूगल अपने प्रत्येक उत्पाद के लिए कोड के कई वर्जन रखता है।[10] फ्रीबीएसडी गूगल के कई संगत परिवर्तनों को अपनाता है, मुख्य रूप से वल्नरएबिलिटी को ठीक करना और तेजी से स्विच करना divsufsort प्रफिक्स -सॉर्टिंग रूटीन।[11] डेबियन के पास कार्यक्रम में प्रदर्शन बदलावों की एक श्रृंखला है।[12]

डेल्टा डेबियन डेल्टा अपडेट में उपयोग के लिए प्रस्तावित बीएसडिफ का पुनर्लेखन है। अन्य दक्षता सुधारों के अतिरिक्त यह मेमोरी और सीपीयू निवेश को कम करने के लिए एक स्लाइडिंग विंडो का उपयोग करता है।[13]


यह भी देखें

संदर्भ

  1. "rproxy: introduction". rproxy.samba.org.
  2. "Feature request: Delta copying - 2BrightSparks". Archived from the original on 2016-03-13. Retrieved 2016-04-29.
  3. "Bvckup 2 | Forum | How delta copying works".
  4. http://www.eggheadcafe.com/software/aspnet/33678264/delta-copying.aspx[permanent dead link]
  5. "Git - पैक-प्रारूप दस्तावेज़ीकरण". Git documentation. Retrieved 13 January 2020.
  6. "सामान्य अंतर प्रारूप विशिष्टता". www.w3.org.
  7. Colin Percival, Naive differences of executable code, http://www.daemonology.net/bsdiff/, 2003.
  8. "rpmdelta/delta.c". rpm-software-management. 3 July 2019. Retrieved 13 January 2020.
  9. Anonymous (May 2016). "फ्रीबीएसडी अद्यतन घटकों के विरुद्ध गैर-क्रिप्टैनालिटिक हमले". GitHub Gist.
  10. "xtraeme/bsdiff-chromium: README.chromium". GitHub (in English). 2012.; "courgette/third_party/bsdiff/README.chromium - chromium/src". Git at Google.; "android/platform/external/bsdiff/". Git at Google.
  11. "History for freebsd/usr.bin/bsdiff". GitHub.
  12. "Package: bsdiff". Debian Patch Tracker.
  13. Klode, Julian. "julian-klode/ddelta". GitHub. Retrieved 13 January 2020.


बाहरी संबंध

  • RFC 3229 – Delta Encoding in एचटीटीपी