Ich habe eine Datenbankdatei, die mit Sqlite auf einem PC erzeugt wird. Diese Datei wird dann ohne Betriebssystem auf ein ARM7-basiertes Embedded-System übertragen. Das eingebettete System muss auf diese Datenbank zugreifen, muss diese jedoch nicht aktualisieren.
Ich habe versucht, sqlite3 klein genug für das eingebettete System zu bekommen, aber bisher kann ich die Anwendungsgröße nicht unter 256 KByte (mein Limit) erreichen.
Hat jemand sqlite3 auf diese Größe heruntergestuft? Gibt es andere Software, mit der ich diese Datenbank lesen kann?
BEARBEITEN: Ich versuche mit C auf die Datenbank zuzugreifen. Dies würde mit der Funktion sqlite3_exec () geschehen.
Es gibt zwei Tabellen. Eine Tabelle hat eine ID und einen Text, die zweite eine ID, einen Link zur ID der ersten Tabelle, einen Text und einen Statuswert. Der einzige erforderliche Zugriff ist nach ID oder Teiltext in der ersten Tabelle und nach ID in der zweiten Tabelle.
Vielleicht gibt es einen eigenständigen Code, mit dem auf die Datenbank zugegriffen werden kann?
Der kleinste sqlite3, den ich mir ausgedacht habe, war 327 KByte (für PowerPC), was für das System ausreichend war, also hörte ich auf, es kleiner zu machen. Dies war die vollständige sqlite3-CLI-Binärdatei, die C-APIs allein wären etwas kleiner gewesen.
Ich hatte SQLITE_OMIT_AUTHORIZATION, SQLITE_OMIT_EXPLAIN, SQLITE_OMIT_PROGRESS_CALLBACK und SQLITE_OMIT_TCL_VARIABLE gesetzt, um die Größe der Binärdatei zu reduzieren, und -Os verwendet, um sie auf diese Größe zu bringen.
Vielleicht möchten Sie sich cdb ansehen, es ist großartig für 'konstante' Daten, der Code ist Opensource und wird zu kleinen ausführbaren Dateien kompiliert, Sie können es sogar ausnutzen, um die exe kleiner zu bekommen. Unter 10k sollte einfach sein. Google Cdb
Ich würde zuerst mit sqlite2 versuchen, es könnte schlanker sein (oder nicht). Wenn das nicht hilft, würde ich sagen, gehen Sie mit Ihrer eigenen Binärcodierung.
Wenn Ihre Datendatei nicht wirklich groß ist, was Sie bei SQLite große Optimierungen verlieren, gewinnen Sie, indem Sie SQL nicht verwenden.
Verwenden Sie natürlich geeignete Datenstrukturen (höchstwahrscheinlich ein B * Tree oder ähnliches).
Wenn Sie nicht die volle Leistungsfähigkeit von SQL benötigen, könnte es interessant sein, nach alternativen Lösungen zu suchen, wie Berkeley DB .