2010-12-15 4 views
1

그래서 서버에 마스터 데이터베이스가있는 응용 프로그램을 계획 중이며, 제목, 아티스트 및 출시일 열이있는 3,000 개의 CD가 있습니다.사용자 db를 서버의 master db와 동기화하는 방법은 무엇입니까?

1) 사용자가 컬렉션에 CD를 추가하면 앱 로컬 SQLite DB에 추가됩니다. 하지만 CD 제목을 잘못 입력했다고 가정 해 보겠습니다. 사용자가 동기화 할 때 업데이트 된 행을 처리하려면 어떻게해야합니까? 'IsUpdated'라는 열은 해당 행을 업데이트 할 때마다 하나씩 증가하는 숫자 값이어야합니까? 이렇게하면 응용 프로그램에서 서버의 IsUpdated가 특정 항목에 대한 로컬 IsUpdated보다 크다는 것을 알게되면 이제 내용을 대체하게됩니다. 말이 돼? 실용적일까요? 다른 옵션은 무엇입니까?

2) 새로운 컬럼을 추가 할 때 어떻게해야합니까? 바코드 또는 가격 추가? 난 그냥 로컬로 새 열을 추가하는 응용 프로그램에 대한 업데이 트를 누른 다음 서버에서 동일한 작업을 수행하고 나머지는 실행을 보냅니 까? 동기화 문제로 1 위를 차지할 수도 있습니다.

답변

1

먼저 자세한 내용을 제공해야합니다. 전체 3000 마스터 목록도 원격 데이터베이스에 복제됩니까?

소리가 좋아.

그렇다면이 경우 복제와 마찬가지로 DB 디자인 문제가 아닙니다.

테이블의 모든 행, 특히 행을 길게 만드는 행을 업데이트하는 것은 좋지 않습니다. 그냥 테이블을 떨어 뜨리고 재창조하는 것이 좋습니다. < --- 서버에서 RDBMS에서 작동하는 방식입니다. 클라이언트 db에서 개념이 변경되는지는 알 수 없습니다. 그리고 지금 우리는 단순한 데이터베이스 복제보다 더 많은 복제에 관한 iPhone의 질문에 빠져 있습니다. 앱을 다시 게시하는 것이 좋을까요? 사용자 데이터가 서버 데이터와 분리되어 있습니까? 게시 된 후에 DDL을 로컬/원격 테이블에서 수행 할 수 있습니까?

# 1에서 윤곽을 그리면 변경 사항 전체 목록을 검색하는 대신. 나는 데이트 테이블을 유지할 것이다. 로컬 응용 프로그램은 last_updated_Datetime을 저장하고, 해당 datetime이 다운 된 후에 델타 테이블의 모든 레코드를 저장합니다. 다운로드가 완료되면 로컬 시스템에서 적용 방법을 결정할 수 있습니다. 다시 이것은 대량 변경에 부적합합니다.

관련 문제