मैं समय-समय पर वेब-पेज से पर एक सर्वर, जो JSON के रूप में पाठ-आधारित डेटा का एक सेट दबा रहा हूं।किसी सर्वर पर डेटा (संभवतः JSON) के diffs को कैसे दबाया जाए?
प्रत्येक धक्का के लिए, कोई नहीं, कुछ या सभी डेटा बदल सकते हैं। तार पर भेजने के लिए मुझे कितनी मात्रा में डेटा भेजना है, मैं केवल प्रत्येक धक्का में बदलावों का एक अंतर भेजना चाहता हूं।
आप किसी भी पूर्व निर्मित समाधान/उपकरण/पुस्तकालयों इस बात का पता है:
- गतिशील रूप से JSON के एक diff निर्माण के रूप में परिवर्तन यह (करने के लिए बना रहे हैं oldJson और newJson भंडारण और एक पूर्ण कर से बचने के लिए प्रत्येक धक्का को अलग करें) यानी क्लाइंट-साइड के लिए लिखा गया है (यानी क्लाइंट-साइड के लिए)
- जेएसओएन के मौजूदा हिस्से को जेएसओएन diff सर्वर साइड पर पैच करें, जो किसी भी प्लेटफॉर्म पर लिखा गया है जो जावा या .NET^(ज़रूरत नहीं है) लिनक्स पर चलाने के लिए, जावा एनवी के लिए एक विकल्प नहीं है, न ही मोनो है)।
इसके अलावा, क्या यह इस विशेष समस्या के बारे में जाने का सबसे अच्छा तरीका भी है? क्या टेक्स्ट डेटा के हिस्सों को धक्का देने का कोई बेहतर तरीका है?
संपादित करें: कुछ स्पष्टीकरण:
- संभावित डेटा संरचना मूल रूप से एक काफी फ्लैट होगा (इस अर्थ में कि यह hightly कनेक्ट हो, तो किसी भी लिंक आईडी के आधार पर संदर्भ हो जाएगा में नहीं वास्तविक नेस्टेड डेटा) नोड्स का संग्रह। नोड्स में पेड़ों का संग्रह होता है, इन पेड़ों की पत्तियों में वास्तविक 'मूल' डेटा होता है, जैसे संख्याएं, तार और आईडी। अधिकांश डेटा परिवर्तन पत्तियों में होगा।
- अधिकांश पत्ते का डेटा बहुत छोटा होगा (मूल या पाठ के अनुच्छेद से कम) लेकिन कुछ बहुत लंबे होंगे ("समृद्ध" पाठ के पृष्ठ)।
- इस पल के लिए हम इसे सख्ती से एक-दूसरे पर विचार कर सकते हैं, यानी किसी भी विशेष डेटा संरचना में केवल एक क्लाइंट जुड़ा हुआ है (पढ़ने/लिखने में)।
- जटिलता के मामले में सर्वर को यथासंभव न्यूनतम रखना अच्छा लगेगा - विचार है कि जितना संभव हो सके सर्वर से दूर जाना। एचटीएमएल 5 अभी भी ज्यादातर असमर्थित है जबकि मैं अभी भी एक यद्यपि के साथ डाटा स्टोर करने की जरूरत है ...
^ यह हुआ कि यदि यादृच्छिक साझा होस्टिंग पर उम्मीद करेंगे। मैं आपके अच्छे दोस्तों PHP, पायथन, पर्ल, रुबी, उन फुलस से बात कर रहा हूं। या, कुछ ऐसा जो यादृच्छिक साझा होस्टिंग पर आसानी से स्थापित किया जा सकता है।
कोई प्लेटफ़ॉर्म जावा या .NET नहीं है? REBOL के बारे में क्या? – BobbyShaftoe
@ बॉबी .. ठीक है, शायद सिर्फ भाषाएं मैंने सुना है। पोस्ट अपडेट ... – SCdF
@ बॉबी, वास्तव में, REBOL के बारे में पढ़ने के बाद मुझे यकीन नहीं है कि आप वास्तव में मजाक कर रहे हैं या नहीं। आरईबीओएल के साथ उत्तर देने के लिए स्वतंत्र महसूस करें, जब तक यह जेएस – SCdF