Wie viel kann SQLite auf dem iPhone speichern?

8

Ich habe eine Idee für eine Webapp für das iPhone, aber mir ist nicht bekannt, wie viele Daten in der SQLite-Datenbank von Mobile Safari gespeichert werden können. Ich habe versucht, die Apple-Dokumente zu durchsuchen, aber nichts gefunden:

Safari Client-Side Storage und Offline-Anwendungen Programmierhandbuch: Verwenden der JavaScript-Datenbank

    
Geuis 18.11.2009, 00:25
quelle

12 Antworten

2

Es ist wie die anderen Poster sagen. Sie sind nur durch den Speicherplatz auf dem Gerät beschränkt.

Sie müssen jedoch auch Ihren Speicherbedarf berücksichtigen. Es gibt eine endliche Menge an Speicher auf dem iPhone, und im Allgemeinen ist es leise klein, so dass die Menge der Daten / hydratisiert Objekte, die Sie im Speicher haben können, eine weitere mögliche Einschränkung für Ihre App ist.

    
Bryan McLemore 18.11.2009, 00:42
quelle
11

Die meisten dieser Antworten sind völlig falsch. Safari erlaubt Ihnen nicht, SQLite-Datenbanken über 50 MB zu erstellen (oder vorhandene Datenbanken über diese Größe hinaus zu erweitern).

Dies ist ein Limit von Safari - wie bereits erwähnt, unterstützt SQLite selbst wesentlich größere Datenbanken, die Sie aus nativen Apps verwenden können. Aber Webapps sind auf 50MB beschränkt.

Es ist vielleicht nützlich zu wissen, dass dies pro Datenbank ist - wenn Sie wirklich mehr Speicherplatz benötigen, können Sie mehrere Datenbanken erstellen, obwohl dies natürlich eine Menge Ärger verursachen würde.

    
Ironfrost 04.03.2010 06:59
quelle
2

Es gibt eine Menge Leute, die das nie getestet haben. Ich bin auf der neuesten Version von iOS (4.3.3) und habe ein System eingerichtet, um mehrere Datenbanken zu erstellen und sie unter 45 MB zu behalten, aber festgestellt, dass die 50 MB-Grenze für die gesamte Website gilt. Unabhängig davon, wie stark Sie die Daten aufteilen, beschränkt sie sich dennoch auf eine aggregierte Obergrenze von 50 MB.

    
Matt Ray 18.08.2011 18:33
quelle
1

Die maximale Dateigröße für Safari-Mobilgeräte beträgt 50 MB pro Site und nicht pro Datenbank. Ich habe das getestet. Selbst wenn Sie eine extra leere Datenbank haben, können Sie diese nicht hinzufügen, wenn die Gesamtgröße aller Datenbanken auf einer einzelnen Seite 50 MB beträgt.

Beachtenswert ist auch, dass die Zeichen als doppelte Bytes auf websql gespeichert werden, dh 2 Millionen Zeichen sind 4 Megabyte und nicht 2 Megabyte auf der Festplatte.

    
Basem Sayej 20.09.2013 01:08
quelle
0

Sie sind nur durch die Menge an freiem Speicherplatz auf dem Gerät beschränkt.

    
skamradt 18.11.2009 00:38
quelle
0

Ich bin mir nicht sicher. Wenn Sie Ihre eigene Anwendung ausführen würden, wären Sie durch den freien Speicherplatz auf dem Gerät und in gewissem Maße durch den Speicherbedarf beschränkt (wie Bryan McLemore darauf hinweist).

Aber da Sie JavaScript innerhalb von Safari verwenden, gibt es keine einfache Möglichkeit, dies zu erkennen. Laut dem Dokument, das Sie gefunden haben, sieht es so aus, als ob es von der Site begrenzt sein könnte, aber es gibt nichts, das Ihnen sagt, wie viel. Ich würde vorschlagen, ein schnelles Skript zu schreiben, um die Datenbank zu füllen und herauszufinden, wie viel es tatsächlich ist. Danach würde ich diesen Wert wahrscheinlich halbieren und annehmen, dass ich immer in der Lage sein würde, so viel zu verwenden.

Bitte meldet euch zurück, damit wir es alle wissen!

    
Epsilon Prime 18.11.2009 00:59
quelle
0

Es ist höchstwahrscheinlich 32 Terabyte ... was deutlich über dem verfügbaren Speicherplatz liegt.

Ich habe diese Zahl erreicht, indem ich die maximale Seitengröße mit der maximalen Seitenanzahl multipliziert habe, die unten auf der SQLite-Limit-Seite .

    
jessecurry 18.11.2009 04:14
quelle
0

Begrenzungen in SQLite

"Grenzen" im Zusammenhang mit diesem Artikel bedeutet Größen oder Mengen, die nicht überschritten werden können. Wir befassen uns mit Dingen wie der maximalen Anzahl von Bytes in einem BLOB oder der maximalen Anzahl von Spalten in einer Tabelle.

SQLite wurde ursprünglich entwickelt, um willkürliche Grenzen zu vermeiden. Natürlich hat jedes Programm, das auf einer Maschine mit endlichem Speicher und Festplattenspeicher läuft, irgendwelche Beschränkungen. Aber in SQLite waren diese Grenzen nicht gut definiert. Die Richtlinie bestand darin, dass es funktionieren könnte, wenn es in den Speicher passt und Sie es mit einer 32-Bit-Ganzzahl zählen könnten.

Leider hat die No-Limits-Politik gezeigt, dass Probleme entstehen. Da die oberen Grenzen nicht gut definiert waren, wurden sie nicht getestet, und Bugs (einschließlich möglicher Sicherheits-Exploits) wurden oft gefunden, wenn SQLite auf Extreme gebracht wurde. Aus diesem Grund haben neuere Versionen von SQLite klar definierte Grenzen und diese Grenzen werden als Teil der Testsuite getestet. Ab Version 3.6.19 (alle Statistiken im Bericht sind gegen diese Version von SQLite) enthält die SQLite-Bibliothek ungefähr 65.7 KSLOC von C-Code. (KSLOC bedeutet Tausende von "Source Lines Of Code" oder anders gesagt, Codezeilen, die Leerzeilen und Kommentare ausschließen.) Im Vergleich dazu hat das Projekt 690-mal so viel Testcode und Testskripte - 45409.7 KSLOC.

    
Tariq 18.11.2009 07:07
quelle
0

Das Standardspeicherlimit für das iPhone scheint 5 MB zu betragen

    
Wayne 19.11.2009 00:47
quelle
0

davibe hat mit seinem PhoneGap-Plugin einiges dafür getan, das Limit auf 1 GB zu erhöhen. Ссылка

Das Plugin ruft die native sqlite3-API mit einem Wrapper auf der Javascript-Seite auf.
Der relevante Code, der aus sqlite.js extrahiert wird, lautet:

%Vor%     
David Sowsy 26.08.2011 14:56
quelle
0

Vorsicht: Mein iPhone ist jailbroken! Aber ich vermute nicht, dass sich dadurch etwas ändert.

Die Grenze von 50 MB ist nicht mehr korrekt.

Auf meinem iPhone 4S mit iOS 6.1 habe ich eine Datenbank von 58,66 MB (448496 Datensätze) für meinen Webclip (Website an das Sprungbrett angeheftet).

Keine speziellen Tricks, nur Standard-HTML5-Nutzung.

    
Tim 26.02.2013 16:27
quelle
0

Maximale Datenbankgröße

Bitte beachten Sie die offizielle Sqlite-Seite

Jede Datenbank besteht aus einer oder mehreren "Seiten". In einer einzelnen Datenbank hat jede Seite die gleiche Größe, aber eine andere Datenbank kann Seitengrößen zwischen 512 und 65536 haben. Die maximale Größe einer Datenbankdatei beträgt 2147483646 Seiten. Bei der maximalen Seitengröße von 65536 Bytes entspricht dies einer maximalen Datenbankgröße von ungefähr 1,4e + 14 Byte (140 Terabyte oder 128 Tebibytes oder 140.000 Gigabytes oder 128.000 Gibibytes).

Diese spezielle obere Grenze wird nicht getestet, da die Entwickler keinen Zugriff auf Hardware haben, die diese Grenze erreichen kann. Tests stellen jedoch sicher, dass SQLite sich korrekt und ordnungsgemäß verhält, wenn eine Datenbank die maximale Dateigröße des zugrunde liegenden Dateisystems erreicht (die normalerweise deutlich unter der maximalen theoretischen Datenbankgröße liegt) und wenn eine Datenbank aufgrund der Erschöpfung des Speicherplatzes nicht wachsen kann.

    
Ram S 09.02.2017 06:36
quelle

Tags und Links