आपका पहला प्रश्न बताता है कि आपने NSInMemoryStore
प्रकार के निरंतर स्टोरों के इरादे की गलत व्याख्या की है। वे कोर डेटा स्टैक के लगातार स्टोर हिस्से हैं। दोषपूर्ण कुछ ऐसा होता है जब आप प्रबंधित ऑब्जेक्ट संदर्भ में उदाहरण लाते हैं; एक गलती बनाई जाती है जो NSPersistentStoreCoordinator
के कैश या अंतर्निहित लगातार स्टोर से निकालकर आग लगती है। एक इन-मेमोरी स्टोर दोषपूर्ण रिश्ते को नहीं बदलता है। जाहिर है, यह वास्तव में आपकी समस्या में मदद नहीं करेगा, हालांकि आपको मेमोरी के लिए सभी डेटा जारी रखना होगा। इन-मेमोरी स्टोर्स वास्तव में (1) परीक्षण (वे तेज़ होते हैं) और (2) स्क्रैच कोर डेटा स्टैक के लिए उपयुक्त हैं जिसमें आप कोर डेटा के ऑब्जेक्ट ग्राफ़ प्रबंधन का उपयोग डिस्क पर कुछ भी जारी रखने के बिना करना चाहते हैं।
आपके दूसरे प्रश्न के जवाब में, उत्तर हाँ है। स्थिरता अंतराल संदर्भ पर लागू होता है, न कि लगातार स्टोर के लिए।
तो, कोर डेटा एक दूरस्थ डेटाबेस सर्वर से डेटा कैशिंग के लिए उपयुक्त है? ज़रुरी नहीं। हालांकि बिल बमगर्नर (एक ऐप्पल इंजीनियर) ने संकेत दिया है कि यह संभव है, मुझे कोर डेटा ऑब्जेक्ट ग्राफ़ प्रबंधन से कैशिंग को अलग करने के लिए अपने कोड में यह बहुत आसान पाया गया है। किसी ऑब्जेक्ट ग्राफ़ को प्रबंधित करने के लिए कोर नियंत्रक का उपयोग करना और कंट्रोलर/UI परतों को बाध्य करने में आसानी के लिए अभी भी बहुत अच्छा है। तो मेरी रणनीति डेटाबेस सर्वर से डेटा खींचती है और इसे अपने स्वयं के डेटा संरचना में कैश करती है (ओएस एक्स 10.6 में libcache और NSCache एक बहुत अच्छा प्रारंभिक बिंदु बना सकता है)। फिर तय करें कि आप अपने ऑब्जेक्ट ग्राफ़ में क्या चाहते हैं और उसे कोर डेटा स्टैक में माइग्रेट करें (इन-मेमोरी लगातार स्टोर द्वारा समर्थित)। आपको डेटाबेस सर्वर से परिवर्तन अधिसूचना या मतदान को संभालना होगा। जब डेटाबेस से डेटा बदलता है (या उपयोगकर्ता क्वेरी में परिवर्तन इत्यादि), तो मैं बस सभी संपादकों को संपादन को समाप्त करने के लिए कहता हूं, फिर संदर्भ को मिटा दें और इसे (संभवतः) अद्यतन कैश से पुनर्निर्माण करें।
स्रोत
2009-11-07 23:05:16
लगभग लगता है कि आप वास्तव में क्या करना चाहते हैं, अपनी खुद की स्टोरेज परत लागू करें: प्रबंधित ऑब्जेक्ट्स जो आपके डेटाबेस सर्वर पर एक सतत स्टोर पर वापस आती हैं। –
हां, लेकिन ऐसा करने का एकमात्र तरीका एनएसएटॉमिकस्टोर (मैक ओएस एक्स 10.5+ में) है और फिर आपको एक बार AFAIK में सबकुछ लोड करना होगा। – diederikh