2012-02-24 11 views
10

का .NET कार्यान्वयन मैं बड़े डेटाबेस को एक्सएमएल प्रारूप में निर्यात कर रहा हूं। इस एक्सएमएल डेटा को सबसे छोटे संभव प्रारूप में संपीड़ित करने की आवश्यकता है। मैंने कुशल XML (EXI) के बारे में बहुत कुछ सुना है और यह सोच रहा था कि कोई .NET कार्यान्वयन था या नहीं, ताकि इसे कोड के भीतर से बुलाया जा सके ...कुशल एक्सएमएल

क्या किसी के पास इसका उदाहरण है क्योंकि ऑनलाइन संसाधन एक प्रतीत होते हैं बिट स्पैस ...

+6

ऐसा लगता है कि आप दोनों कोड को नियंत्रित करते हैं जो XML को संपीड़ित करते हैं और कोड जो इसे बाद में डिकंप्रेस करता है। क्या यह बेहतर नहीं होगा अगर आप इसे कुछ गैर-एक्सएमएल प्रारूप में संग्रहीत करके "संपीड़ित" करते हैं और फिर इसे एक्सएमएल में परिवर्तित करके "डिकंप्रेस्ड" करते हैं? – svick

+1

मैं उन बाइट्स पर सहेजने के लिए JSON की तरह कुछ के लिए जाऊंगा। मुझे एन्कोडिंग पर संदेह है कि जानकारी ज्यादा मदद करेगी? –

+1

@PatrickMagee JSON केवल एक्सएमएल मानक का हिस्सा न होने के अलावा, टैग उद्धरणों और अंत टैग में ही सहेज लेगा। यह किसी भी बाइनरी प्रारूप से बहुत दूर है, मेरे उत्तर में अधिक जानकारी है। –

उत्तर

3

ऐसा कार्यान्वयन मौजूद है। कंपनी जिसने कुशल एक्सएमएल इंटरचेंज प्रारूप (AgileDelta) offers an Efficient XML library का पूर्ववर्ती बनाया है, जिसमें नेट संस्करण शामिल है। हालांकि वे कीमत प्रकाशित नहीं कर रहे हैं।

The official EXI site किसी भी अन्य .NET कार्यान्वयन की सूची नहीं है।

+0

नागासेना दोनों में नेट (सी # में लिखा गया है) और EXI विनिर्देश के जावा कार्यान्वयन दोनों हैं। –

2

माइक्रोसॉफ्ट ने एमसी-एनबीएफएक्स (आकर्षक एएच) नामक अपना खुद का द्विआधारी एक्सएमएल प्रारूप/एन्कोडिंग बनाया है। यह .NET Framework और WCF का हिस्सा .NET 3.0 के रूप में है। अधिक जानकारी के लिए देखें:

एक अन्य विकल्प IKVM के माध्यम से एक जावा कार्यान्वयन को चलाने के लिए एक नेट विधानसभा का उत्पादन होता है। ओपन सोर्स जावा कार्यान्वयन मैं मिल सकता है कर रहे हैं:

+0

मैं सूचनात्मक उत्तर के लिए एक +1 दूंगा। लेकिन यह पसंद करता है कि एमसी-एनबीएफएक्स का पालन करना एकमात्र एक्सएमएल बाइनरी है जो उपलब्ध नहीं है। आप जानते हैं, लेकिन जवाब इसके बारे में थोड़ा अस्पष्ट है। –

+0

वह ब्लॉग प्रविष्टि "डब्ल्यूएसएफ बाइनरी एक्सएमएल और डिक्शनरी" में कुछ वास्तव में उपयोगी जानकारी मिली है जो मुझे नहीं पता था। इसे साझा करने के लिए धन्यवाद! –

0

वहाँ एक कारण है कि आप छोटी संभव प्रारूप चाहते है? एक्सएमएल वास्तव में संपीड़न अनुकूलन के लिए डिज़ाइन नहीं किया गया है। @ एसविक का जवाब अब के लिए डिफैक्टो है यदि आप जो चाहते हैं वह आसानी से सुलभ अभिलेखागार हैं।

आप आप यहाँ क्या कह रहे हैं की एक बहुत कुछ पा सकते हैं: Best compression algorithm for XML?

EXI महान आप क्या चाहते हैं, तो डेटा है कि नियमित रूप से पहुँचा जा जाएगा संग्रहीत किया जाता है। अन्यथा, यदि आपका लक्ष्य लंबे समय तक पहुंचने के लिए संग्रहीत कर रहा है, तो बस एक ज़िप उपयोगिता का उपयोग करें। चुम्मा।

+0

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

+0

द्विआधारी प्रारूपों के साथ मेरा मुख्य मुद्दा यह है कि उन्हें लंबे समय तक समर्थित नहीं किया जा सकता है। ऐसा लगता है कि वह डेटा संग्रहित करना चाहता है लेकिन फिर भी इसे सुलभ रखता है। उसे कैसे संग्रहित करना चाहिए इस पर निर्भर करता है कि वह कितनी बार इसे एक्सेस करने की अपेक्षा करता है। मैं इस बात से असहमत नहीं हूं कि बाइनरी एक्सएमएल कुछ दक्षता फायदे प्रदान करता है (यह अन्य टिप्पणियों में अच्छी तरह से कवर किया गया था)। मैं इस बारे में अधिक चिंतित हूं कि वह ऐसा क्यों करना चाहता है जो वह कर रहा है। मेरा मानना ​​है कि एक्सएमएल के रूप में डेटाबेस निर्यात को एक दीर्घकालिक भंडारण समाधान प्रदान करता है जो सड़क के एक दशक या उससे भी कम मानकों में बदलावों के लिए प्रवण नहीं होगा, जो अतिरिक्त अक्षमता के लायक हो सकता है। – VoteCoffee

+0

बाइनरी एक्सएमएल या तो प्रसंस्करण शक्ति और आकार में कुशल होने पर विचार आधारित नहीं है। स्रोत का उपयोग करते हुए, _ आकार की शर्तों में यह 80% _ (http://en.wikipedia.org/wiki/Fast_Infoset) आकार को कम कर सकता है। वैसे भी मुझे पता है कि इसका मतलब है कि यह दीर्घकालिक विनिमय चाहता है, लेकिन ऐसे मानक हैं जो कुछ बाइनरी एक्सएमएल को परिभाषित करते हैं, एक या अन्य सोच का उपयोग करने के बाद वे कुछ बिंदुओं के आधार पर राय रखते हैं। –

0

बाइनरी एक्सएमएल जाने का तरीका है (और इसके कुछ कार्यान्वयन हैं) यदि आपको XML मानक पर गोंद करने की आवश्यकता है।

जेएसओएन, यहां तक ​​कि एक्सएमएल नहीं है, संख्याओं के साथ खो जाएगा। पूर्व 32 बिट्स हस्ताक्षरित int अधिकतम मान JSON में 10 बाइट्स द्वारा प्रस्तुत किया जाएगा। लगभग सभी द्विआधारी प्रारूपों में यह 4 बाइट होगा। यह तब दिनांक/समय पर लागू होगा और इसी तरह।

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

3

Nagasena दोनों .NET (सी # में लिखे गए हैं) और EXI विनिर्देश के जावा कार्यान्वयन दोनों हैं।

+0

लेकिन यह बहुत गूढ़ है! और सी # डॉक्टर/टूटो की कमी है। मैं एक्सएमआई को एक्सएमएल एन्कोड करने के लिए अपना रास्ता ढूंढने में लगभग (लगभग अंधेरा) खोजने में सक्षम हूं, लेकिन असेंबली के बाद मुझे एक्सएमएल वापस पाने पर छोड़ दिया गया क्योंकि मुझे किसी स्पष्ट कारण के लिए एक अनचाहे शून्य संदर्भ अपवाद नहीं मिला। – Jerther

+0

यह अच्छा नहीं लगता है। खैर, वैसे भी, वास्तविक ओपन सोर्स प्रोजेक्ट में [सीधा लिंक] (https://sourceforge.net/projects/openexi/) है। – James

संबंधित मुद्दे