मैं फोन पर कोर डेटा रिकॉर्ड और सर्वर पर MySQL टेबल दोनों पर डेटाबेस में अंतिम संशोधित टाइमस्टैम्प संग्रहीत करता हूं।
फ़ोन पिछले सिंक के बाद से जो कुछ भी बदल गया है, उसे खोजता है और इसे अंतिम सिंक के टाइमस्टैम्प के साथ सर्वर तक भेजता है, और सर्वर प्रदान किए गए सिंक टाइमस्टैम्प के बाद से इसके अंत में जो कुछ भी बदल गया है, उसके साथ प्रतिक्रिया करता है।
प्रदर्शन एक मुद्दा है जब बहुत सारे रिकॉर्ड बदल गए हैं। मैं पृष्ठभूमि एनएसओपियरशन पर सिंक करता हूं जिसमें इसका स्वयं का प्रबंधित ऑब्जेक्ट संदर्भ होता है। जब बैकग्राउंड थ्रेड ने अपने प्रबंधित ऑब्जेक्ट संदर्भ में परिवर्तन करना समाप्त कर दिया है, तो सभी परिवर्तनों को मुख्य थ्रेड के प्रबंधित ऑब्जेक्ट संदर्भ में मर्ज करने के लिए एक एपीआई है - जिसे किसी भी संघर्ष के कारण होने पर सभी परिवर्तनों को आसानी से फेंकने के लिए कॉन्फ़िगर किया जा सकता है सिंक चालू होने पर उपयोगकर्ता डेटा बदल रहा है। उस स्थिति में, मैं बस कुछ सेकंड प्रतीक्षा करता हूं और फिर से समन्वयन करने का प्रयास करता हूं।
पुराने हार्डवेयर पर कई अनुकूलन के बाद भी यदि उपयोगकर्ता ऐप में सामान करना शुरू कर देता है तो सिंक को पूरी तरह से निरस्त करना आवश्यक था। यह बस बहुत सारे सिस्टम संसाधनों का उपयोग कर रहा था। मुझे लगता है कि अधिक आधुनिक iOS डिवाइस शायद इतने तेज़ हैं कि अब आपको ऐसा करने की आवश्यकता नहीं है।
(वैसे, जब मैंने कहा "बहुत सारे रिकॉर्ड बदल गए हैं" मेरा मतलब 30,000 या तो पंक्तियों को अपडेट किया जा रहा है या फोन पर डाला जा रहा है)