2011-10-06 2 views
3

상당히 많은 양의 텍스트 (여러 권의 책)와 함께 제공해야하는 앱에 대해 SQLite와 리소스를 사용하는 것의 상반 관계를 분석하려고합니다. 나는 this post on raw XML files vs. SQLitethis one on XML resources vs. SQLite을 읽었습니다. 그러나 둘 다 런타임에 SQLite를 XML 파싱과 비교하는 것으로 보입니다. 같은 문제가 문자열 및 int 리소스 배열을 사용하는 경우 적용할지 모르겠습니다. 나는 실제로 많은 미지의 것을 가지고 있으며, 다른 사람들이 제공 할 수있는 통찰력에 감사 할 것입니다.리소스 대 SQLite

데이터 세부 정보 : 약 40 권; 책 한 권당 3 개 언어. 평균 책 길이 25 장; 평균 챕터 길이 25 단락; 총 75,000 문단. 텍스트는 단락별로 저장됩니다. 미세한 세밀도 필요하지 않습니다. 각 언어에 대한 앱의 논리적 인 텍스트보기는 모든 책에 걸친 단락 배열입니다. 단락 수준까지 "목차"(목차) 데이터도 있습니다. 모든 데이터는 엄격하게 읽기 전용입니다. 두 가지 쿼리 유형을 지원해야합니다. 1) 지정된 언어로 된 단락 또는 단락의 텍스트를 검색합니다. 2) 단락 번호가 주어진다면, 장에서 장, 장 및 단락 오프셋을 결정하십시오. SQLite의 문자열 함수를 사용할 필요가 없습니다.

내 분석까지 :

SQLite는 : 원시 자원 또는 자산으로, 오프라인 패키지를 SQLite는 데이터베이스를 생성하고,이 응용 프로그램은 위해 실행할 때 데이터베이스 위치에 복사 처음으로 (및/또는 업그레이드 된). 나는 이것을위한 프로토 타입 데이터베이스를 6 개의 테이블과 함께 구현했다.

  1. SQL을 사용하여 데이터베이스를 쿼리 할 수 ​​있으므로 검색 알고리즘을 코딩 할 필요가 없습니다.
  2. 이 데이터를 처리 할 수 ​​있다는 것을 알고 있습니다.
  3. 유형 2 쿼리에 응답하기 위해 여러 SQL 범위 쿼리가 필요합니다.
  4. .apk 파일에 두 배의 공간이 필요합니다. 앱의 db 영역에 다시 설치해야합니다.
  5. Android의 SQLite 구현에는 외부 저장소 (SD 카드)가 필요하므로 앱이 없으면 작동하지 않습니다. 아마존의 guidelines for Kindle Fire apps은 앱이 SD 카드를 요구할 수 없다고 말하며, 이렇게하면 Kindle Fire 호환성을 배제 할 수 있습니다. (나쁜!)

리소스 :가 오프라인 XML 배열 리소스 파일의 컬렉션을 작성하고이 프로젝트의 입술에 복사/폴더 값. 텍스트는 많은 문자열 배열로 분할됩니다 : 책 당 장당 하나의 배열. 약 3,000 개의 어레이가있을 것입니다. 인덱스는 int 배열로 구현됩니다. 각 책에 대해 색인 데이터는 여러 언어로 공유됩니다. 생성 된 리소스 ID에 인덱스를 제공하기 위해 일부 유형화 된 배열 리소스를 생성해야 할 수도 있습니다. 인덱스 배열은 앱 시작시 메모리에 완전히로드 될만큼 작을 것으로 예상됩니다.

  1. 유형 1 쿼리에는 올바른 문자열 배열로드 및 배열 요소 액세스가 포함됩니다. 유형 2 조회는 (이미로드 된) 색인 데이터의 2 진 탐색을 수반합니다.
  2. 안드로이드의 리소스 시스템이 많은 리소스 배열을 처리 할 수 ​​있는지 여부를 모릅니다.
  3. SQLite를 사용했을 때의 성능을 비교할 수 없습니다.

하이브리드 방식이 가능하다고 가정합니다. TOC 데이터를 한 방향으로, 텍스트 자체를 다른 곳에 저장하십시오.

이번 분석에 도움이되는 의견이나 통찰력에 대해서도 감사드립니다.킨들 파이어 (Kindle Fire)에 대한

+0

내 생각은 텍스트의 XML을 직접 쿼리 할 수 ​​있도록 사용자 지정 XML 형식으로 저장하는 것이 좋습니다. API 레벨 8은 XPath 지원이 시작되는 곳입니다. –

+0

Dan의 코멘트에 추가하려면 : 데이터를 압축 한 다음 공간을 절약하기 위해 GZip Inputstream을 통해 밀어 넣을 수 있습니다. – Steven

+0

@ Dan - XPath 사용에 대해서는 생각하지 않았습니다. 나는 그것이 어떻게 들어 맞는 지보기 위해 그것을 조사해야 할 것입니다. 유일한 문제는 고객이 API 레벨 4를 지원하고 수준 7에 대한 지원이 필요하다는 것입니다. ( –

답변

0

한 접선 점 ...

아마존의 가이드 라인 앱이 때문에 킨들 파이어 (Kindle Fire) 호환성을 배제 할 수있는이 길을 가고, SD 카드를 필요로 할 수없는 상태를 애플 리케이션. (나쁜!) 오늘부터 버전은 실제로

을 권장

당신이 다운로드하는 작은 APK를 배포하고 신속하게 설치하고 처음 실행 다운로드 추가 리소스에 로컬 파일 시스템에 저장합니다 .

큰 패키지를 모두 포장하는 대신에 사용할 수 있습니다. 또한, 그들은 금지 무엇 [강조 광산] 것 같다

복사, 녹음, 다운로드, 저장, 또는 아마존 화재 TV 또는 화재 TV 스틱 장치에 비디오 또는 오디오 콘텐츠 모든 유형의 유사 행위, 모든 SD 메모리 카드 또는 연결된 외부 저장소 (해당되는 경우).

이렇게 제한 사항이 이제는 쓸모없는 것으로 보입니다.

관련 문제