DB oder XML?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Pebender

Betreff: DB oder XML?

BeitragFr, März 26, 2021 22:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich bin etwas im Zwiespalt, ich mache gerade eine Anwendung, in der es um die Eingabe und speichern von Daten geht.
Jetzt habe ich ein Programm gefunden, das sagen wir mal ähnlich ist, es sollen dabei auch Daten gesucht werden können.
macht man das besser in einer Datenbank ( SQLite ) oder wie das ähnliche Programm in XML auslagern??
Ich selbst plädiere zur DB, bin aber mal auf eure Meinungen gespannt...
Problem :
ich nutze BMaxNG, da funktionieren die XML libs nicht, im alten BMax schon..

mfg.
BMax & MaxGUI
 

CO2

ehemals "SirMO"

BeitragSa, März 27, 2021 12:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich persönlich würde in solchen Fällen immer zu einer DB raten! Es gibt mehrere gute Gründe, die dafür sprechen:
1. Fehlender Overhead: XML ist eine relativ schlechte Struktur, um optimiert Daten zu speichern, oder anders ausgedrückt: Der Anteil von Nutzdaten zu "Strukturdaten" ist sehr klein. Natürlich könnte man das bei XML optimieren, indem man kurze Tagnamen wählt, aber das führt ja das ganze Prinzip von XML (Daten menschenleserlich speichern) irgendwie ad absurdum.
2. Such- und Einfügemechanismen sind meistens in DBs optimiert gebaut, sodass eine maximale Performance herausgeholt werden kann. Bei XML musst Du dich selbst darum kümmern, den richtigen "Datensatz" zu suchen, indem Du im schlimmsten Fall die gesamte XML-Datei in eine Liste von Objekten parsed und anschließend in dieser Liste nach dem richtigen Objekt suchst
3. XML-Dateien enthalten keine Constraints, d.h. hast Du Daten, die in Beziehung zueinander stehen, so ist diese Beziehung durch keinen Mechanismus geschützt (einfachstes Beispiel: Du hast eine Person und diese Person hat eine Adresse. In einer DB würdest Du eine Fremdschlüsselbeziehung aufbauen von Adresse auf Person, sodass wenn die Person gelöscht wird auch gleich die Adresse mitgelöscht werden muss, da es sonst zu einer Constraint-Verletzung kommt. In XML könntest Du einfach die Person löschen und hättest eine Adresse auf die nicht verwiesen wird - Ist zugegebenermaßen ein gekünsteltes Beispiel, aber das Prinzip wird klar).

Mir fiele ehrlich gesagt nur ein einziger Grund ein, keine DB sondern XML zu nehmen: Wenn Du willst, dass die Endanwender ohne großen Aufwand und ohne weitere Voraussetzungen unabhängig von Deinem Programm die Daten manipulieren können sollen - In dem Fall ist eine XML natürlich einfacher, als eine DB...
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Thunder

BeitragSa, März 27, 2021 17:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn es um kleine Datenmengen in einem kleinen Programm geht wird die DB ein Overkill sein.

Wenn du aber mit großen oder wachsenden Datenmengen arbeitest, solltest du definitiv eine Datenbank verwenden, denn sonst wirst du selber die wesentlichen Teile einer Datenbank in deinem Programm implementieren müssen, wenn du nicht alle Daten im RAM halten willst/kannst.

Ich würde SQL bevorzugen, aber ich denke es wäre nicht zwingend notwendig (alternativ z.B. Key-Value store) - kommt auf deine Bedürfnisse an.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Farbfinsternis

BeitragSa, März 27, 2021 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Datenbank ist fast immer einem XML vorzuziehen. Da Du auf SQLite setzt, wirst Du wahrscheinlich immer performanter und schlanker sein als ein XML Monolith.
Farbfinsternis.tv

DAK

BeitragDo, Apr 08, 2021 11:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Hauptvorteil von XML (außer dass es einfacher zu implementieren ist bei sehr geringen Datenmengen) ist die Lesbarkeit. Ein Mensch kann eine XML-Datei im Texteditor aufmachen, verstehen und Werte ändern.

Allerdings gibt es da noch eine Alternative, die XML imho in fast allen Fällen überlegen ist: JSON. Der Overhead ist viel kleiner, es ist deutlich besser zu lesen, und es lässt sich sehr einfach in native Maps/Listen in der Programmiersprache übersetzen.
Gewinner der 6. und der 68. BlitzCodeCompo

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group