분류

핵심 데이터와 동기화

코어 데이터 스택으로 앱을 개발해 왔는데 이제 클라우드 컴포넌트를 추가하려고 합니다. 사용자에게 로그인 메시지를 표시하고 모든 데이터를 클라우드에 저장하여 모든 기기에서 사용할 수 있도록 하세요. 또는 앱 사용자에게 데이터를 배포해야 하는 콘텐츠 공유 앱일 수도 있습니다.

어쨌든 네트워킹 코드를 작성하는 것은 시간이 많이 걸리고 오류가 발생하기 쉽기 때문에 다음과 같은 방법을 사용할 수 있습니다. CloudKitParse 또는 Firebase 를 사용하여 클라우드 구성 요소를 통합할 수 있습니다. 다음과 같은 경우 CloudKitiOS 기기만 지원할 수 있으며, 다음과 같은 경우 Parse 또는 Firebase 모든 핵심 데이터 코드를 다시 작성해야 합니다.
 
카우치베이스 모바일 팀과 커뮤니티는 핵심 데이터 모델을 다시 작성하지 않고도 앱에 동기화를 추가하고 크로스 플랫폼 지원을 유지하기 위해 플러그 가능한 구성 요소를 개발하기 위해 정말 열심히 노력해 왔습니다. On iOS의 경우 NSIncrementalStore 클래스는 코어 데이터 스택에 플러그 가능한 백엔드를 추가할 수 있는 후크를 제공합니다.

CBLIncrementalStore라는 이름의 이 파일은 다음과 같은 폴더에서 찾을 수 있습니다. .zip 파일 다운로드 가능 여기.

프로젝트에서 사용하려면 이 클래스뿐만 아니라 CouchbaseLite.framework를 포함해야 합니다:

 

 

CBL인크리멘탈소어 사용 방법

설정 프로세스는 코어 데이터 스택이 지원하는 코어 데이터 스택을 설정하는 방법과 매우 유사합니다. NSSQLiteStore 스토어. 이제 자세히 알아봅시다.

목표는 NSManagedObjectContext 인스턴스를 관리되는 객체 모델을 로드하는 영구 저장소 코디네이터와 연결합니다. 마지막으로 영구 저장소 유형 CBL인크리멘탈 스토어 유형 를 퍼시스턴트 스토어 코디네이터에게 전달합니다.

 

다음과 같은 새 클래스를 만들 수 있습니다. 코어데이터스택 를 사용하여 설정 로직을 유지합니다:

 

무슨 일이 일어나고 있는지 단계별로 설명하겠습니다:

  • 1단계: 정의한 모델을 로드합니다. .xcdatamodelmodelId 파일.
  • 2단계: 통화 업데이트관리객체모델: 를 사용하여 핵심 데이터 모델이 Couchbase Lite가 이해하는 모델에 매핑되도록 합니다.
  • 3단계: 평소처럼 영구 스토어 코디네이터 초기화하기
  • 4단계: 관리되는 개체 컨텍스트 설정
  • 5단계: 해당 Couchbase Lite 데이터베이스가 존재하는지 확인합니다. 존재한다면 기존 CBLDatabase 로서 CBL인크리멘탈스토어 저장소 유형입니다. 그렇지 않은 경우, 이전 SQLite 데이터 저장소에서 Couchbase Lite로 마이그레이션을 수행합니다.

 

동기화 추가

그리고 CBL인크리멘탈스토어 클래스에는 데이터베이스 속성을 사용하면 평소와 같이 Couchbase Lite 및 동기화 게이트웨이를 사용하여 복제를 만들 수 있습니다:

인증을 추가할 수도 있습니다. CBLAuthenticator 클래스. 참조 복제 관련 문서 를 클릭해 방법을 알아보세요.

 

JSON의 핵심 데이터 엔티티

새 엔티티가 코어 데이터에 저장될 때마다 CBLIncrementalStore는 Couchbase Lite에 저장된 해당 JSON 문서에 CBLIS_type 키를 추가합니다.

 

Couchbase Lite와 동기화 게이트웨이의 관점에서 보면 평소와 같은 JSON이며 달라진 점은 없습니다. 하지만 이 매핑을 염두에 두면 REST API를 사용하여 새 문서를 추가하거나 웹 페이지에 표시할 수도 있기 때문에 유용합니다.

curl -X POST -H 'Content-Type: application/json' -d '{"CBLIS_type": "사람", "이름": "Johnny"}' https://localhost:4984/testdb/

 

더 궁금하다면: NSIncrementalStore 서브 클래스화하기

CBLIncrementalStore의 작동 방식을 이해하려면 API 사양을 따라야 합니다: "NSIncrementalStore 서브클래스는 등록해야 합니다.
클래스를 NSPersistentStoreCoordinator로 호출한 다음 필요에 따라 퍼시스턴트 스토어 인스턴스를 구성합니다.
추가 퍼시스턴트 스토어 유형:구성:URL:옵션:오류: 를 호출합니다." (자세히 알아보기 엔십스터)

새 스토어를 등록하면 CBLIncrementalStore에서 두 가지 메서드가 호출됩니다:

+입력 및 +초기화

초기화 클래스 메서드는 클래스가 처음 로드될 때 호출됩니다. 이 메서드에서 CBLIncrementalStore가 다음을 등록합니다.
자체를 NSPersistentStoreCoordinator로 호출합니다. 따라서 추가 퍼시스턴트 스토어 유형:구성:URL:옵션:오류: 를 사용하면 이 새로운 스토어 유형에 대해 알 수 있습니다.

-loadMetada

NSPersistentStoreCoordinator에 의해 자동으로 호출됩니다. Couchbase Lite 데이터베이스를 생성하고 뷰를 초기화하여 유형별로 문서를 쿼리하고
를 다대다 관계로 설정하고 스토어에 대한 메타데이터를 설정합니다. 이 메서드는 또한 충돌하는 라이브 쿼리를 생성합니다.
문서.

-실행 요청:위드컨텍스트:오류:

이 메서드는 모든 읽기 작업을 수행하기 위해 호출됩니다. 그리고 지속성이 있는 쓰기 작업
백엔드. 

요청 유형이 NSSaveRequestType를 설정하면 CBLIncrementalStore가 핵심 데이터를 적절하게 매핑합니다.
엔티티를 새로 만들거나 개체를 업데이트 또는 삭제하는 경우 Couchbase Lite 문서에 NSManagedObject를 추가합니다. 

요청 유형이 NSFetchRequestType를 호출하면 CBLIncrementalStore는 문서를 쿼리하고 다음과 같은 배열을 반환합니다.
개체 이름 및 술어에 따라 객체를 가져옵니다.

이는 NSIncrementalStore의 서브클래스가 스스로 초기화해야 하는 방식과 일치합니다. 자세한 내용은
NSIncrementalStore on 엔십스터.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 제임스 노센티니

제임스 노센티니는 카우치베이스 모바일의 문서를 담당하는 테크니컬 라이터입니다. 이전에는 개발자 지원 담당자로 일했으며 그 전에는 HouseTrip의 프론트엔드 개발자로 일했습니다. 또한 여가 시간에는 raywenderlich.com에 안드로이드 튜토리얼을 작성하는 것을 즐깁니다.

댓글 하나

  1. 멋지네요! 이 기능이 정확히 어떻게 작동하는지 보여주는 데모 앱은 꽤 멋질 것입니다. 문제는 여전히 남아 있습니다. 서버에서 직접 데이터를 가져오려면 다른 수단을 통해 데이터를 가져와야 합니다!

    1. 제임스 노센티니 3월 16, 2015에서 9:33 오전

      서버에서 데이터를 가져와야 하는 경우 REST API를 사용할 수 있습니다. 검색 결과는 서버에서 직접 문서를 가져와야 하는 좋은 예입니다. 카우치베이스 서버 웹 콘솔에서 보기를 정의한 다음 동기화 게이트웨이를 통해 이 보기를 쿼리하고 그 결과를 장치에 표시할 수 있습니다. 사용자가 항목을 즐겨찾기에 추가하거나 북마크하면 동기화 기능을 통해 사용자 계정과 동기화할 수 있습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.