Frage

Auf an Offizielle SQLite3 -Webseite Es ist geschrieben, dass ich über SQLite als Ersatz der FOPen () -Funktion nachdenken sollte.

Was denkst du darüber? Ist es immer eine gute Lösung für die interne Datenspeicherung von RepecE -Anwendungen mit SQLite? Was sind die Pluses und die Minus einer solchen Lösung?

Haben Sie einige Erfahrung darin?

EDIT: Wie wäre es mit Ihrer Erfahrung? Ist es einfach zu bedienen? War es schmerzhaft oder eher freudig? Magst du es?

War es hilfreich?

Lösung

Es hängt davon ab, ob. Es gibt einige Kontra-Indikationen:

  • Für Konfigurationsdateien ist die Verwendung von Klartext oder XML viel einfacher zu debuggen oder zu ändern als die Verwendung einer relationalen Datenbank, auch eines so leicht wie SQLite.

  • Baumstrukturen sind leichter mit (z. B.) XML zu beschreiben als mithilfe von Relationstabellen

  • Die SQLite -API ist ziemlich stark dokumentiert - es gibt nicht genügend Beispiele und die Hyperlinkung ist schlecht. Otoh, die Informationen sind alles da, wenn Sie sich dafür graben möchten.

  • Die Verwendung von App-spezifischen Binärformaten direkt ist schneller als das Speichern des gleichen Formats wie ein Blob in einer Datenbank

  • Datenbankbeschädigung kann das LOS von bedeuten alle Ihre Daten und nicht in einer einzigen schlechten Datei

OTOH, wenn Ihre internen Daten gut zum relationalen Modell passt und wenn es ein Großteil davon gibt, würde ich SQLite empfehlen - ich benutze es selbst für eines meiner Projekte.

In Bezug auf die Erfahrung - ich benutze es, es funktioniert gut und ist leicht in den vorhandenen Code zu integrieren. Wenn die Dokumentation leichter zu navigieren wäre, würde ich ihnen 5 Sterne geben - da ich sie vier geben würde.

Andere Tipps

Wie immer kommt es an, gibt es keine "Eingröße für alle" -Lösungen

Wenn Sie Daten in einer eigenständigen Datei speichern müssen und die relationalen Datenbankfunktionen einer SQL-Datenbank nutzen können, ist SQLite großartig.

Wenn Ihre Daten nicht gut für ein relationales Modell geeignet sind (z. B. hierarchische Daten) oder Sie möchten, dass Ihre Daten menschlich lesbar sind (Konfigurationsdateien), oder Sie müssen mit einem anderen System interoperieren, als SQLite nicht sehr hilfreich ist und XML könnte möglicherweise sei besser.

Wenn Sie andererseits gleichzeitig auf die Daten von mehreren Programmen oder Computern zugreifen müssen als auch noch einmal, ist SQLite keine optimale Wahl, und Sie benötigen einen "realen" Datenbankserver (MS SQL, Oracle, MySQL, Potensql ...) .

Die Atomizität von SQLite ist ein Plus. Wenn Sie wissen, dass Sie Ihre Datendatei nicht beschädigen, wenn Sie auf halbem Weg einige Daten schreiben (möglicherweise in der Mitte). Normalerweise erreiche ich mit XML -Konfigurationsdateien etwas Ähnliches, indem ich die Datei bei einem erfolgreichen Ladung unterstütze, und jede zukünftige Auslastung (angezeigt Korruption) stellt die letzte Sicherung automatisch wieder her. Natürlich ist es weder körnig noch atomic, aber es reicht für meine Wünsche aus.

Ich finde SQLite ein Vergnügen, damit zu arbeiten, aber ich würde es nicht für einen Einsatz für Fopen () betrachten.

Als Beispiel habe ich gerade eine Software geschrieben, die Bilder von einem Webserver herunterlädt und sie lokal zwischengespeichert. Wenn ich sie als einzelne Dateien speichere, kann ich sie in Windows Explorer ansehen, was sicherlich Vorteile hat. Aber ich muss einen Index, der zwischen einer URL und der Bilddatei kartiert, um den Cache zu verwenden. Sie speichern sie in einer SQLite -Datenbank und sitzen alle in einer ordentlichen kleinen Datei, und ich kann mit URL auf sie zugreifen (wählen Sie IMGData aus Cache, wobei url = 'http: //foo.bar.jpg') mit wenig Anstrengung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top