यह तय करते समय कि किस निरंतरता का उपयोग करना है, यह याद रखना महत्वपूर्ण है कि कोर डेटा सबसे पहले और सबसे महत्वपूर्ण ऑब्जेक्ट ग्राफ़ प्रबंधन प्रणाली है। यह वास्तविक कार्य मॉडल-व्यू-कंट्रोलर डिज़ाइन पैटर्न वाले ऐप्स की रनटाइम मॉडल परत बनाना है। दृढ़ता वास्तव में कोर डेटा का एक माध्यमिक और यहां तक कि वैकल्पिक कार्य है।
प्रमुख मॉडलिंग/दृढ़ता चिंता डेटा का आकार और डेटा की जटिलता है। तो, रिश्तेदार ताकत और दृढ़ता के प्रत्येक प्रकार की कमजोरियों इस तरह टूट जाएगा: अस्थिरता यानी
_______________________________
| | |
2 | | |
| SQL | Core Data | 4
s | | |
i |_______________ ______________|
z | | |
e | | |
1 | Collection | Core Data | 3
| plist/xml | |
| | |
-------------------------------
Complexity--->
जो हम एक तिहाई पट्टादाता आयाम जोड़ सकते हैं करने के लिए, कितनी बार डेटा में परिवर्तन
(1) तो डेटा की आकार, जटिलता और अस्थिरता कम है, फिर संग्रह का उपयोग करें एक सीरियलाइज्ड कस्टम ऑब्जेक्ट का एनएसएआरएआरई, एनएस डिक्शनरी, एनएसएससेट सबसे अच्छा विकल्प होगा। संग्रह पूरी तरह से स्मृति में पढ़ा जाना चाहिए ताकि उनके प्रभावी दृढ़ता आकार को सीमित किया जा सके। उनके पास कोई जटिलता प्रबंधन नहीं है और सभी परिवर्तनों को पूरी दृढ़ता फ़ाइल को फिर से लिखने की आवश्यकता होती है।
(2) यदि आकार बहुत बड़ा है लेकिन जटिलता कम है तो SQL या अन्य डेटाबेस API बेहतर प्रदर्शन दे सकता है। जैसे एक पुरानी फैशन लाइब्रेरी इंडेक्स कार्ड सिस्टम। प्रत्येक कार्ड समान है, कार्ड के बीच कोई संबंध नहीं है और कार्ड का कोई व्यवहार नहीं है। एसक्यूएल या अन्य प्रक्रियात्मक डीबी कम जटिलता जानकारी की बड़ी मात्रा में प्रसंस्करण में बहुत अच्छे हैं। यदि डेटा सरल है, तो एसक्यूएल भी अत्यधिक अस्थिर डेटा को कुशलता से संभाल सकता है। यदि यूआई समान रूप से सरल है, तो आईओएस/मैकोज़ ऐप के ऑब्जेक्ट ओरिएंटेड डिज़ाइन में यूआई को एकीकृत करने में थोड़ा ओवरहेड है।
(3) चूंकि डेटा अधिक जटिल हो जाता है कोर डेटा जल्दी से बेहतर हो जाता है। "प्रबंधित वस्तुओं" का "प्रबंधित" हिस्सा संबंधों और व्यवहारों में जटिलता का प्रबंधन करता है। संग्रह या एसक्यूएल के साथ, आपने जटिलता को मैन्युअल रूप से प्रबंधित किया है और स्वयं को तुरंत बदल सकता है। असल में, मैंने लोगों को एसक्यूएल के साथ जटिल डेटा प्रबंधित करने की कोशिश की है जो अपना लघु कोर डेटा स्टैक लिखना समाप्त कर देते हैं। कहने की जरूरत नहीं है, जब आप अस्थिरता के साथ जटिलता को जोड़ते हैं तो कोर डेटा भी बेहतर होता है क्योंकि यह सम्मिलन और स्वचालित रूप से हटाने के दुष्प्रभावों को संभालता है।
(इंटरफ़ेस की जटिलता भी एक चिंता का विषय है। एसक्यूएल एक बड़े, स्थिर विलक्षण तालिका संभाल कर सकते हैं लेकिन जब आप टेबल के पदानुक्रम में जोड़ने जिसमें मक्खी पर परिवर्तित कर सकते हैं, एसक्यूएल एक बुरा सपना हो जाता है। कोर डाटा, NSFetchedResultsController और UITableViewController/प्रतिनिधि इसे छोटा बनाते हैं।)
(4) उच्च जटिलता और उच्च आकार के साथ, कोर डेटा स्पष्ट रूप से बेहतर विकल्प है। कोर डेटा अत्यधिक अनुकूलित किया जाता है ताकि ग्राफ आकार में वृद्धि एसक्यूएल के साथ जितनी चीजें हो उतनी चीजें कम न करें। आपको अत्यधिक बुद्धिमान कैशिंग भी मिलती है।
इसके अलावा, "कोर डेटा को उच्च ओवरहेड" के साथ, "मैं पूरी तरह से एसक्यूएल समझता हूं लेकिन कोर डेटा नहीं समझता"। यह वास्तव में नहीं करता है। यहां तक कि जब कोर डेटा दृढ़ता से डेटा प्राप्त करने का सबसे सस्ता तरीका नहीं है, तब भी शेष एपीआई के साथ एकीकरण आमतौर पर बेहतर परिणाम उत्पन्न करता है जब आप विकास और विश्वसनीयता की गति में कारक होते हैं।
इस विशेष मामले में, मैं विवरण से नहीं बता सकता कि आप मामले में हैं (2) या केस (4)। यह डेटा की आंतरिक जटिलता और यूआई की जटिलता पर निर्भर करता है। आप कहते हैं कि:
मुझे नहीं लगता कि मैं संस्थाओं के 100 के साथ एक कोर डाटा मॉडल बनाना चाहते हैं, और तो इसे में JSON आयात करने के लिए एक नक्शाकार का उपयोग करें।
क्या आपका वास्तविक वास्तविक संस्थाएं या केवल प्रबंधित वस्तुओं का मतलब है? याद रखें, संस्थाएं प्रबंधित वस्तुओं के लिए होती हैं कि कौन से वर्ग उदाहरण हैं। यदि पूर्व, तो हाँ कोर डेटा सामने बहुत काम करेगा, अगर बाद वाला, तो यह नहीं होगा। आप केवल दो या तीन संबंधित इकाइयों के साथ बहुत बड़े जटिल ग्राफ का निर्माण कर सकते हैं।
यह भी याद रखें कि आप विभिन्न इकाइयों को विभिन्न दुकानों में रखने के लिए कॉन्फ़िगरेशन का उपयोग कर सकते हैं भले ही वे सभी रनटाइम पर एक ही संदर्भ साझा करते हैं। यह आपको एक स्टोर में अस्थायी जानकारी देने देता है, इसे अधिक लगातार डेटा की तरह उपयोग कर सकता है और फिर जब आप इसके साथ काम करते हैं तो स्टोर को हटा दें।
कोर डेटा आपको पहली नज़र में स्पष्ट होने की तुलना में अधिक विकल्प देता है।
मैं एक आईपैड ऐप के लिए इस सटीक दृष्टिकोण का उपयोग करता हूं। मोनो टच ने वास्तव में इसे बहुत तेजी से करने में मदद की ... – kwcto
ifwdev - आह शांत, क्या आप और समझा सकते हैं? क्या आपने ब्लब्स स्टोर किया था? मोनोटच क्यों? – tobinharris