Also verwende ich Ionic v2 und benutze Pouch für die mobile Entwicklung mit sqlite. Daten stammen von einer REST-API, die etwa Folgendes enthält:
%Vor%Nun können Sie sehen, dass die Datensatzelemente 100.000 Elemente oder mehr enthalten können (est json size: 32 MB). Im Moment bin ich verloren, welchen Ansatz ich nehmen sollte. Ein optimiertes Datenhandling ist entscheidend und ich weiß nicht, welcher PouchDB-Ansatz besser ist. Hier sind einige meiner Gedanken.
Es wird auch sortiert, alle Daten werden abgerufen (nur die _ids und einige Felder, nur um eine Liste aller Ergebnisse anzuzeigen) und die Suche.
Wir haben eine ähnliche App, die im Offline-Modus arbeitet und die Daten lokal mit sqlite speichert, aber die Daten, mit denen wir arbeiten, sind vielleicht nicht so groß.
Für uns werden die Daten als XML-Datei vom Webservice heruntergeladen; Die XML hat Attribute wie Zeile, Spalte, Wert, Name usw. Die App serialisiert die Daten und konvertiert sie in Objekte, die dann in sqlite eingefügt werden (mit "InsertAll" / "UpdateAll" ist die Einfügung oder Aktualisierung für Gegenstände ziemlich schnell). Diese XML-Dateien werden in die Benutzeroberfläche geladen, und Benutzer können "Wert" -Tags über die Benutzeroberfläche aktualisieren.
Die Suche wird optimiert, indem Benutzerfilter bereitgestellt werden, sodass die Abfrage auf kleineren Daten ausgeführt wird.
Für Ihren Fall kann ich mir 3 Tabellen vorstellen, die Sie verwenden können: -
1) Datensätze (Felder: -RecordID, RecordName) 2) Artikel (Felder: - ItemID (PK), RecordID (FK), Artikelname usw.) 3) Zeilen (Felder: -ItemID (FK), RowName, RowValue)
Nachdem Sie Daten aus REST eingegeben haben, können Sie die Daten serialisieren und gleichzeitig in die entsprechenden Tabellen einfügen. Versuchen Sie, Nutzern bei der Suche Filter zu geben, damit der tatsächliche Datensatz kleiner ist.
Ich hoffe, es hilft!
Ihre grundlegende Entscheidung ist, ob Sie die Daten einbetten oder darauf verweisen. Hier sind einige allgemeine Regeln für die Entscheidung:
Einbetten wenn:
Referenz wenn:
Sie haben Recht, wenn Sie alles als einen Datensatz speichern, haben Sie möglicherweise Probleme mit der Größe. Der zusätzliche Speicher, der durch Aufteilen verursacht wird, sollte nicht ins Gewicht fallen.
Sie verwenden Ansichten, um Indizes zu erstellen, die dann in Ihre Abfragen einfließen. Wie Sie das machen, wird wahrscheinlich die Effizienz dominieren.