2009-02-07 13 views
293

मैं पहले से ही संबंधित डेटाबेस से काफी परिचित हूं और अतीत में SQLite (और अन्य डेटाबेस) का उपयोग किया है। हालांकि, Core Data में एक निश्चित आकर्षण है, इसलिए मैं अपने अगले आवेदन में उपयोग के लिए इसे सीखने के लिए कुछ समय बिताने पर विचार कर रहा हूं।कोर डेटा बनाम SQLite 3

SQLite पर कोर डेटा का उपयोग करने के लिए बहुत अधिक लाभ है, या इसके विपरीत? प्रत्येक के पेशेवर/विपक्ष क्या हैं?

मुझे कोर डेटा सीखने की लागत को उचित ठहराना मुश्किल लगता है जब ऐप्पल मेल.एप या आईफ़ोटो.एप जैसे कई प्रमुख अनुप्रयोगों के लिए इसका उपयोग नहीं करता है - इसके बजाय SQLite डेटाबेस का चयन कर रहा है। आईफोन पर SQLite का व्यापक रूप से उपयोग किया जाता है।

क्या वे अपने अनुभव पर दोनों टिप्पणियों का उपयोग करने से परिचित हो सकते हैं? शायद, ज्यादातर चीजों के साथ, सवाल सिर्फ एक दूसरे के उपयोग से गहरा है?

+1

क्या आप यह जानने के लिए http://en.wikipedia.org/wiki/Core_Data पर एक लिंक जोड़ सकते हैं कि यह क्या नहीं है। – RSabet

+7

ध्यान दें कि कोर डेटा ** ** नहीं है और डेटाबेस के रूप में उपयोग नहीं किया जाना चाहिए! –

उत्तर

270

हालांकि कोर डाटा एप्पल के Enterprise Object Framework का वंशज है, एक वस्तु-संबंधपरक नक्शाकार (ORM) कि था/कसकर एक संबंधपरक बैकएंड से जुड़ा हुआ है, कोर डाटा नहीं एक ORM है। यह वास्तव में, एक वस्तु ग्राफ प्रबंधन ढांचे है। यह ऑब्जेक्ट इंस्टेंस के संभावित रूप से बहुत बड़े ग्राफ का प्रबंधन करता है, जिससे ऐप को ऐसे ग्राफ के साथ काम करने की इजाजत मिलती है जो आवश्यकतानुसार स्मृति में और बाहर वस्तुओं को दोष देकर स्मृति में पूरी तरह फिट नहीं होती है। कोर डेटा गुणों और रिश्तों पर बाधाओं का प्रबंधन भी करता है और संदर्भ अखंडता को बनाए रखता है (उदाहरण के लिए जब वस्तुओं को रिश्ते में/हटाया जाता है तो आगे और पिछड़े लिंक को लगातार बनाए रखा जाता है)। कोर डेटा इस प्रकार एक एमवीसी वास्तुकला के "मॉडल" घटक के निर्माण के लिए एक आदर्श ढांचा है।

अपने ग्राफ प्रबंधन को लागू करने के लिए, कोर डेटा डिस्क स्टोर के रूप में SQLite का उपयोग करने के लिए होता है। यह को एक अलग रिलेशनल डेटाबेस या यहां तक ​​कि गैर-रिलेशनल डेटाबेस जैसे CouchDB का उपयोग करके लागू किया गया है। जैसा कि अन्य ने इंगित किया है, कोर डेटा एक्सएमएल या बाइनरी प्रारूप या बैकएंड के रूप में उपयोगकर्ता द्वारा लिखित परमाणु प्रारूप का भी उपयोग कर सकता है (हालांकि इन विकल्पों को पूरा ऑब्जेक्ट ग्राफ स्मृति में फिट होना आवश्यक है)। यदि आप SQL डेटा बैकएंड पर कोर डेटा को कार्यान्वित करने में रुचि रखते हैं, तो आप कोर डेटा एपीआई के सबसेट के ओपन सोर्स कार्यान्वयन, ओमनी ग्रुप के OmniDataObjects ढांचे को देखना चाहेंगे। BaseTen ढांचा पोस्टग्रेएसक्यूएल का उपयोग बैकएंड के रूप में कोर डेटा एपीआई का कार्यान्वयन भी है।

क्योंकि कोर डेटा SQLite के लिए ओआरएम होने का इरादा नहीं है, यह मनमाने ढंग से SQLite स्कीमा नहीं पढ़ सकता है। इसके विपरीत, आपको अन्य SQLite टूल के साथ कोर डेटा के SQLite डेटा स्टोर को पढ़ने में सक्षम होने पर भरोसा नहीं करना चाहिए; स्कीमा एक कार्यान्वयन विस्तार है जो बदल सकता है।

इस प्रकार, कोर डेटा या SQLite का उपयोग करने के बीच वास्तव में कोई संघर्ष नहीं है। यदि आप एक रिलेशनल डेटाबेस चाहते हैं, तो SQLite (सीधे या उद्देश्य-सी रैपर जैसे FMDB) या एक रिलेशनल डेटाबेस सर्वर का उपयोग करें। हालांकि, आप अभी भी ऑब्जेक्ट ग्राफ़ प्रबंधन ढांचे के रूप में उपयोग के लिए कोर डेटा सीखना चाहते हैं।ऐप्पल के नियंत्रक वर्गों और कुंजी-मूल्य बाध्यकारी संगत दृश्य विजेट के संयोजन में, आप बहुत छोटे कोड के साथ एक पूर्ण एमवीसी आर्किटेक्चर लागू कर सकते हैं।

+10

नोट एफएमडीबी एक ओआरएम नहीं है, केवल एसकलाइट 3 सी एपीआई – robottobor

+0

के आसपास एक ओबीजेसी रैपर पकड़ने के लिए धन्यवाद; मैं पोस्ट अपडेट करूंगा। –

+0

ग्रेट उत्तर - बहुत बहुत धन्यवाद! –

9

SQLite कोर डेटा के लिए डेटाबेस स्वरूपों में से एक है। कोर डेटा का उपयोग करके आप शेष कोको एपीआई के साथ बेहतर एकीकरण प्राप्त करते हैं।

30

कोर डेटा इतना डेटाबेस इंजन नहीं है क्योंकि यह एक एपीआई है जो वास्तविक डेटा स्टोर पर सार तत्व बनाता है। आप एक कोरक्लाइट डेटाबेस, एक प्लिस्ट, एक बाइनरी फ़ाइल, या यहां तक ​​कि एक कस्टम डेटा स्टोर प्रकार के रूप में सहेजने के लिए कोर डेटा बता सकते हैं।

मैं कोर डेटा सीखने की सिफारिश करता हूं, क्योंकि यह एक उत्कृष्ट संसाधन है जो कोको अनुप्रयोग विकास के कई हिस्सों को बहुत तेज़ करता है।

44

और आईओएस 5.0 के साथ आप कोर डेटा का उपयोग कर रहे हैं तो iCloud फ़ाइल-सिंक का उपयोग करने में सक्षम होने का अतिरिक्त लाभ प्राप्त करें। यदि आप सीधे SQLite का उपयोग कर रहे हैं तो इसे iCloud में समन्वयित करने के लिए मैन्युअल टिंकरिंग और कार्यान्वयन होना होगा।

+6

नोट: [iCloud कोर डेटा के साथ बेकार है] (http://www.theverge.com/2013/3/26/4148628/why-doesnt-icloud-just-work) –

+3

निश्चित रूप से करता है, लेकिन इसे ऐप्पल का गौरव और खुशी दी गई उम्मीद है कि वे आने वाले आईओएस संस्करणों में चीजों को बेहतर बनाएंगे। – strange

+2

अद्यतन (डब्ल्यूडब्ल्यूडीसी 2016 के बाद) - कोर डेटा की आईक्लाउड क्षमताओं को हटा दिया जा रहा है और शायद भविष्य में सेवानिवृत्त हो जाएगा। अधिक: http://mjtsai.com/blog/2016/06/17/the-deprecation-of-icloud-core-data/ –