2012-01-02 2 views
11

Apple에서 지정한 SQLite "라이브러리 스타일"응용 프로그램 설계를 기반으로 코어 데이터와 함께 iCloud를 사용하고 있습니다. 기본적인 기능이 잘 작동하는 동안 트랜잭션 로그와 트랜잭션 로그가 어떻게 관리되는지 걱정됩니다.코어 데이터 iCloud 트랜잭션 로그 관리

내 응용 프로그램의 데이터베이스가 크지는 않지만 응용 프로그램을 사용하는 동안에는 매우 활동적이며 핵심 데이터 스택이 여러 번 저장됩니다. 나는 에 대해 새로운 트랜잭션 로그가 생성 될 때마다 코어 데이터를 저장하는 것으로 나타났습니다. 최종 결과는 트랜잭션 로그가 많고 실제 데이터베이스보다 훨씬 많은 공간을 차지한다는 것입니다.

1) 트랜잭션 로그가 자동으로 정리/합쳐 지거나 무한정 증가하여 결국 수천 개가 넘고 많은 메가 바이트를 차지합니까? 수동으로 트랜잭션 로그를 제거하고 .baseline 아카이브를 다시 만드는 유일한 방법은 iCloud를 비활성화 한 다음 다시 활성화하는 것입니다 (유비쿼터스 컨테이너를 제거하고 새로 시작하는 것). 그러나 이것은 분명히 좋은 해결책은 아닙니다.

2) 현재 아키텍처는 사소한 변경 사항이 있더라도 코어 데이터 스택을 자주 절약합니다. 일반적으로 내 데이터베이스가 작고 저장하면 데이터베이스 파일이 항상 최신 상태로 유지되므로 이는 의미가 있습니다. 그러나 위의 트랜잭션 로그 문제를 고려할 때 데이터베이스 저장을 최소화해야한다고 생각합니다. 어쩌면 타임 기반 및/또는 앱 전환 상태에서 그렇게 할 수 있습니다.

3) 데이터베이스 저장 빈도를 줄여 트랜잭션 로그 수를 최소화해도 로그가 시간이 지남에 따라 계속 증가하므로 여기에 문제가있는 것으로 보입니다. 결국 "트랜잭션 로그"디자인의 이점은 사용 된 iCloud 스토리지의 양과 새로운 디바이스가 추가 될 때 초기 iCloud 동기화의 측면에서 부담이 될 것입니다.

Apple은 iCloud에 대한 정보가 거의없고 "모범 사례"의 형태로 된 정보가 거의 없기 때문에 커뮤니티의 통찰력에 감사드립니다.

+1

나는 이것이 좋은 질문이라고 생각하지만, Apple 개발자 포럼에서도이 질문을하는 것이 좋습니다. 실제로이 문제를 설계하고 개발 한 엔지니어로부터 피드백을 얻을 수 있습니다. 버그 리포트/기능 요청의 형태로 특정 피드백을 요청할 수 있습니다. –

답변

3

나는이 문제에 대한 레이더를 제출했고 다음과 같은 답장을 받았다. 그들은 아직 자신을 확인하지는 않았지만 iOS 5.1에서 제대로 작동해야한다고 지적했습니다.

다음을 잘못 이해할 수있는 사람을 설명합니다. 트랜잭션 로그는 핵심 데이터 내부에서 정리됩니다. 이것은 응용 프로그램 자체에서 수행해야하는 것이 아닙니다.

엔지니어링이 문제에 대해 다음과 같은 의견을 제공하고있다

: 트랜잭션 로그를 읽을 수있는 기회를 가지고 활동중인 모든 동료 후에 삭제하기위한 것입니다

을, 그들은 공간의 임계 값을 초과 소비. 이전의 문제로 인해 장치가 올바르게 작동하지 못했습니다.

관련 문제