2009-11-18 4 views
8

iPhone 용 webapp에 대한 아이디어가 있지만 모바일 Safari의 SQLite db에 얼마나 많은 데이터를 저장할 수 있는지 알 수 없습니다. 나는 애플의 문서를 검색하려했지만 아무것도 찾을 수 없습니다 : 당신은 장치에서 사용 가능한 공간의 양에 의해 제한됩니다SQLite는 iPhone에 얼마나 저장할 수 있습니까?

Safari Client-Side Storage and Offline Applications Programming Guide: Using the JavaScript Database

+1

얼마나 많은 데이터를 저장 하시겠습니까? – Mark

답변

2

다른 포스터와 마찬가지입니다. 장치의 드라이브 공간에 의해서만 제한됩니다.

또한 메모리 풋 프린트를 고려해야합니다. 아이폰에는 한정된 양의 메모리가 있으며 일반적으로 조용합니다. 따라서 메모리에 저장할 수있는 데이터/수화 물체의 양은 앱의 잠재적 인 또 다른 제한 사항입니다.

+0

SQLite는 플랫 파일을 기반으로하기 때문에 전체 저장소에 메모리 제약이 없다고 생각했습니다. 분명히 예를 들어 한 번에 메모리에로드 할 수있는 것에 대한 제한이 있지만 파일 저장에 영향을주지 않아야합니다. – Geuis

+0

아니요, 기억 장치에 영향을 미치지 않으며, 주어진 시간에 메모리에 저장할 수있는 것의 한계에 불과합니다. 꽤 큰 데이터 세트를 다루고있는 것처럼 들리기 때문에 언급합니다. –

+1

모바일 사파리는 그렇지 않습니다. 내 테스트에서는 50MB로 제한됩니다. –

0

잘 모르겠습니다. 자신 만의 응용 프로그램을 만들었다면 장치의 여유 공간과 메모리 풋 프린트 (Bryan McLemore가 지적한 바 있음)로 어느 정도 제한 될 것입니다.

그러나 사파리 내부에서 JavaScript를 사용하고 있기 때문에 쉽게 알 수있는 방법이 없습니다. 귀하가 발견 한 문서에 따르면, 사이트에 의해 제한 될 수있는 것처럼 보이지만, 얼마나 많은 정보가 있는지 알려주지는 않습니다. 빠른 스크립트를 작성하여 데이터베이스를 채우고 실제로 얼마나 많은지 알아내는 것이 좋습니다. 그 후, 아마 그 값을 반으로 줄여서 항상 그렇게 많이 사용할 수 있다고 가정합니다.

모두 알려 주시기 바랍니다.

+0

아,이 모든 것을 읽으십시오.이 질문에 언급 된 문서 링크로 이동하여 Apple에 문서가 업데이트 될 것을 제안하십시오. –

0

32 테라 바이트는 사용 가능한 디스크 공간을 훨씬 능가합니다.

최대 페이지 크기에 SQLite limits page의 맨 아래에 나열된 최대 페이지 수를 곱하여이 수치에 도달했습니다. SQLite는

에서
0

제한이 문서의 문맥에서

"한계"를 초과 할 수없는 크기 나 양을 의미한다. 우리는 BLOB의 최대 바이트 수 또는 테이블의 최대 열 수와 같은 것에 관심이 있습니다.

SQLite는 원래 임의의 제한을 피하는 정책으로 설계되었습니다. 물론 유한 메모리와 디스크 공간이있는 컴퓨터에서 실행되는 모든 프로그램에는 어떤 종류의 제한이 있습니다. 하지만 SQLite에서는 그 한계가 잘 정의되어 있지 않습니다. 정책이 메모리에 적합하고 32 비트 정수로 계산할 수 있다면 정책이 작동한다는 것입니다.

아쉽게도 제한없는 정책으로 인해 문제가 발생했습니다. 상위 경계는 잘 정의되지 않았으므로 테스트되지 않았으며 SQLite를 극단으로 밀어 넣을 때 버그 (보안 취약성 포함)가 자주 발견되었습니다. 이러한 이유로 최신 버전의 SQLite는 잘 정의 된 한계가 있으며 그 한계는 테스트 스위트의 일부로 테스트됩니다. 버전 3.6.19부터 (보고서의 모든 통계는 해당 릴리스의 SQLite에 대한 것입니다.) SQLite 라이브러리는 약 65.7 KSLOC의 C 코드로 구성됩니다. (KSLOC는 수천 개의 "Source Lines Of Code"또는 빈 줄과 주석을 제외한 코드 라인을 의미합니다.) 비교해 볼 때이 프로젝트의 테스트 코드와 테스트 스크립트는 690 배나 많습니다 (45409.7 KSLOC).

0

아이폰의 기본 저장 용량 제한은 이러한 답변의 대부분은 완전히 잘못

11

5메가바이트 것 같다.Safari는 50MB가 넘는 SQLite 데이터베이스를 만들거나 (또는 ​​그 크기를 초과하는 기존 데이터베이스를 확장하는 것을 허용하지 않습니다.)

이것은 사파리가 부과하는 제한 사항입니다. 다른 사람들이 지적했듯이 SQLite는 네이티브 앱에서 사용할 수있는 훨씬 더 큰 데이터베이스를 지원합니다. 그러나 웹 애플리케이션은 50MB로 제한됩니다.

이것은 데이터베이스마다 있다는 점에 유의하는 것이 유용 할 수 있습니다. 실제로 공간이 더 필요하면 분명히 많은 번거 로움이 있지만 여러 개의 데이터베이스를 만들 수 있습니다.

+0

하나의 데이터베이스에서 50MB 제한을 확인했습니다. 전체 사이트 제한이 아닌 데이터베이스 당 제한 사항입니까? –

+0

50MB 한도는 DB 당입니다. 그리고 권한은 처음 작성한 50MB DB에 대해서만 요청됩니다. – newtonapple

+0

사파리 모바일의 데이터베이스 크기 제한은 데이터베이스 당 사이트가 아닌 사이트 당 50MB입니다. 나는 이것을 시험했다. 하나의 사이트에있는 모든 데이터베이스의 전체 크기가 50MB 인 경우 여분의 빈 데이터베이스가 있어도 추가 할 수 없습니다 –

2

명확하게 테스트하지 않은 사람이 많습니다. 저는 최신 버전의 iOS (4.3.3)를 사용 중이며 여러 데이터베이스를 작성하고 45MB 미만으로 유지하는 시스템을 설정했지만 50MB 제한은 사이트 전체에 적용됩니다. 따라서 데이터를 얼마나 분할했는지에 상관없이 50MB의 총계 한도로 제한됩니다.

0

davibe는 PhoneGap 플러그인을 사용하여 최대 1GB를 늘릴 수있는 몇 가지 작업을 수행했습니다. https://github.com/davibe/Phonegap-SQLitePlugin

플러그인은 자바 측에서 래퍼를 사용하여 원시 sqlite3 API를 호출합니다. sqlite.js에서 추출
관련 코드는 다음과 같습니다

update origins set quota = '999999999999' where origin = 'file__0'; 
"update databases set estimatedSize = '999999999999' where name = '" + dbName + "';'"; 
0

주의 : 내 아이폰 탈옥입니다! 그러나 나는 이것이 무엇이든 바뀌 었다고 의심하지 않습니다.



50메가바이트의 한계

는 더 이상 정확하지 않습니다. 내 아이폰 4S에


는 아이폰 OS 6.1으로 내 webclip (발판에 고정 된 웹 사이트)에 대한 58.66 MB (448496 개 기록)의 데이터베이스를 가지고있다.

표준 HTML5 사용과 같은 특별한 트릭이 없습니다.

1

사파리 모바일의 데이터베이스 크기 제한은 데이터베이스 당 사이트 당 50MB입니다. 나는 이것을 시험했다. 단일 사이트의 모든 데이터베이스의 전체 크기가 50MB 인 경우 여분의 빈 데이터베이스가 있더라도 추가 할 수 없습니다.

websql에서 문자가 2 바이트로 저장된다는 점에 유의하십시오. 백만 문자는 디스크에 2 메가 바이트가 아닌 4 메가 ​​바이트가됩니다.

0

최대 데이터베이스 크기

Official Sqlite site

모든 데이터베이스가 하나 이상의 "페이지"구성을 참조하십시오. 단일 데이터베이스 내에서 모든 페이지는 동일한 크기이지만 다른 데이터베이스는 512와 65536 사이의 2의 제곱 인 페이지 크기를 가질 수 있습니다. 데이터베이스 파일의 최대 크기는 2147483646 페이지입니다. 최대 페이지 크기 인 65536 바이트에서 최대 데이터베이스 크기는 약 1.4e + 14 바이트 (140 테라 바이트, 128 테라 바이트 또는 140,000 기가 바이트 또는 128,000 기가비트)로 변환됩니다.

개발자가이 한계에 도달 할 수있는 하드웨어에 액세스 할 수 없으므로이 특정 상한은 테스트되지 않습니다.그러나 테스트는 SQLite가 기본 파일 시스템의 최대 파일 크기 (일반적으로 이론적 인 최대 데이터베이스 크기보다 훨씬 작음)에 도달 할 때 및 디스크 공간 부족으로 인해 데이터베이스를 늘릴 수없는 경우 제대로 작동하는지 확인합니다.

관련 문제