2010-08-02 7 views
11

कोर डेटा के बारे में एक प्रश्न के मुकाबले ऐप्पल के डिजाइन निर्णयों के बारे में यह एक दार्शनिक सवाल है।कोर डेटा को फिर से तैयार करना इतना मुश्किल क्यों है?

क्यों दुनिया में एक आदर्श प्रणाली है जो प्रीपोप्लेट करना मुश्किल है? क्या फायदे हैं? मुझे पता है कि आप अपना प्रोग्राम एसक्लाइट फ़ाइल उत्पन्न कर सकते हैं और इसे मैन्युअल रूप से संपादित कर सकते हैं, लेकिन जहां तक ​​मैं कह सकता हूं, यदि आप कोई रिश्ते हैं तो आप ऐसा नहीं कर सकते हैं।

मैं रेलवे में उपयोग किए गए एमवीसी प्रतिमान की तुलना करता हूं, जो कि अधिक समझ में आता है। रेल में मॉडल कोर डेटा (जो मैं बता सकता हूं) से एक समान स्तर का अमूर्त प्रदान करता है लेकिन वे आपको जो कुछ भी अपने डेटाबेस में मैन्युअल रूप से (या एक स्क्रिप्ट के माध्यम से) में प्रवेश करने की अनुमति देते हैं।

कोर डेटा के साथ मेरी समस्या यह है कि: चूंकि रेल साबित होते हैं (मेरे लिए) कि डेटाबेस से एक उत्कृष्ट मॉडल अमूर्तता हो सकती है जबकि इसे पूर्ववत करने के लिए कई सुविधाजनक तरीकों को बनाए रखा जा सकता है, संभावित क्षमता क्या क्षमता को हटाती है प्रस्ताव? कोर डेटा किसी भी तरह से अधिक कुशल है? क्या प्रीपॉलेशन में शामिल कठिनाई केवल अन्य डिज़ाइन विकल्पों का दुष्प्रभाव है, और यदि हां, तो प्रीपॉलेशन क्यों नहीं लिया गया था?

(ए त्याग है कि मैं वास्तव में इन विकल्पों के पीछे तर्क में दिलचस्पी रखता हूँ, और यद्यपि मेरी पोस्ट यह सुझाव दे सकता है, मैं वास्तव में एक बहस "बनाम कोर डाटा रेल में मॉडल" के लिए नहीं देख रहा हूँ।)

उत्तर

11

क्योंकि कोर डेटा नहीं डेटाबेस है। यह एक ऑब्जेक्ट ग्राफ़ है जो डिस्क पर बने रहने के लिए होता है और उनमें से एक दृढ़ता प्रारूप डेटाबेस होता है। इसका मतलब है कि आपको इसे रिवर्स पीओवी में देखना होगा।

कोर डेटा को उस निरंतर स्टोर से ऑब्जेक्ट्स पुनर्प्राप्त करने और उन्हें वापस सहेजने के लिए यथासंभव तेज़ी से बनाया गया है। इसका एक दुष्प्रभाव यह है कि निरंतर प्रारूप उस लक्ष्य को तेज़ी से बनाने और किसी अन्य चीज़ के साथ संगत होने पर केंद्रित है। इस प्रकार SQLite फ़ाइल की आंतरिक संरचना प्रदर्शन के उद्देश्य से, अनुकूलता पर नहीं है।

पूर्व-आबादी के बारे में मेरी राय यह है कि कोर डेटा को बंद लूप सिस्टम के रूप में डिज़ाइन किया गया है। आप आसानी से डेटा फ़ाइल को पॉप्युलेट करने के लिए कोर डेटा का उपयोग कर सकते हैं। अपने ओरेकल डेटा को CSV प्रारूप में अनुवाद करने के लिए एक स्क्रिप्ट लिखने की तुलना में कोर डेटा SQLite फ़ाइल को पॉप्युलेट करना मुश्किल नहीं है।

यदि आप कोको और कोर डेटा के भीतर रहते हैं तो यह मुश्किल नहीं है। आप एक कमांड लाइन ऐप या संपादन ऐप लिखते हैं और डेटा आयात करते हैं। कोको प्रोग्रामर के पीओवी से, यह एक छोटा सा काम है जो कुछ ही मिनट लेता है।

+0

यह एक डेटाबेस ("एक या अधिक उपयोगों के लिए डेटा का संगठित संग्रह, आमतौर पर डिजिटल रूप में") जैसा दिखता है। किसी भी घटना में, आपके डेटा में से कोई भी कोर डेटा को कॉल करने के बारे में अनुमान लगाया गया था। उन्होंने इसे पहले "मॉडल सिस्टम" कहा था। – Ken

+2

यहां तक ​​कि "बंद लूप सिस्टम" में भी कोर डेटा है, प्रीप्यूलेशन एक आम कार्य है। ऐसा करने के लिए टूल के बिना इस सिस्टम को क्यों बनाएं? या यदि ऐप्पल इसे स्वयं नहीं बनाना चाहता है, तो विशेष रूप से उनके लाइसेंस समझौते में उनके कोर डेटा स्कीमा की रिवर्स इंजीनियरिंग को प्रतिबंधित करने का एक खंड क्यों है ताकि कुछ उद्यमी व्यक्ति स्वयं ऐसा टूल लिख सकें? –

+2

@ ईवन कॉर्डेल - ऐप्पल ने प्रीपॉलेशन के लिए एक उपकरण नहीं बनाया क्योंकि यह स्वयं ऐसा करना इतना आसान है। मेरे उत्तरों यहां देखें: http://stackoverflow.com/questions/2248363/portability-of-core-datas-sqlite-file-between-os-x-and-iphone-os/2248463#2248463 और यहां: http://stackoverflow.com/questions/1264382/how-do-i-initialize-a-store-with-default-data-in-a-coredata-application/1266588#1266588। मैं यह भी दिखाता हूं कि आईट्यून्स यू पर अपने आईफोन कोर्स के लिए वीडियो में ~ 15 मिनट में यह कैसे करें: http://deimos.apple.com/WebObjects/Core.woa/Browse/matcmadison.edu.3989485784।03989485786 –

संबंधित मुद्दे