2012-06-06 2 views
0

전 기존의 SQLite3 DB에 대한 읽기 전용 액세스를 사용하는 앱을 배송해야합니다.이 앱은 크기가 1GB를 넘는 총 100MB 크기의 SQLite3 DB입니다. 데이터베이스는 Mac에서 생성되며 현재 iOS 용 배송 응용 프로그램에서 사용됩니다. 나는 자바에 능숙하지만 Android는 처음이다.Android 앱이 포함 된 (거대한!) SQLite3 DB를 배송하십시오.

이 다음 질문에 리드 :

1) 나는 데이터베이스를 수정해야합니까? 나는 그것들을 SQLiteDatabase :: rawQuery 질의들과 함께 사용할 계획을 세우므로 바인딩과 메타 데이터에 대한 희망이 없다.

2) DB가 읽기 전용으로 만 사용 되더라도 응용 프로그램 번들에서 복사하거나 처음 시작시 사용자 디렉토리에 다운로드해야합니다.

3) 쿼리가 느려질 수 있습니다. 스레드에서 실행하고 콜백을 통해 데이터를 제공하려고합니다. 이것은 정상적인 Java (Runnable/Thread)에서 수행되는 방식으로 수행 되었습니까, 아니면 다른 방법을 사용해야합니까?

4) 내가 분명히 놓친 Androidan에게 명백한 다른 것이 있습니까?

+1

앱에 전체 데이터베이스를 포장하는 것이 최선의 방법인가요? 모든 사용자가 응용 프로그램에서 데이터베이스의 모든 부분을 필요로합니까 아니면 서버의 대다수 데이터를 어딘가에 클라우드에 호스팅하고 각 사용자의 휴대 전화에 일부만 캐시하는 것이 더 낫습니다. 그만큼 많은 공간을 확보함으로써 앱의 잠재 사용자 수에 대한 강력한 제한을 확실히 적용하고 있습니다. – glenatron

+0

응용 프로그램의 디자인을 다시 평가해야합니다. – waqaslam

+0

그건 불가능합니다. 애플리케이션의 요점은 거대한 데이터베이스에 액세스하여 사용자가 입력하려고하는 것을 해석하는 것입니다. 유스 케이스에는 응답 시간과 거대한 어휘가 절대적으로 필요합니다. 사용자는 IT 기술이 거의 또는 전혀없는 학교 또는 보조 기술 지원자가되며 화재 및 잊어 버림 설치가 필요합니다. 앱의 중요한 부분을 나중에 다운로드하면 앱에 호소하지 않습니다. –

답변

1

1) 아니, 잘 작동해야한다고 생각하지 말아하지만 내가 말할 것이다.

2) 예, 50MB가 넘는 APK를 배송하려면 expansion 파일을 사용해야합니다.

3) 콜백 기능이있는 쉬운 배경 작업의 경우 ASyncTask을 사용할 수 있습니다.

1

SQLite는 헬퍼 클래스의 괜찮은 예를 들어 here

  1. 가 데이터베이스를 편집해야 야해 보인다. 당신이 그들을 복사하면 내 SQLite 데이터베이스를 읽고이 답변 정말 확실하지

  2. 을 쓸 수 있습니다 내가 sqlite3를 통해 또는 안드로이드 내 SQLite는 헬퍼 클래스

  3. 로 액세스 같은 거세한 숫양을 작동합니다. 데이터베이스 헬퍼 클래스는 위의 잘 (고속) 작동하는 것 같다하지만 내 DB 작은 (5백킬로바이트)이라고

  4. 그렇게

+0

Re : DB의 복사를 피하고 싶습니다. 그들은 거대하고, 그 (것)들을 베끼는 것은 저장의 두 배를 먹을 것이다. 그것들을 복사하는 것은 iOS에서는 필요하지 않기 때문에 안드로이드에서 가능하다고 기대했다. Re : 본질적으로 쿼리가 느립니다. 많은 데이터가 있으며 쿼리에는 다른 기준과 일치하는 N 개의 최상위 순위 결과를 정렬하고 선택하는 작업이 포함됩니다.나를 믿어 라.이 문제를 해결하기 위해 최적화 할 수는 없다. > .5 초의 쿼리 시간은 한 번씩 발생할 수 있습니다. –

+0

사본을 누른 다음 삭제, 내가 그 부분을 내가 할 수 있다고 생각하는 부분을 havnt. 데이터가 하나의 사본이있는 한 많은 차이가 없습니다. –

+0

이 데이터를 호스팅하지 않는 한, 모든 데이터를 다운로드하는 것에서부터 설치를하는 것까지 애플리케이션의 설치가 느려지므로, 여분의 시간을 절약하는 것은 그 중 일부입니다. –

관련 문제