2013-08-08 2 views
2

내 응용 프로그램에 로컬로 저장해야하는 데이터가 있고 성능상의 관점에서 볼 때 저장소를 저장하는 가장 좋은 방법이 무엇인지 궁금합니다. 많은 데이터가 없으며 거의 ​​없습니다. PLIST 관점 데이터에서 보면 다음과 같을 수 있습니다 :SQLite 대 Plist 성능

-root 
    -main_block1 
     -sub_block1 
      -some_data 
      -some_data 
      -some_data 

     -sub_block2 
      -some_data 
      -some_data 
      -some_data 

     -sub_block3 
     -sub_block4 
     ... 
     -sub_blockn 
    -main_block2 
    -main_block3 
    ... 
    -main_blockn 

약 3-10 (I 추측 13-15 최대)의 주요 블록이있을 것입니다. 주요 블록을 제목으로 약 10 자의 사전으로 간주하십시오. 각 메인 블록에는 1 ~ 10 개 (최대 10 개)의 서브 블록이 있으며 사전도 있습니다. 각 하위 블록에는 일반 텍스트 데이터가 포함됩니다. 100 자 이하의 문자열 (또는 200-300 자)

나는이 데이터를 읽을 필요가있을뿐만 아니라 조금 섞여서 (메인 블록이나 2 개를 교환하고 서브 블록이나 2 개를 교환한다).

내 응용 프로그램에 이미 꽤 많은 것들이 있으므로 가능한 빨리 사용해야하므로 무엇을 사용해야하는지 궁금합니다. 속성 목록 파일 또는 SQLite 데이터베이스?
SQLite 데이터베이스는

으로

말했다 ... 기본적으로 내 생각이 내 상황에 PLIST 파일이 빠를 것입니다 수 있도록 그 내용을 조작 주위 코드 래퍼와 텍스트 파일입니다 몇 십킬로바이트을 초과하지 않습니다 데이터 (희망 : P).

EDIT : 정보를 추가하려면 : 메인 블록은이 순서로로드해야하는보기이고 하위 블록은이 순서로 있어야하는 기본보기의 하위보기입니다. 일부 데이터는 해당보기에 제공 될 데이터입니다. 따라서 기본보기 및 하위보기의 순서는 수시로 변경되며 하위보기의 데이터는 사용자가 결정할 때 다시로드됩니다. 희망이 조금 도움이됩니다.

+2

빌드하고 측정하십시오. 입증되지 않은 결과가 있다고 생각하지 마십시오. - 악기는 친구입니다! – Till

+0

네, 그게 100 % 정확하고 최선의 방법입니다. 그러나 나는 내가 조금 게으른 것을 인정해야합니다 :) 그리고 아마도 나는 이미 비슷한 것을 한 사람을 발견 할 수 있습니다. – Majster

답변

2

SQLite는 실제로 레코드 저장소를 검색하고 데이터를 결합하며 필요없는 데이터를 필터링하기위한 것입니다. 메모리에 쉽게 들어갈 수있는 데이터 구조를 가지고있는 것처럼 들리지만 (사용자가 가지고있는 것을보기 위해이를 측정해야 함), 거의 편집 할 필요가 없습니다. 테이블의 스키마를 변경해야한다면 SQLite에서 두통이 될 것입니다. 왜 그것을 사전/배열 구조로 유지하지 않고 직렬화를 사용하여 파일에 저장하거나 심지어 사용자 기본값으로 저장합니까? Apple의 표준보기에 표시하려는 경우, 한보기에서 다른보기의 변경 사항을 즉시 표시하려면 CoreData가 귀하의 친구 일 수 있습니다.

3

다릅니다. 데이터 구조를 지속적으로 다시 참조하고 plist를 매번 다시로드하면 SQLite DB (열려있는 상태)가 빠를 것입니다. 데이터를 한 번만로드하고 참조하면 plist가 이깁니다. 물론, 간단한 SQLite 함수에 Core Data를 사용할 수 있습니다.

+0

재 참조로 무엇을 의미합니까? 앱이 시작되면 plist를로드 한 다음 앱이 열린 상태에서 한 두 가지를 이동합니다. 나 자신을 설명하기 위해; 메인 블록은이 순서로로드해야하는 뷰이며 서브 블록은이 순서로되어야하는 기본 뷰의 서브 뷰입니다. 일부 데이터는 해당보기에서 제공되는 데이터입니다. 내 질문을 편집하고이를 게시 할 것입니다. – Majster

+0

@Majster - plist를로드하고로드 된 상태로 유지하면 RAM의 양을 줄이면서 가장 빠를 것입니다. –