उपयोगकर्ता डेटा का क्लाउड सिंक केवल अपलोड और डाउनलोड नहीं है। उसे स्थानांतरण के दौरान निजी सामग्री की रक्षा करनी होती है, भंडारण सस्ता रखना होता है, कई उपकरणों से होने वाले लेखन को क्रमबद्ध करना होता है, डेटा के अलग-अलग रूप समझने होते हैं, खतरनाक विलोपन से पहले पुष्टि माँगनी होती है, और निर्णय गलत निकलने पर लौटने का रास्ता बचाए रखना होता है।
Orkas क्लाउड सिंक को पृष्ठभूमि की सुविधा के बजाय उत्पाद की एक सीमा मानता है। बातचीत, एजेंट, कौशल, कार्य की स्थिति, ज्ञान फ़ाइलें और सेटिंग्स — सबको उपकरणों के बीच जाना होता है, जबकि ज़िम्मेदारी की कड़ी स्पष्ट बनी रहे: उपकरण सामग्री तैयार करता है, ऑब्जेक्ट स्टोरेज बाइट रखता है, और सर्वर प्रामाणिक अनुक्रमणिका का स्वामी होता है।
नीचे दिया गया ढाँचा वही है जिससे हम इस प्रणाली को समझते हैं: एन्क्रिप्टेड सामग्री का प्रवाह, सामग्री-आधारित पते वाला भंडारण, खाता-स्तरीय सिंक लॉक, सर्वर के नियंत्रण वाला कमिट, निश्चित सिंक नियम, मॉडल-सहायता से टकराव संभालना, हटाने की पुष्टि, रीसायकल बिन और पुनर्प्राप्ति चिह्न।
सिंक का अनुबंध
हर सिंक दौर उत्पाद से जुड़े चार सवालों के जवाब देता है: कौन-सी सामग्री स्थानांतरित हो सकती है, उसकी रक्षा कैसे होगी, नई क्लाउड अनुक्रमणिका प्रकाशित करने की अनुमति किसे है, और सिंक का निर्णय गलत होने पर उपयोगकर्ता वापस कैसे पा सकता है?
एन्क्रिप्टेड सामग्री का रास्ता
भंडारण तक पहुँचने से पहले उपयोगकर्ता डेटा उपकरण पर तैयार होता है। सिंक इंजन संभावित सामग्री के समूह को मानकीकृत करता है, सामग्री की पहचान निकालता है, पेलोड एन्क्रिप्ट करता है, अल्पकालिक क्रेडेंशियल से अपलोड करता है, और डाउनलोड किए गए बाइट उपकरण पर वापस लिखने से पहले सत्यापित करता है।
भंडारण और अनुक्रमणिका
Orkas संग्रहित बाइट और क्लाउड अनुक्रमणिका को अलग रखता है। सामग्री ऑब्जेक्ट एन्क्रिप्टेड डेटा रखते हैं। अनुक्रमणिका दर्ज करती है कि कौन-सी तार्किक डेटा मदें मौजूद होनी चाहिए, उनकी सामग्री पहचान, संस्करण काउंटर, संग्रहित आकार, क्लाउड संशोधन और विलोपन-चिह्न की स्थिति क्या है। उपकरण अंतिम सफल दौर की आधार-स्थिति भी रखता है, ताकि वह पुरानी स्थिति और नए संपादनों में अंतर कर सके।
सिंक का एक दौर
एक दौर कम खर्च से शुरू होता है और वास्तविक काम होने पर ही सख्त होता है। Orkas पहले देखता है कि कुछ बदला है या नहीं, फिर खाते का सिंक लॉक लेता है, लॉक रहते हुए बदलावों की दोबारा गणना करता है, सामग्री स्थानांतरित करता है, सर्वर से अनुक्रमणिका के ऑपरेशन कमिट करने को कहता है, और अंत में उपकरण की आधार-स्थिति अपडेट करता है।
सिंक लॉक और कमिट
सिंक लॉक और कमिट जाँच अलग-अलग समस्याएँ हल करते हैं। सिंक लॉक उपकरणों पर एक साथ होने वाले व्यर्थ काम को कम करता है। सर्वर का लॉक अनुक्रमणिका के लेखन को क्रमबद्ध करता है। अपेक्षित क्लाउड संशोधन की जाँच पुरानी पढ़ी हुई स्थिति को अगली प्रामाणिक स्थिति बनने से रोकती है। कोटा और स्कीमा जाँच भी इसी सर्वर-नियंत्रित कमिट प्रक्रिया में चलती हैं।
टकराव से पहले नियम
सिंक के अधिकांश निर्णय टकराव नहीं होते। उपकरण आधार-स्थिति, अपने वर्तमान डेटा और क्लाउड अनुक्रमणिका की तुलना करता है। केवल क्लाउड बदला हो तो डेटा लाएँ। केवल उपकरण बदला हो तो डेटा भेजें। दोनों बदले हों तो सामग्री के प्रकार के अनुसार रास्ता चुनें। कुछ गायब हो गया हो तो डेटा तुरंत हटाने के बजाय विलोपन-सुरक्षा प्रक्रिया अपनाएँ।
टकराव संभालना
जब दोनों पक्ष वास्तव में बदलते हैं, तो Orkas हर चीज़ पर अंतिम लिखने वाले को विजेता नहीं मानता। अंत में रिकॉर्ड जोड़ने वाले लॉग छूटे रिकॉर्ड जोड़कर मिल सकते हैं। सूचियाँ रिकॉर्ड की स्थिर पहचान के आधार पर मिल सकती हैं। संरचित JSON संस्करण काउंटर और समय-मुद्राओं का उपयोग कर सकता है। Markdown और बाइनरी फ़ाइलों में सावधानी बरती जाती है: अगर प्रणाली यह साबित नहीं कर सकती कि विलय बिना हानि के होगा, तो वह न चुने गए संस्करण की पूरी प्रति रखती है।
पाठ या संरचित सामग्री के अस्पष्ट टकरावों में उत्पाद संबंधित संस्करणों को मॉडल की सहायता से संभालने के लिए एक साथ दे सकता है। मॉडल टकराव समझा सकता है, मिले हुए संस्करण का मसौदा बना सकता है, या उपयोगकर्ता को चुनने में मदद कर सकता है। यह अकेला सुरक्षा उपाय नहीं है: निश्चित नियमों वाला सत्यापन, मूल प्रतियों का संग्रह और उपयोगकर्ता को दिखाई देने वाली पुनर्प्राप्ति प्रक्रिया का हिस्सा बने रहते हैं।
हटाने की पुष्टि
विलोपन को स्थिति के बदलाव के रूप में देखा जाता है। दूरस्थ विलोपन एक विलोपन चिह्न बनता है। उपकरण पर किया गया विलोपन एक संभावित ऑपरेशन बनता है। Orkas हाल के लेखन जाँचता है, बड़े पैमाने पर विलोपन पर नज़र रखता है, और गायब होने वाले उपयोगकर्ता डेटा की मात्रा जोखिमभरी लगे तो पुष्टि के लिए दौर रोक देता है।
रीसायकल बिन और पुनर्प्राप्ति
वैध विलोपन से उपकरण की प्रति हटने से पहले Orkas उसे सिंक रीसायकल बिन में ले जाता है। टकराव में न चुने गए संस्करण समीक्षा के लिए संग्रहित किए जाते हैं। कमिट विफल होने पर लंबित अपलोड बने रहते हैं, ताकि अगला दौर उन्हीं बाइट का दोबारा उपयोग कर सके। अगर उपयोगकर्ता जानबूझकर क्लाउड डेटा साफ़ करता है, तो दूसरे उपकरण सफ़ाई चिह्न देखकर पुरानी सामग्री दोबारा अपलोड करना रोक देते हैं।
इससे हमें क्या मिलता है
परिणाम एक ऐसी सिंक प्रणाली है जिसकी सीमाएँ स्पष्ट हैं। उपकरण सामग्री तैयार और सत्यापित करते हैं। ऑब्जेक्ट स्टोरेज एन्क्रिप्टेड बाइट रखता है। सर्वर अनुक्रमणिका प्रकाशित करता है। खाते का सिंक लॉक और सर्वर लॉक दौरों को व्यवस्थित रखते हैं। नियम आम मामलों को संभालते हैं। मॉडल की सहायता अस्पष्ट टकरावों में मदद करती है। हटाने की पुष्टि और रीसायकल बिन उपयोगकर्ताओं को सबसे महँगी गलतियों से बचाते हैं।
क्लाउड सिंक के लिए Orkas को यही मानक चाहिए: कोई जादू नहीं, कोई अंधी प्रतिलिपि नहीं, बल्कि एक सावधानीपूर्ण तंत्र जो उपयोगकर्ता डेटा को उपकरणों के बीच ले जाए और फिर भी उसमें एकरूपता महसूस हो।