Кіріспе
Apple компаниясының macOS және iOS операциялық жүйелеріндегі тұрақтылық жүйесі Core Data - Apple компаниясының macOS және iOS операциялық жүйелеріндегі объектілік график және тұрақтылық жүйесі. Ол Mac OS X 10.4 Tiger және iOS-те iPhone SDK 3.0 арқылы енгізілді. Ол реляциялық entityattribute моделімен ұйымдастырылған деректерді XML, бинарлық немесе SQLite қоймаларына сериалдастыруға мүмкіндік береді. Деректер субъектілерді және олардың қатынастарын көрсететін жоғары деңгейдегі объектілерді қолдану арқылы өңделуі мүмкін. Негізгі деректер сериялық нұсқаны басқарады, объектінің өмірлік циклын және объектінің графигін басқаруды, оның ішінде тұрақтылықты қамтамасыз етеді. Core Data SQLite-мен тікелей байланысады, бұл әзірлеушіні негізгі SQL-тен оқшаулайды. Cocoa Bindings контроллердің көптеген міндеттерін модельдік бақылаудағы контроллерлік дизайндағы сияқты, Core Data деректер моделінің көптеген міндеттерін атқарады. Басқа да міндеттердің ішінде ол өзгерістерді басқаруды, дискіге сериалдастыруды, жад ізін азайтуды және деректерге сұрау салуды басқарады.
Core Data is an object graph and persistence framework provided by Apple in the macOS and iOS operating systems. It was introduced in Mac OS X 10.4 Tiger and iOS with iPhone SDK 3.0. It allows data organized by the relational entity–attribute model to be serialized into XML, binary, or SQLite stores. The data can be manipulated using higher level objects representing entities and their relationships. Core Data manages the serialized version, providing object lifecycle and object graph management, including persistence. Core Data interfaces directly with SQLite, insulating the developer from the underlying SQL. Just as Cocoa Bindings handle many of the duties of the controller in a model–view–controller design, Core Data handles many of the duties of the data model. Among other tasks, it handles change management, serializing to disk, memory footprint minimization and queries against the data.
Сақтау форматтары
Негізгі деректер нысандарды сақтау үшін XML, бинарлық немесе SQLite форматына түрлендіре алады. Негізгі деректер схемалары стандартталған. Егер сізде Xcode деректер моделі файлы болса, сіз осы форматтағы файлдарды еркін оқи да, жаза да аласыз. Бірақ EOF-тан айырмашылығы, Core Data қазіргі уақытта ODBC фреймворкін пайдаланбасаңыз, көп пайдаланушылық немесе бір уақытта қол жеткізуге арналмаған. Схеманы көшіру де оңай емес, көбінесе код қажет болады. Егер басқа дамытушылар сіздің деректер моделіңізге қол жеткізе алса және оған тәуелді болса, схемаңыз өзгерген жағдайда жаңа деректер моделімен қатар нұсқаны аудару кодын ұсынуыңызға тура келуі мүмкін.
Тарих және пайда болуы
Core Data өзінің дизайнының көп бөлігін NeXT-тің Enterprise Objects Framework (EOF) деген ертедегі өнімінен алады. EOF – Microsoft SQL Server және Oracle сияқты жоғары деңгейдегі SQL деректер қоры қозғалтқыштары үшін объектілік реляциялық карталау. EOF-тің мақсаты екі есе болды: біріншіден, деректер базасының қозғалтқышына қосылып, іске асыру егжей-тегжейін жасыру; екіншісі, деректерді реляциялық форматтан оқып, оны объектілер жиынтығына аудару. Әдетте, әзірлеушілер объектілермен ғана өзара әрекеттеседі, бұл күрделі бағдарламаларды әзірлеуді жеңілдетеді, бірақ деректерді объектілерге бейімдеу үшін кейбір алдын ала жұмыстар қажет. EOF объектінің моделі нәтижедегі бағдарламалардың құжат сияқты жұмыс істеуі үшін мақсатты түрде жасалған; пайдаланушы деректерді жадыда жергілікті түрде өңдей алады, содан кейін барлық өзгерістерді бір ғана «Сақтау» командасымен жаза алады. Өзінің тарихы бойы EOF NeXTSTEP/OpenStep жүйесінде басқаша қол жетімді болмаған пайдалы кодтарды қамтыды. Мысалы, EOF-ке қайсыбір объектілер өзгертілгенін анықтау қабілеті қажет болды, сонда жүйе оларды кейіннен жаза алады. Бұл әзірлеушіге құжат тәрізді жүйе ретінде ғана емес, сонымен қатар шексіз «Жою» командалар стегі түрінде ұсынылды, әр команда деректерге қолданылған, қайтарылмайтын әрекет ретінде ұсынылған. Көптеген әзірлеушілер бұл күйді басқару коды EOF-те оқшаулану үшін тым пайдалы деп шағымданып, ол кейіннен Mac OS X-ке ауысу кезінде Cocoa API-ге көшірілді. Бастапқыда EOF-тың өзі аударылмады. EOF негізінен OpenStep дәуіріндегі басқа өніммен, WebObjects-пен бірге қолданылды, ол бастапқыда Objective C-ге негізделген қолданба сервері болды. Сол кезде Apple WebObjects-ті Java бағдарламалау тіліне көшіру процесінде болды, және осы түрлендірудің бір бөлігі ретінде EOF-ті Cocoa-дан пайдалану әлдеқайда қиын болды. Бұл ретте үшінші тараптың да наразылығы күшті болды. Бір маңызды түсінік – EOF-тағы объектінің күйін басқару жүйесінің реляциялық деректер қорымен тікелей қатысы жоқ. Осы кодты әзірлеушілер басқа объектілердің графиктерін басқару үшін де қолдана алады және қолданды. Бұл рөлде, EOF-тің ең пайдалы бөліктері – шикі деректерден автоматты түрде объектілер жиынтығын құрастырып, содан кейін оларды қадағалау қабілеті болды. Осы тұжырымдама Core Data-ның негізін құрайды.