यहां हमारा सरल उपयोग है: उपयोगकर्ता 2 उपयोगकर्ता के दस्तावेज़ को हमारे आवेदन में अपने स्वयं के भंडार में कॉपी करना चाहता है। सरल होना चाहिए, है ना? हमें बस इतना करना है कि ब्लॉबस्टोर में दूसरा समान ब्लॉब बनाएं, जिसमें कुंजी वापस आ गई है जिसे हम उपयोगकर्ता 2 के साथ जोड़ सकते हैं। हमें यहां कुछ याद आना चाहिए। ऐसा प्रतीत होता है कि ऐप इंजन ब्लॉब स्टोर का प्राथमिक कार्य ब्राउज़र से अपलोड और डाउनलोड किए गए ब्लॉब्स को संभालने के लिए है, और एक सरल प्रतिलिपि ऑपरेशन सर्वर-साइड शुरू करना इतना आसान नहीं है।जावा में ऐप इंजन पर ब्लॉबस्टोर इकाई की प्रतिलिपि बनाने का सबसे अच्छा तरीका क्या है?
स्पष्ट समाधान जावा में प्रयोगात्मक फ़ाइल एपीआई का उपयोग करना प्रतीत होता था, लेकिन कोई प्यार नहीं था। यह तब तक काम करता है जब तक आप एमबी से परे फ़ाइल आकार में नहीं पहुंच जाते, फिर यह कुछ हद तक अप्रत्याशित रूप से विफल रहता है। सर्वर परत में इसे सब कुछ पढ़ना मूर्खतापूर्ण लगता है, जब हमें केवल स्टोरेज परत में एक प्रतिलिपि बनाने की आवश्यकता होती है। इसके अलावा, हमारे उत्पादन वातावरण में हमारे द्वारा प्रयोगात्मक सुविधा प्राप्त करने की बाधाएं पतली हैं, हालांकि गैर-शून्य।
हमारे पर्यावरण के बारे में कुछ जानकारी: ऐप जावा में लिखा गया है और हम ब्लॉबस्टोर का उपयोग कर रहे हैं, क्लाउड स्टोरेज नहीं और अब इसके लिए प्रतिबद्ध हैं। हम एक छोटी विभागीय टीम हैं और इस मामले को बनाना चाहते हैं कि ऐप इंजन उपयोग करने के लिए एक महान मंच है, लेकिन यह हमें स्टंप कर चुका है। एस 3 यह अंधेरा सरल बनाता है, क्या हम यहां कुछ बेवकूफ हैं?
चूंकि ब्लॉब्स को संशोधित नहीं किया जा सकता है, इसलिए प्रतिलिपि क्यों बनाते हैं? उपयोगकर्ता 2 के लिए एक ही ब्लॉब का बस एक और संदर्भ है।यदि उपयोगकर्ताओं को ब्लॉब की सामग्री को हटाने की अनुमति है, तो वास्तव में ब्लॉबस्टोर से इसे हटाने से पहले संदर्भ काउंटर की जांच करें। –
हमने इसके बारे में सोचा लेकिन बहुत तेज गिरा दिया क्योंकि उपयोगकर्ता हटा सकते हैं। एक ब्लॉब के लालित्य और प्रतिलिपि के दर्द को देखते हुए, यह एक और रूप के लायक है। इसे मॉडल करने का सबसे अच्छा तरीका क्या होगा? एक ब्लॉब में एक से अधिक संदर्भ हैं या नहीं, यह ट्रैक करने के लिए एक क्रॉस-रेफरेंस इकाई - क्रॉस संदर्भ इकाई में एक प्रविष्टि बनाएं जब ब्लॉब 'प्रतिलिपि' हो और प्रत्येक बार जब 'कॉपी' या 'हटाया गया' हो तो काउंटर या आईडी को जोड़ें/घटाएं केवल एक संदर्भ है। हमने काउंटर और डेटा स्टोर के साथ हमारी चुनौतियों का सामना किया है, इसलिए वास्तव में यह एक अंतिम संदर्भ है जब यह केवल एक अंतिम संदर्भ है। – coleMan
कुछ बहस के बाद, हमने कलले के सुझाव के एक संस्करण के साथ जाने का फैसला किया है। अगर यह दूसरों की मदद करेगा तो नीचे जवाब दें। साथ ही, पिछली बार हमने सोचा कि हमारे पास कोड कार्यान्वयन प्रश्न था, लेकिन यह एक वास्तुशिल्प प्रश्न साबित हुआ जो शायद प्रोग्रामर्स स्टैक एक्सचेंज के लिए बेहतर अनुकूल है। – coleMan