Core Data vs SQLite 3 [zamknięty]

Jestem już dość zaznajomiony z relacyjnymi bazami danych i używałem SQLite (i innych baz danych) w przeszłości. Jednak Core Data ma pewien urok, więc rozważam spędzenie trochę czasu, aby nauczyć się go do wykorzystania w mojej następnej aplikacji.

Czy jest wiele korzyści z używania podstawowych danych przez SQLite, czy odwrotnie? Jakie są plusy / minusy każdego z nich?

Trudno mi uzasadnić koszty nauki podstawowych danych, gdy Apple nie używa ich dla wielu swoich flagowych aplikacje takie jak Poczta.aplikacja lub iPhoto.app-zamiast tego wybierając bazy danych SQLite. SQLite jest również szeroko stosowany na iPhone.

Czy osoby obeznane z używaniem obu mogą komentować swoje doświadczenia? Być może, jak w przypadku większości rzeczy, pytanie jest głębsze niż tylko używanie jednego nad drugim?

Author: Jonas, 2009-02-07

4 answers

Chociaż Core Data jest potomkiem Enterprise Object Framework, mapera obiektowo-relacyjnego (ORM), który był/jest ściśle powiązany z relacyjnym backendem, Core Data jest , a nie ORM. W rzeczywistości jest to framework do zarządzania grafami obiektowymi. Zarządza potencjalnie bardzo dużym wykresem instancji obiektów, umożliwiając aplikacji pracę z wykresem, który nie do końca pasuje do pamięci przez powodowanie błędów w pamięci i poza nią w razie potrzeby. Core Data zarządza także ograniczeniami na właściwości i relacje oraz utrzymuje integralność odniesień (np. utrzymywanie spójnych linków do przodu i do tyłu, gdy obiekty są dodawane/usuwane do / z relacji). Dane podstawowe są więc idealną ramą do budowania "modelu" komponentu architektury MVC.

Aby zaimplementować zarządzanie grafami, Core Data zdarza się używać SQLite jako magazynu dyskowego. To Może zostały zaimplementowane przy użyciu innej relacyjnej bazy danych lub nawet nie-relacyjnej bazy danych, takiej jak CouchDB. Jak zauważyli inni, Core Data może również używać formatu XML lub binarnego lub napisanego przez użytkownika formatu atomowego jako zaplecza (chociaż opcje te wymagają, aby cały wykres obiektu zmieścił się w pamięci). Jeśli interesuje cię sposób implementacji podstawowych danych w backendzie SQLite, możesz sprawdzić framework OmniGroup OmniDataObjects, implementację open source podzbioru Core Data API. Framework BaseTen {[2] } jest również implementacją Core Data API wykorzystujące PostgreSQL jako backend.

Ponieważ Core Data nie jest przeznaczony do ORM dla SQLite, nie może odczytać dowolnego schematu SQLite. I odwrotnie, nie powinieneś polegać na tym, że możesz odczytywać magazyny danych SQLite Core Data za pomocą innych narzędzi SQLite; schemat jest szczegółem implementacji, który może się zmienić.

Tak więc, nie ma tak naprawdę żadnego konfliktu pomiędzy używaniem Core Data lub SQLite bezpośrednio. Jeśli chcesz mieć relacyjną bazę danych, użyj SQLite (bezpośrednio lub za pośrednictwem jednego z Objective - C wrappery, takie jak FMDB) lub relacyjny serwer baz danych. Możesz jednak nadal chcieć nauczyć się podstawowych danych do wykorzystania jako framework do zarządzania grafami obiektowymi. W połączeniu z klasami kontrolerów firmy Apple i widżetami widoku zgodnymi z powiązaniami klucz-wartość, można zaimplementować kompletną architekturę MVC z bardzo małym kodem .

 277
Author: Barry Wark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-10 09:51:29

Dzięki iOS 5.0 możesz korzystać z synchronizacji plików iCloud za darmo, jeśli używasz podstawowych danych. Jeśli używasz SQLite bezpośrednio, musi to być dużo ręcznego majsterkowania i implementacji, aby zsynchronizować go w iCloud.

 45
Author: strange,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-21 10:25:57

Core Data to nie tyle silnik bazy danych, co API, które abstrahuje od rzeczywistego magazynu danych. Możesz powiedzieć podstawowe dane, aby zapisać jako bazę danych sqlite, plist, plik binarny, a nawet niestandardowy typ magazynu danych.

Zalecałbym naukę Core Data, ponieważ jest to doskonały zasób, który znacznie przyspiesza wiele części tworzenia aplikacji cocoa.

 34
Author: Joel Levin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-07 09:30:23

SQLite jest jednym z formatów baz danych dla podstawowych danych. Korzystając z podstawowych danych, uzyskujesz lepszą integrację z resztą interfejsu API Cocoa.

 12
Author: cefstat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-13 23:42:12