2013-03-08 2 views
0

CouchDB에 대한 나의 약한 이해 때문에 조금 혼란스러워합니다. 간단히 설명 드리겠습니다. 나는 내 클라이언트가 안드로이드 버전을 요구할 수있는 아이폰 앱을 개발 중이다. 이 응용 프로그램의 데이터 저장소로 CouchDB를 사용하고 있습니다.CocuchDB/TouchDB는 iOS 용 오프라인/온라인 설정을 제공하도록 설계 되었습니까?

관리자가 정보를 설정/업데이트 할 수있는 백엔드를 설계했습니다. 모든 업데이트 된 정보는 모든 아이폰 장치에 복제해야합니다. 내가 서버에서 장치로 복제를 말하면, 하나의 아이폰 장치에서 다른 장치로의 복제를 의미하지는 않는다. 업데이트 된 소스는 항상 서버가 될 것입니다.

내 클라이언트는 기능 가능한 경우의 대부분은 오프라인으로 작업 할 것을 원한다. 오프라인 클라이언트의 일부 기능을 사용하려면 자동으로 동기화 될 CouchDB 및 TouchDB (iPhone)를 사용해야합니다.

는 저에 따르면 CouchDB를이 목적에 부합하도록 설계되지 않고 데이터 소스가 하나 개의 서버 만 배수가 아닌 경우 분산 컴퓨팅에 필요한 복제를 위해 디자인했다.

CouchDB/TouchDB 사용 많은 문제가 있습니다. 큰 문제 중 하나는 제 논리와 UI 구현이 함께 내 xcode에 구축 된 것입니다. 내일 내가 안드로이드 응용 프로그램을 개발하고 싶다면 다시 안드로이드 구문으로 같은 논리를 구현해야합니다. 로직 요구가 변경되면 두 버전이 모두 업데이트됩니다. 클라이언트가 내일 윈도우와 BB 버전을 개발하기를 원한다면 좀 더 좌절 할 것입니다.

나는 우리가 하나의 미들웨어를 구축 할 3 계층 아키텍처를 사용한다 나의 클라이언트를 제안 할 수 있습니다 그리고 우리가 우리의 논리를 유지합니다이를 방지합니다. 앱 수준에서 개발해야하는 작업은 WebService 및 현재 UI를 통해 미들웨어에서 데이터를 가져 오는 것입니다.

는하지만 내 클라이언트에게 제안하기 전에 나는 전문 지식에서 내 생각을 확인합니다. 나는 CouchDB에 대한 지식이 없기 때문에 CouchDB가 오프라인/온라인 설정 용으로 만 설계 되었기 때문에 잘못되었을 수도 있습니다.

여기에서 전문 기술을 기다리고 있습니다. 지금은 비슷한 일하고 있어요, 그래서 내가 발견 한 것을 공유 할 수 있습니다

+0

귀하의 기술과 고객의 요구 사항에 맞는 것을 제안 할 것입니다. 동기 논리를 세 번째 계층으로 이동할 수는 있지만 클라이언트 논리를 쉽게 만들 수 있는지 알기는 어렵습니다.문제를 옮겨서 실패 지점 수를 늘리는 것 같습니다. – WiredPrairie

+0

"문제를 해결하고 실패 지점 수를 늘리는 것처럼 보입니다." 방법? – SangamAngre

+0

모든 (iphone/android/windows/BB)에 적용 할 수있는 논리를 유지하는 것이 좋지 않습니다. 3 단계는 세계적인 접근 방식입니다. 그렇지 않니? – SangamAngre

답변

3

.

우리는 데이터를 저장하고 iOS 용 TouchDB를 사용하여 모바일 장치로 데이터를 복제하기 위해 BigCouch (Couch 컴퓨터 클러스터를 제공하는 Cloudant에서 관리하는 CouchDB 포크)를 사용하고 있습니다.

우리는 TouchDB는 BigCouch 작업을 얻을 수있었습니다,하지만 도로에서 몇 충돌없이되지 않았습니다. TouchDB는 CouchDB에 내장 된 기존 복제 기능을 활용하고이를 잘 처리합니다.

제 경험에 따르면 TouchDB는 오프라인 모드에서도 잘 작동합니다. 장치가 오프라인 상태가되었을 때 중단 된 위치에서 복제가 실행됩니다. Touch가 push, pulls 또는 both를 수행하도록 구성 할 수도 있습니다.

실제 문제는 Android로 이전하려는 경우입니다. TouchDB Java 포트가 현재 미안합니다. 그것은 존재하지만 생산을위한 준비가되어 있지 않습니다. 실제로 저는 이번 주에 트위터에서 프로젝트를 인수하기 위해 누군가를 고용하려고 노력하고있는 것을 보았습니다.

TouchDB의 Java 포트가 제작 준비가 되었더라도 Android 용 코드를 다시 작성해야합니다. 그렇다면이 기술은 여러분이 사용하는 기술에 상관없이 다시 적용됩니다.

+0

3 층 아키텍처를 사용하므로 여기 유용하지 않습니까? 또한 유지 보수 비용을 낮게 유지하고 응용 프로그램 수준이 아닌 미들웨어의 변경으로 로직 변경을 초래할 것입니다. – SangamAngre

관련 문제