Apple에서 지정한 SQLite "라이브러리 스타일"응용 프로그램 설계를 기반으로 코어 데이터와 함께 iCloud를 사용하고 있습니다. 기본적인 기능이 잘 작동하는 동안 트랜잭션 로그와 트랜잭션 로그가 어떻게 관리되는지 걱정됩니다.코어 데이터 iCloud 트랜잭션 로그 관리
내 응용 프로그램의 데이터베이스가 크지는 않지만 응용 프로그램을 사용하는 동안에는 매우 활동적이며 핵심 데이터 스택이 여러 번 저장됩니다. 나는 에 대해 새로운 트랜잭션 로그가 생성 될 때마다 코어 데이터를 저장하는 것으로 나타났습니다. 최종 결과는 트랜잭션 로그가 많고 실제 데이터베이스보다 훨씬 많은 공간을 차지한다는 것입니다.
1) 트랜잭션 로그가 자동으로 정리/합쳐 지거나 무한정 증가하여 결국 수천 개가 넘고 많은 메가 바이트를 차지합니까? 수동으로 트랜잭션 로그를 제거하고 .baseline 아카이브를 다시 만드는 유일한 방법은 iCloud를 비활성화 한 다음 다시 활성화하는 것입니다 (유비쿼터스 컨테이너를 제거하고 새로 시작하는 것). 그러나 이것은 분명히 좋은 해결책은 아닙니다.
2) 현재 아키텍처는 사소한 변경 사항이 있더라도 코어 데이터 스택을 자주 절약합니다. 일반적으로 내 데이터베이스가 작고 저장하면 데이터베이스 파일이 항상 최신 상태로 유지되므로 이는 의미가 있습니다. 그러나 위의 트랜잭션 로그 문제를 고려할 때 데이터베이스 저장을 최소화해야한다고 생각합니다. 어쩌면 타임 기반 및/또는 앱 전환 상태에서 그렇게 할 수 있습니다.
3) 데이터베이스 저장 빈도를 줄여 트랜잭션 로그 수를 최소화해도 로그가 시간이 지남에 따라 계속 증가하므로 여기에 문제가있는 것으로 보입니다. 결국 "트랜잭션 로그"디자인의 이점은 사용 된 iCloud 스토리지의 양과 새로운 디바이스가 추가 될 때 초기 iCloud 동기화의 측면에서 부담이 될 것입니다.
Apple은 iCloud에 대한 정보가 거의없고 "모범 사례"의 형태로 된 정보가 거의 없기 때문에 커뮤니티의 통찰력에 감사드립니다.
나는 이것이 좋은 질문이라고 생각하지만, Apple 개발자 포럼에서도이 질문을하는 것이 좋습니다. 실제로이 문제를 설계하고 개발 한 엔지니어로부터 피드백을 얻을 수 있습니다. 버그 리포트/기능 요청의 형태로 특정 피드백을 요청할 수 있습니다. –