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