Saya sudah cukup akrab dengan database relasional dan telah menggunakan SQLite (dan database lain) di masa lalu. Namun, Core Data memiliki daya pikat tertentu, jadi saya sedang mempertimbangkan meluangkan waktu untuk mempelajarinya untuk digunakan dalam aplikasi saya berikutnya.
Apakah ada banyak manfaat menggunakan Data Inti dari SQLite, atau sebaliknya? Apa pro / kontra dari masing-masing?
Saya merasa sulit untuk membenarkan biaya belajar Core Data ketika Apple tidak menggunakannya untuk banyak aplikasi andalannya seperti Mail.app atau iPhoto.app - sebagai gantinya memilih untuk database SQLite. SQLite juga digunakan secara luas di iPhone.
Bisakah mereka yang terbiasa menggunakan keduanya mengomentari pengalaman mereka? Mungkin, seperti kebanyakan hal, pertanyaannya lebih dalam daripada hanya menggunakan satu di atas yang lain?
Jawaban:
Meskipun Core Data adalah turunan dari Enterprise Object Framework Apple , sebuah object-relational mapper (ORM) yang terikat erat dengan backend relasional, Core Data bukan ORM. Ini, pada kenyataannya, kerangka kerja manajemen grafik objek. Ini mengelola grafik instance objek yang berpotensi sangat besar, memungkinkan aplikasi untuk bekerja dengan grafik yang tidak akan sepenuhnya masuk ke dalam memori dengan menyalahkan objek masuk dan keluar dari memori yang diperlukan. Data Inti juga mengelola kendala pada properti dan hubungan dan mempertahankan integritas referensi (mis. Menjaga hubungan maju dan mundur konsisten ketika objek ditambahkan / dihapus ke / dari suatu hubungan). Dengan demikian, Core Data merupakan kerangka kerja ideal untuk membangun "model" komponen arsitektur MVC.
Untuk menerapkan manajemen grafiknya, Core Data terjadi untuk menggunakan SQLite sebagai penyimpan disk. Itu bisa diimplementasikan menggunakan database relasional yang berbeda atau bahkan database non-relasional seperti CouchDB . Seperti yang telah ditunjukkan orang lain, Data Inti juga dapat menggunakan XML atau format biner atau format atom yang ditulis pengguna sebagai backend (meskipun opsi ini mengharuskan seluruh grafik objek masuk ke dalam memori). Jika Anda tertarik pada bagaimana Core Data diimplementasikan pada backend SQLite, Anda mungkin ingin memeriksa kerangka kerja OmniDataObjects OmniGroup , sebuah implementasi open source dari subset dari Core Data API. The BaseTen kerangka juga merupakan implementasi dari API Core Data menggunakan PostgreSQL sebagai backend.
Karena Core Data tidak dimaksudkan untuk menjadi ORM untuk SQLite, itu tidak dapat membaca skema SQLite sewenang-wenang. Sebaliknya, Anda tidak harus bergantung pada kemampuan untuk membaca penyimpanan data SQLite Core Data dengan alat SQLite lainnya; skema adalah detail implementasi yang dapat berubah.
Jadi, sebenarnya tidak ada konflik antara menggunakan Core Data atau SQLite secara langsung. Jika Anda menginginkan database relasional, gunakan SQLite (langsung atau melalui salah satu pembungkus Objective-C seperti FMDB ), atau server database relasional. Namun, Anda mungkin masih ingin mempelajari Data Inti untuk digunakan sebagai kerangka kerja manajemen grafik objek. Dalam kombinasi dengan kelas pengontrol Apple dan widget tampilan kompatibel dengan nilai kunci, Anda dapat mengimplementasikan arsitektur MVC lengkap dengan kode yang sangat sedikit.
sumber
Dan dengan iOS 5.0 Anda mendapatkan manfaat tambahan karena dapat menggunakan sinkronisasi file iCloud secara gratis jika Anda menggunakan Core Data. Jika Anda menggunakan SQLite secara langsung, maka harus banyak mengutak-atik dan implementasi manual agar dapat disinkronkan di iCloud.
sumber
Data Inti bukan merupakan mesin basis data, melainkan API yang abstrak dari penyimpanan data aktual. Anda dapat memberitahu Core Data untuk disimpan sebagai database sqlite, plist, file biner, atau bahkan tipe penyimpanan data kustom.
Saya akan merekomendasikan mempelajari Data Inti, karena merupakan sumber yang bagus yang sangat mempercepat banyak bagian pengembangan aplikasi kakao.
sumber
SQLite adalah salah satu format database untuk Core Data. Menggunakan Data Inti, Anda mendapatkan integrasi yang lebih baik dengan API Cocoa lainnya.
sumber