방금 이메일을 보냈습니다. 오픈 소스 모바일 커뮤니티 지난 몇 달 동안의 흥미로운 개발 성과를 공유하고자 합니다. 또한 많은 데이터베이스 사용자들이 모바일 문제를 겪고 있을 것으로 생각되어 블로그에 공유하고자 합니다. 동기화는 연결된 기기의 기본이며, 동기화는 기존 데이터베이스 사용 사례와 네트워크 세상 사이의 중요한 가교 역할도 한다고 생각합니다. JSON 문서 모델은 동기화 패턴에 매우 적합하므로 오늘 공유하는 접근 방식이 사람들이 NoSQL을 시도해야 하는 또 다른 이유가 되기를 바랍니다.

저희 모바일 팀은 Couchbase Server를 모바일 기기와 동기화할 수 있는 새로운 어댑터를 개발해 왔습니다. 일부 사용자로부터 초기 피드백을 받았습니다(감사합니다!) 또한 예제 앱을 작성하고 테스트해 본 결과 정말 마음에 들었습니다. 저희는 이 기능이 너무 마음에 들어 향후 모바일용 Couchbase를 이 기능을 중심으로 개발할 계획입니다.

(베테랑 사용자라면 'Couchbase Mobile'이라는 이름이 2011년의 이전 모바일 데이터베이스라는 것을 알아볼 수 있습니다. 이제 이 이름을 서버 측 구성 요소와 기본 모바일 데이터베이스를 포함한 전반적인 노력을 포괄하는 명칭으로 변경하고 있습니다).

이전에는 각 동기화 채널에 대해 독립적인 데이터베이스를 관리해야 했습니다. 이는 Apache CouchDB 필터링 복제 및 보안 모델의 내재적 한계로 인해 다소 난해한 방식이었습니다.

모바일용 Couchbase는 동기화를 위해 Couchbase Server 2.0의 증분 인덱스 기능을 사용하는 새로운 접근 방식을 취하므로 데이터가 확장 가능한 스토리지에 저장되고 채널이 가벼워집니다. 또한 문서는 서버에 중복 복사본을 만들지 않고도 여러 채널에 속할 수 있으며 여러 사용자가 볼 수 있습니다.

이 새로운 경량 채널 모델에 대해 몇 분과 이야기를 나눴고, 그 피드백은 압도적으로 긍정적이었습니다. 채널 멤버십은 채널 맵 기능에 의해 결정됩니다. 다음은 문서에 소유자와 멤버를 태그할 수 있는 채널 매퍼의 예시입니다.

함수(doc) {
만약 (doc.소유자_id) {
동기화("소유자-"+doc.소유자_id);
}
만약 (doc.멤버) {
에 대한 (var i = 0; i < doc.멤버.길이; ++i)
동기화("member-" + doc.멤버[i]);
}
}

모델의 나머지 절반은 각 사용자가 액세스할 수 있는 채널을 선언하기 위한 동기화 게이트웨이 인증 API입니다. 기본적으로 동기화 게이트웨이의 각 사용자 계정에는 사용자가 액세스할 수 있는 채널 목록이 포함되어 있습니다. 사용자는 해당 채널 중 하나에 태그가 지정된 문서만 읽을 수 있으며, 복제는 해당 채널로 자동 필터링됩니다.

저희가 받은 피드백을 바탕으로 이 모델은 다양한 방식으로 구성할 수 있어야 합니다. 예를 들어 위키와 채팅 애플리케이션의 예에서 각 채팅방 또는 다른 위키는 하나의 채널에 해당합니다. 각 채팅방에는 많은 메시지가 있고 각 위키에는 여러 페이지가 있을 수 있습니다. 따라서 이러한 앱에서 사용자는 일반적으로 몇 개의 채널의 회원 또는 소유자가 됩니다.

다른 앱에서는 각 사용자가 자신의 사용자 이름에 해당하는 이름을 가진 단일 채널에서만 동기화할 수 있습니다. 또는 큰 사진용 채널과 작은 섬네일용 채널이 따로 있고 WiFi를 통해 연결된 경우에만 큰 사진 채널을 동기화할 수도 있습니다.

모바일용 카우치베이스가 정식 출시되기까지 아직 해야 할 일이 많이 남아 있습니다. 몇 달 안에 초기 버전을 출시할 수 있기를 바랍니다. 이 버전은 채널 모델을 검증하는 데 중점을 둘 것입니다. 이후 버전에서는 성능과 확장성에 초점을 맞추고 초기 사용자가 파악한 누락된 기능을 추가할 예정입니다.

모바일에 대한 집중을 강화하기 위한 일환으로 TouchDB의 이름을 Couchbase Lite로 변경하기로 결정했습니다. 이는 기술적인 변경이 아닙니다. 이전 버전과 호환되는 동일한 CouchSync 프로토콜을 계속 사용할 것이므로 기존 동기화 백엔드와의 호환성을 깨뜨리지 않으니 안심하셔도 됩니다. 그리고 동급 최고의 통합 동기화 솔루션을 구축하게 되어 매우 기쁘게 생각합니다.

시작하고 싶으시다면 여기에서 시작하세요.

여러분이 만든 작품을 빨리 보고 싶어요!

작성자

게시자 J. Chris Anderson, 공동 창립자 겸 모바일 설계자, Couchbase

댓글 하나

  1. 채널을 지정하는 것은 서버 문서의 하위 집합과 동기화되는 필터링된 복제를 수행하는 모바일 클라이언트와 어떻게 다른가요?

    1. 크리스 앤더슨 2월 2, 2013에서 3:35 오후

      가장 큰 차이점은 인덱스 기반이라는 점입니다. 채널 인덱스가 없는 필터링된 복제는 일치하는 각 문서에 대해 잠재적으로 수백만 개의 관련 없는 문서에 대해 필터를 실행해야 합니다. 채널 인덱스를 사용하면 빅 데이터에서도 만족할 만한 성능을 얻을 수 있습니다.

      1. 붐! 이것이 바로 제가 찾던 바로 그 기능입니다. 라이트 데이터베이스 간 복제에 이 기능을 활용할 수 있나요(조만간 또는 향후에)?

        1. 크리스 앤더슨 2월 5, 2013에서 1:52 오후

          현재 모바일 디바이스에는 인덱싱된 채널이 없으며, 대부분의 사람들이 가지고 있는 데이터 세트가 일반 필터로도 충분할 정도로 작기 때문입니다.

  2. Chris의 글에 많은 도움이 되었습니다!

댓글 남기기