카우치베이스 모바일

iOS 앱에서 카우치베이스 라이트 시작하기 : Part1

이 글에서는 iOS 앱에서 Couchbase Lite를 시작하는 방법을 살펴봅니다. Couchbase Lite는 독립적으로, P2P 네트워크에서 또는 동기화 게이트웨이를 원격 엔드포인트로 사용하여 작동할 수 있는 임베디드 JSON 데이터베이스입니다. 여기서는 Swift의 iOS 앱의 맥락에서 프레임워크를 살펴볼 것이지만, 여기서 설명하는 모든 내용은 다른 플랫폼(Android, iOS(ObjC), Xamarin)에서 개발된 모바일 앱에도 동일하게 적용됩니다. 편차가 있는 경우 해당 편차를 명시합니다. 다른 플랫폼에 대한 관련 포스팅도 기대해 주세요!

참고: 현재 프로덕션 릴리스인 Couchbase Mobile v1.4에 대해 논의할 예정입니다. 최신 카우치베이스 모바일의 개발자 프리뷰 버전 2.0 . 이에 대해서는 다음 게시물에서 자세히 살펴보겠습니다.

배경

Couchbase 모바일 스택은 Couchbase 서버, Couchbase 동기화 게이트웨이 및 Couchbase Lite 임베디드 데이터베이스로 구성됩니다. 서버에 대한 자세한 내용은 카우치베이스 서버 시작하기 가이드 및 동기화 게이트웨이의 카우치베이스 동기화 게이트웨이 시작하기 가이드.

iOS 앱 개발과 Swift의 기본 사항에 익숙하다고 가정하겠습니다. NoSQL 데이터베이스 또는 Couchbase에 대해 자세히 알아보고 싶으시다면 카우치베이스 사이트.

카우치베이스는 오픈소스입니다. 여기서 사용하는 모든 기능은 무료로 사용해 볼 수 있습니다.

카우치베이스 라이트

카우치베이스 라이트는 여러 배포 모드에서 사용할 수 있습니다.

  • 옵션 1: 장치에서 독립형 크로스 플랫폼 임베디드 데이터베이스로 사용할 수 있습니다.
  • 옵션 2: 여러 기기에서 데이터를 동기화할 수 있는 원격 동기화 게이트웨이와 함께 사용할 수 있습니다. 이 경우는 Couchbase 서버와 함께 전체 Couchbase 스택을 포함하도록 확장할 수 있습니다. 장치에서 Couchbase Lite의 관점에서 보면 Couchbase Lite가 원격 동기화 게이트웨이와 인터페이스하므로 Couchbase 서버가 있는지 여부는 크게 중요하지 않습니다.
  • 옵션 3: P2P 모드에서 사용 가능

여기서는 옵션 1에 초점을 맞추겠습니다.

네이티브 API

카우치베이스 라이트는 앱이 카우치베이스 플랫폼과 쉽게 인터페이스할 수 있는 iOS, 안드로이드, 윈도우용 네이티브 API를 제공합니다. 앱 개발자는 Couchbase Lite 임베디드 데이터베이스의 내부에 대해 걱정할 필요 없이 멋진 앱 구축에만 집중할 수 있습니다. 기본 API를 사용하면 다른 플랫폼 프레임워크/서브시스템과 상호 작용할 때와 마찬가지로 Couchbase Lite 프레임워크와 상호 작용할 수 있습니다. 이 블로그 게시물에서는 다시 한 번 Couchbase Mobile v1.4에 대해 설명하겠습니다. 전체 API 목록은 다음에서 확인할 수 있습니다. 카우치베이스 개발자 사이트.

통합

카우치베이스 라이트 프레임워크를 iOS 앱에 통합하는 데는 여러 가지 옵션이 있습니다. 다음과 같은 종속성 관리 시스템을 사용하는 것이 가장 간단할 것입니다. 코코아팟 또는 카르타고를 사용해도 되지만, 원하는 경우 프레임워크를 앱 프로젝트에 수동으로 포함할 수 있는 옵션이 있습니다. 저희의 카우치베이스 모바일 시작 가이드 를 클릭해 다양한 통합 옵션을 확인하세요.

참고 Swift 앱의 경우 프레임워크를 임포트한 후 브릿징 헤더(앱에 아직 없는 경우)를 생성하고 다음 파일을 임포트해야 합니다.

 

데모 앱

여기에서 데모 Xcode 프로젝트를 다운로드하세요. 깃허브 리포지토리 . 블로그의 나머지 부분에서는 이 앱을 예로 사용하겠습니다.

 

이 앱은 코코아팟을 사용하여 Couchbase Lite 프레임워크를 통합하며, Couchbase Lite 프레임워크 사용의 기본을 익히기 위한 앱입니다. 다운로드가 완료되면 앱을 빌드하고 실행하세요. 이 앱을 시작점으로 사용하여 다른 API를 테스트하기 위해 앱을 확장할 수 있습니다.

 

기본 워크플로

로컬 데이터베이스 만들기

열기 DB메인메뉴뷰컨트롤러.swift 파일을 찾아 createDBWithName 함수입니다.

그러면 기본 경로(/도서관/응용 프로그램 지원)에 지정된 이름의 데이터베이스가 생성됩니다. 인스턴스화할 때 다른 디렉터리를 지정할 수 있습니다. CBLManager 클래스.

  1. 데이터베이스와 연결할 CBLDatabaseOptions 객체를 만듭니다. 예를 들어 encryptionKey 속성을 사용하여 데이터베이스에 사용할 암호화 키를 설정할 수 있습니다. 다음에서 다른 옵션을 살펴보세요. CBLDatabaseOptions 클래스.
  2. 데이터베이스 이름은 소문자로 입력해야 합니다. 샘플 앱은 자동으로 이름을 소문자로 표시합니다. 성공하면 로컬 데이터베이스가 없는 경우 새 로컬 데이터베이스가 생성됩니다. 존재하면 기존 데이터베이스에 대한 핸들이 반환됩니다.

데이터베이스 목록

매우 간단합니다. 다음에서 DBListTableViewController.swift 파일입니다. The 모든 데이터베이스 이름 속성을 CBLManager 생성된 데이터베이스를 나열합니다.

데이터베이스에 새 문서 추가하기

열기 DocListTableViewController.swift 파일을 찾아 createDocWithName 함수입니다.

  1. 이 호출의 결과로 고유 ID를 가진 문서가 생성됩니다.
  2. 사용자 속성 집합을 쌍으로 지정할 수 있습니다. 다른 방법으로 CBLDocumentModel 객체를 사용하여 애플리케이션 데이터를 지정할 수 있습니다. 애플리케이션의 CBLDocumentModel 는 iOS 플랫폼에서만 사용할 수 있습니다.이 예제에서는 속성을 사용하겠습니다.

이렇게 하면 지정된 사용자 속성을 가진 문서의 새 수정본이 생성됩니다.

데이터베이스에 문서 나열

열기 DocListTableViewController.swift 파일을 찾아 데이터베이스에 대한 모든 문서 가져오기 함수

  1. 지정된 이름의 데이터베이스에 대한 핸들 가져오기
  2. 만들기 CBLQuery 객체입니다. 이 쿼리는 모든 문서를 가져오는 데 사용됩니다. 일반 쿼리 객체 또는 "라이브" 쿼리 객체를 만들 수 있습니다. "라이브" 쿼리 개체의 유형은 CBLLiveQuery 쿼리 결과에 영향을 미치는 방식으로 데이터베이스가 변경될 때마다 자동으로 새로 고쳐집니다.
  3. 쿼리 객체에는 결과를 사용자 지정하기 위해 조정할 수 있는 여러 가지 속성이 있습니다. 속성을 수정하고 결과에 미치는 영향을 확인해 보세요.
  4. 데이터베이스 변경사항에 대한 알림을 받으려면 라이브 쿼리 개체에 명시적으로 옵저버를 추가해야 합니다. 이에 대해서는 "데이터베이스의 문서 변경 사항 관찰하기" 섹션에서 자세히 설명합니다. 관찰자가 더 이상 필요하지 않으면 관찰자를 제거하고 변경 사항 관찰을 중단하는 것을 잊지 마세요!
  5.  쿼리를 비동기적으로 실행합니다. 원하는 경우 동기식으로 실행할 수도 있지만 데이터 집합이 큰 경우에는 비동기식으로 실행하는 것이 좋습니다.
  6. 쿼리가 성공적으로 실행되면 쿼리가 성공적으로 실행되면 CBLQueryEnumerator 객체입니다. 쿼리 열거자를 사용하면 결과를 열거할 수 있습니다. 결과를 표시하는 테이블 보기의 데이터 소스로 매우 적합합니다.

기존 문서 편집

 열기 DocListTableViewController.swift 파일을 찾아 updateDocWithName 함수입니다.

  1. 편집이 필요한 문서에 대한 핸들을 가져옵니다. 문서에서 CBLQueryEnumerator 를 쿼리하여 선택한 인덱스에서 문서에 대한 핸들을 가져올 수 있습니다.
  2. 사용자 속성을 쌍으로 업데이트합니다. 다음과 같은 대안이 있습니다. CBLDocumentModel 객체를 사용하여 애플리케이션 데이터를 지정할 수 있습니다. 이 기능은 iOS에서만 사용할 수 있습니다. 이 예제에서는 속성을 사용하겠습니다.
  3. 문서를 업데이트하려면 업데이트해야 하는 문서의 개정판을 명시적으로 표시하기 위해 개정아이디가 필요합니다. 이것은 "_rev" 키를 입력합니다. 이 키는 충돌 해결에 필요합니다. 자세한 내용은 다음과 같이 확인할 수 있습니다. 여기. 그러면 지정된 사용자 속성을 가진 문서의 새 수정본이 생성됩니다.

기존 문서 삭제하기

 열기 DocListTableViewController.swift 파일을 찾아 deleteDocAtIndex 함수입니다.

  1. 편집이 필요한 문서의 핸들을 가져옵니다. 선택한 인덱스에서 문서에 대한 핸들을 가져오기 위해 CBLQueryEnumerator를 쿼리할 수 있습니다.
  2. 문서를 삭제합니다. 이렇게 하면 문서의 모든 수정본이 삭제됩니다.

데이터베이스에서 문서 변경 사항 관찰하기

열기 DocListTableViewController.swift 파일을 찾아 추가 라이브 쿼리 옵저버 및 시작 옵저빙 함수

  1. 쿼리 결과에 영향을 미치는 데이터베이스의 변경 사항을 알림 받으려면 라이브 쿼리 개체에 옵저버를 추가하세요. 이것은 Swift/ Obj C 버전이 다른 모바일 플랫폼과 다른 경우입니다. 다른 플랫폼에서 개발하는 경우, 다른 플랫폼에서 개발하는 경우 추가 변경 리스너 API를 사용할 수 있습니다. 그러나 Couchbase Lite 1.4에서는 이 API가 iOS 플랫폼에서 지원되지 않으며, 대신 iOS의 키-값-옵저버 패턴을 활용하여 변경 알림을 받게 됩니다.  라이브 쿼리 개체에 KVO 옵저버를 추가하여 라이브 쿼리 개체의 "행" 속성에 대한 변경 사항을 관찰하기 시작합니다.
  2. 변화 관찰 시작

LiveQuery 객체의 "행" 속성에 영향을 미치는 데이터베이스에 변경 사항이 있을 때마다 앱에 변경 알림이 전송됩니다. 변경 알림을 받으면 UI를 업데이트할 수 있으며, 이 경우 테이블 뷰를 다시 로드합니다.

데이터베이스 삭제

열기 DBListTableViewController.swift  파일을 찾아 삭제 데이터베이스 인덱스 함수입니다.

데이터베이스 삭제는 데이터베이스에서 간단한 delete() 호출을 통해 처리됩니다.

결론

보시다시피, 독립형 버전의 Couchbase Lite를 신규 또는 기존 iOS 앱에 통합하는 것은 매우 간단합니다. 이 게시물에서 설명한 샘플 앱은 다음 링크에서 다운로드할 수 있습니다. 깃허브 리포지토리 를 클릭하고 다양한 인터페이스를 살펴보세요. 더 궁금한 점이 있으면 언제든지 트위터로 문의해 주세요. @rajagp 또는 이메일을 보내주세요. priya.rajagopal@couchbase.com.

그리고 카우치베이스 모바일 개발자 포럼 는 모바일 관련 질문에 대한 답변을 얻을 수 있는 또 다른 좋은 곳입니다. 또한 카우치베이스 개발자 포털 카우치베이스 모바일에 대해 자세히 알아보세요.

 

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

작성자

게시자 프리야 라자고팔, 제품 관리 부문 선임 이사

프리야 라자고팔은 클라우드 및 엣지용 개발자 플랫폼을 담당하는 Couchbase의 제품 관리 수석 이사입니다. 그녀는 20년 이상 여러 기술 및 제품 리더십 직책을 맡으며 전문적으로 소프트웨어를 개발해 왔으며, 그중 10년 이상은 모바일 기술에 집중했습니다. TISPAN IPTV 표준 대표로서 IPTV 표준 사양에 핵심적인 기여를 했습니다. 네트워킹 및 플랫폼 보안 분야에서 22개의 특허를 보유하고 있습니다.

댓글 하나

  1. [...] Couchbase Server, 동기화 게이트웨이 및 Couchbase Lite 임베디드 NoSQL 데이터베이스를 소개합니다. 이전 게시물에서 Couchbase Lite를 iOS 앱에서 독립형 임베디드 NoSQL 데이터베이스로 사용하는 방법에 대해 설명했습니다. [...]

  2. [...] 모드로 전환합니다. 이 글에서는 Couchbase Lite와의 통합에 대한 자세한 내용은 다루지 않습니다. Couchbase Lite 시작하기 블로그 [...]에서 시작하기 좋은 곳입니다.

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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