핵심 데이터 대 SQLite 3
나는 이미 관계형 데이터베이스에 대해 잘 알고 있으며 과거에는 SQLite (및 다른 데이터베이스)를 사용했습니다. 그러나 Core Data 에는 특별한 매력이 있으므로 다음 응용 프로그램에서 사용할 수 있도록 시간을 투자하는 것을 고려하고 있습니다.
SQLite를 통해 Core Data를 사용하면 많은 이점이 있습니까? 각각의 장단점은 무엇입니까?
Apple이 Mail.app 또는 iPhoto.app와 같은 많은 주요 응용 프로그램에 SQLite 데이터베이스를 사용하지 않고 핵심 데이터를 배우는 데 드는 비용을 정당화하기가 어렵다는 것을 알았습니다. SQLite는 iPhone에서도 광범위하게 사용됩니다.
자신의 경험에 대해 두 가지 의견을 모두 잘 알고 있습니까? 아마도 대부분의 경우와 마찬가지로 질문이 다른 것을 사용하는 것보다 더 깊습니까?
Core Data는 Apple의 Enterprise Object Framework 의 자손이지만 관계형 백엔드와 밀접하게 연결된 ORM (Object-Relational Mapper)이지만 Core Data는 ORM 이 아닙니다 . 사실 이것은 객체 그래프 관리 프레임 워크입니다. 잠재적으로 매우 큰 객체 인스턴스 그래프를 관리하므로 필요에 따라 메모리 안팎에서 객체에 결함을 발생시켜 앱이 메모리에 완전히 맞지 않는 그래프로 작업 할 수 있습니다. Core Data는 속성 및 관계에 대한 제약 조건을 관리하고 참조 무결성을 유지합니다 (예 : 개체가 관계에 추가 / 제거 될 때 정방향 및 역방향 링크의 일관성 유지). 따라서 Core Data는 MVC 아키텍처의 "모델"구성 요소를 구축하기위한 이상적인 프레임 워크입니다.
그 그래프 관리를 구현하기 위해, 코어 데이터는 어떻게 디스크 저장소로 SQLite는 사용할 수 있습니다. 그것은 수 와 같은 다른 관계형 데이터베이스 또는 비 관계형 데이터베이스를 사용하여 구현 된 CouchDB를 . 다른 사람들이 지적했듯이 Core Data는 XML 또는 이진 형식 또는 사용자 작성 원자 형식을 백엔드로 사용할 수도 있습니다 (이 옵션을 사용하려면 전체 개체 그래프가 메모리에 맞아야합니다). SQLite 백엔드에서 Core Data를 구현하는 방법에 관심이있는 경우 Core Data API 하위 집합의 오픈 소스 구현 인 OmniGroup 의 OmniDataObjects 프레임 워크 를 확인할 수 있습니다 . BaseTen의 프레임 워크는 백엔드로의 PostgreSQL을 사용하여 코어 데이터 API의 구현입니다.
Core Data는 SQLite 용 ORM이 아니므로 임의의 SQLite 스키마를 읽을 수 없습니다. 반대로, 다른 SQLite 도구를 사용하여 Core Data의 SQLite 데이터 저장소를 읽을 수 있어야합니다. 스키마는 변경 될 수있는 구현 세부 사항입니다.
따라서 Core Data 또는 SQLite를 직접 사용하는 것은 실제로 충돌이 없습니다. 관계형 데이터베이스를 원하는 경우 SQLite (직접 또는 FMDB 와 같은 Objective-C 랩퍼 중 하나를 통해 ) 또는 관계형 데이터베이스 서버를 사용하십시오. 그러나 객체 그래프 관리 프레임 워크로 사용할 핵심 데이터를 계속 배우고 싶을 수도 있습니다. 호환 뷰 위젯을 결합 애플의 컨트롤러 클래스와 키 - 값과 함께, 당신은 완성 된 MVC 아키텍처를 구현할 수있는 아주 작은 코드입니다.
또한 iOS 5.0을 사용하면 Core Data를 사용하는 경우 iCloud 파일 동기화를 무료로 사용할 수 있다는 추가 이점이 있습니다. SQLite를 직접 사용하는 경우 iCloud에서 동기화하려면 많은 수동 땜질 및 구현이 필요합니다.
Core Data는 실제 데이터 저장소를 추상화하는 API이기 때문에 데이터베이스 엔진이 아닙니다. Core Data에 sqlite 데이터베이스, plist, 이진 파일 또는 사용자 정의 데이터 저장소 유형으로 저장하도록 지시 할 수 있습니다.
코코아 응용 프로그램 개발의 많은 부분을 크게 가속화하는 훌륭한 리소스이므로 Core Data를 배우는 것이 좋습니다.
SQLite는 Core Data의 데이터베이스 형식 중 하나입니다. Core Data를 사용하면 나머지 Cocoa API와 더 잘 통합됩니다.
참고 URL : https://stackoverflow.com/questions/523482/core-data-vs-sqlite-3
'Programing' 카테고리의 다른 글
최고의 전함 AI는 무엇입니까? (0) | 2020.03.09 |
---|---|
Node.js 및 MySQL에 어떤 ORM을 사용해야합니까? (0) | 2020.03.09 |
명령 행에서 JUnit 테스트 케이스를 실행하는 방법 (0) | 2020.03.09 |
System.gc ()를 호출하는 것이 왜 나쁜 습관입니까? (0) | 2020.03.09 |
루비 해시 객체를 JSON으로 변환하는 방법? (0) | 2020.03.09 |