XML oder doch lieber lokale Datenbanken?

SQL, Dateimanagement - Sprachunabhängige Datenhaltung
Antworten
xerion21
Beiträge: 162
Registriert: Mo Jul 08, 2013 3:37 pm

XML oder doch lieber lokale Datenbanken?

Beitrag von xerion21 » Di Jul 01, 2014 9:08 am

Hey,

ich habe mal (wieder) ne Frage:
Ab wann lohnt es sich eigentlich wirklich eine lokale Datenbank zu erstellen und wann nicht?

Ich schreibe gerade an einer Trainersoftware in C# und muss Daten über verschiedene Spieler speichern (Kontaktdaten, Leistungen) und natürlich auch Daten über Anwesenheit, Trainingseinheiten, Spiele etc.
Die Daten sind logischerweise irgendwie miteinander verknüpft:
Spieler mit Leistungen, Kontaktdaten, Anwesenheit im Training, Ergebnis von verschiedenen Tests

Da ich von XML noch nicht so die Ahnung habe und mich erstmal eingelesen habe, stellt sich mir die Frage, wie dies besser umzusetzen ist.
Die Frage ist, ab welcher Datenmenge würde man eine Datenbank empfehlen und wann nicht?

Ich würde mich über ein paar Rückantworten freuen :)

Gruß

Xerion21

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3080
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: XML oder doch lieber lokale Datenbanken?

Beitrag von cloidnerux » Di Jul 01, 2014 9:15 am

Der Vorteil einer Datenbank ist die Möglichkeit über die Abfragen bestimmte Datensätze auszuwählen, die deinem Auswahlkriterien entsprechen. Diese Abfragen können auch sehr kompliziert sein und Daten aus diversen Tabellen anhand der Zusammenhänge auswählen. Das ist die stärke einer Datenbank.
Im Hintergrund muss die Datenbank auch die Daten speichern, dass kann auch in XML passieren.

XML ist nur ein Format, eine Datenbank ist eine Software.

Die Daten selber speichern hat den vorteil, dass du eine größere Kontrolle hast, mitunter eine höhere Geschwindigkeit und eine kleineres Softwarepaket, da du weniger overhead hast.
Der Nachteil ist aber, dass du dich um die Verwaltung selber kümmern musst, was bei einfachen/linearen Daten kein Problem sein sollte.
Redundanz macht wiederholen unnötig.
quod erat expectandum

xerion21
Beiträge: 162
Registriert: Mo Jul 08, 2013 3:37 pm

Re: XML oder doch lieber lokale Datenbanken?

Beitrag von xerion21 » Di Jul 01, 2014 9:26 am

Danke für die schnelle Antwort :)
cloidnerux hat geschrieben:Der Vorteil einer Datenbank ist die Möglichkeit über die Abfragen bestimmte Datensätze auszuwählen, die deinem Auswahlkriterien entsprechen. Diese Abfragen können auch sehr kompliziert sein und Daten aus diversen Tabellen anhand der Zusammenhänge auswählen. Das ist die stärke einer Datenbank.
Im Hintergrund muss die Datenbank auch die Daten speichern, dass kann auch in XML passieren.
Aber über LINQ schafft man es doch auch recht komplexe Fragen zu erstellen.
cloidnerux hat geschrieben: Die Daten selber speichern hat den vorteil, dass du eine größere Kontrolle hast, mitunter eine höhere Geschwindigkeit und eine kleineres Softwarepaket, da du weniger overhead hast.
Der Nachteil ist aber, dass du dich um die Verwaltung selber kümmern musst, was bei einfachen/linearen Daten kein Problem sein sollte.
Ich würde gerne die Daten selbst speichern, allein um ein Gefühl dafür zu bekommen und um dies mal zu testen.
Aber ich frage mich, wie ich das logisch aufbauen soll, da es viele Verknüpfungen geben wird und ich dafür leider noch kein Konzept habe (bzw. mir noch keins erlesen habe).
Des Weiteren frage ich mich, wo man diese XML-Daten speichern soll, ohne dass durch evtl. löschen von Daten (durch User) das Programm nicht mehr funktioniert...

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3080
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: XML oder doch lieber lokale Datenbanken?

Beitrag von cloidnerux » Di Jul 01, 2014 10:48 am

Aber über LINQ schafft man es doch auch recht komplexe Fragen zu erstellen.
Aber nur, wenn du die Daten vorher in entsprechende Strukturen abgelegt hast.
Des Weiteren frage ich mich, wo man diese XML-Daten speichern soll, ohne dass durch evtl. löschen von Daten (durch User) das Programm nicht mehr funktioniert...
Bei deinem Programm. Wenn der Nutzer das Bedürfnis hat, Dateien zu löschen die er nicht kennt, dann ist es seine eigene Schuld.
Aber ich frage mich, wie ich das logisch aufbauen soll, da es viele Verknüpfungen geben wird und ich dafür leider noch kein Konzept habe (bzw. mir noch keins erlesen habe).
Verknüpfungen funktionieren meistens über IDs. Jeder Datensatz hat eine eigene ID, um auf einen anderen Datensatz zu verweisen brauchst du nur die ID und die Information, in welcher Tabelle/Container dieser liegt.
Redundanz macht wiederholen unnötig.
quod erat expectandum

xerion21
Beiträge: 162
Registriert: Mo Jul 08, 2013 3:37 pm

Re: XML oder doch lieber lokale Datenbanken?

Beitrag von xerion21 » Di Jul 01, 2014 10:58 am

cloidnerux hat geschrieben:Aber nur, wenn du die Daten vorher in entsprechende Strukturen abgelegt hast.
Davon gehe ich mal aus :D
cloidnerux hat geschrieben:Bei deinem Programm. Wenn der Nutzer das Bedürfnis hat, Dateien zu löschen die er nicht kennt, dann ist es seine eigene Schuld.
Ich installiere sie einfach über ClickOnce (c# vs 2012), da mache ich mir nicht sonderlich Arbeit mit. Ich kann in dieses Verzeichnis auch Daten.
Das was mich dabei interssiert ist, ob dann die Daten gelöscht werden, wenn man ein Update des Programmes installiert, daher würde ich es am liebsten iwo lokal installieren. Ich würde da dann vorschlagen es unter C:\Programme\Programmname zu machen.
Verknüpfungen funktionieren meistens über IDs. Jeder Datensatz hat eine eigene ID, um auf einen anderen Datensatz zu verweisen brauchst du nur die ID und die Information, in welcher Tabelle/Container dieser liegt.

Wie meinst du das mit ID's in XML-Daten? ID als Attribut jeweils anlegen?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8474
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: XML oder doch lieber lokale Datenbanken?

Beitrag von Xin » Di Jul 01, 2014 11:19 am

xerion21 hat geschrieben:Ab wann lohnt es sich eigentlich wirklich eine lokale Datenbank zu erstellen und wann nicht?
Eine Datenbank dient erstmal dazu, Daten abzulegen und sie wieder zu laden. Das kannst Du häufig durch Serialisierung selbst erledigen.

Ein Datenbanksystem hilft Dir (je nach eingesetzter Lösung) dabei aus den vielen gleichartigen Daten bestimmte Datensätze zu finden oder zu ändern, z.B. über SQL. Wenn diese Datenpflege für Dich selbst aufwendig zu programmieren ist, lohnt es sich über den Einsatz einer Datenbank nachzudenken.
xerion21 hat geschrieben:Ich schreibe gerade an einer Trainersoftware in C# und muss Daten über verschiedene Spieler speichern (Kontaktdaten, Leistungen) und natürlich auch Daten über Anwesenheit, Trainingseinheiten, Spiele etc.
Am besten malst Du Dir mal alle Datenstrukturen und deren Verbindungen miteinander auf. Wenn Du viele Linien hast, spricht das eher für SQL.
Wenn Du gar keine Linien hast für XML.
xerion21 hat geschrieben:Da ich von XML noch nicht so die Ahnung habe und mich erstmal eingelesen habe, stellt sich mir die Frage, wie dies besser umzusetzen ist.
XML ist wie HTML nur eine Beschreibung von Daten.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

xerion21
Beiträge: 162
Registriert: Mo Jul 08, 2013 3:37 pm

Re: XML oder doch lieber lokale Datenbanken?

Beitrag von xerion21 » Di Jul 01, 2014 11:56 am

xin hat geschrieben:Am besten malst Du Dir mal alle Datenstrukturen und deren Verbindungen miteinander auf. Wenn Du viele Linien hast, spricht das eher für SQL.
Wenn Du gar keine Linien hast für XML.
Es sind viele Datenverbindungen.
Meistens wird ein Objekt mit vielen weiteren in Verbindung gebracht.
Da ich noch in der Planung bin, habe ich noch kein fertiges Konstrukt. Sofern dies fertig ist, werde ich es dir zusenden.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8474
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: XML oder doch lieber lokale Datenbanken?

Beitrag von Xin » Di Jul 01, 2014 1:08 pm

xerion21 hat geschrieben:
xin hat geschrieben:Am besten malst Du Dir mal alle Datenstrukturen und deren Verbindungen miteinander auf. Wenn Du viele Linien hast, spricht das eher für SQL.
Wenn Du gar keine Linien hast für XML.
Es sind viele Datenverbindungen.
Meistens wird ein Objekt mit vielen weiteren in Verbindung gebracht.
Da ich noch in der Planung bin, habe ich noch kein fertiges Konstrukt. Sofern dies fertig ist, werde ich es dir zusenden.
Wenn Du viele dieser Verbindungen abfragen musst und gleichzeitig anfordern musst, dann spricht hier einiges für ein SQL-System.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

xerion21
Beiträge: 162
Registriert: Mo Jul 08, 2013 3:37 pm

Re: XML oder doch lieber lokale Datenbanken?

Beitrag von xerion21 » Di Jul 01, 2014 1:54 pm

Xin hat geschrieben:
xerion21 hat geschrieben:
xin hat geschrieben:Am besten malst Du Dir mal alle Datenstrukturen und deren Verbindungen miteinander auf. Wenn Du viele Linien hast, spricht das eher für SQL.
Wenn Du gar keine Linien hast für XML.
Es sind viele Datenverbindungen.
Meistens wird ein Objekt mit vielen weiteren in Verbindung gebracht.
Da ich noch in der Planung bin, habe ich noch kein fertiges Konstrukt. Sofern dies fertig ist, werde ich es dir zusenden.
Wenn Du viele dieser Verbindungen abfragen musst und gleichzeitig anfordern musst, dann spricht hier einiges für ein SQL-System.
Die Verbindungen werden oft gleichzeitig oder hintereinander gefordert.
Also Beispiel:
Ich rufe eine Mannschaft auf (in dieser sind verschiedene Spielerobjekte). Dann sollte man einen Spieler auswählen können und bekommt dann von diesem verschiedene Informationen (wie eine Karteikarte), welche aber aus verschiedenen Bereichen stammen (Kontaktdaten, Daten über Spiele, Daten über Tests, Anwesenheit im Training). Ich möchte aber auch z.B. auch auf die Anwesenheitsliste zugreifen können, mit den verschiedenen Spielerelementen.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8474
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: XML oder doch lieber lokale Datenbanken?

Beitrag von Xin » Mi Jul 02, 2014 9:02 am

xerion21 hat geschrieben:Die Verbindungen werden oft gleichzeitig oder hintereinander gefordert.
Alles was gleichzeitig gefordert wird: "Nimm den Spieler, der mit Vornamen Blabla heißt und nie zum Training kommt" - also über mehr als eine Tabelle geht, spricht für SQL. Auch wenn die Datenbank groß ist und nicht komplett im Speicher gehalten werden kann: Datenbank.

Wenn Du Daten nur auf der HDD ablegen möchtest und beim Programmstart laden möchtest, um dann im Speicher zu arbeiten: XML, JSON, CSV, Binär, eigenes Format... da ist XML nur eine Möglichkeit, die Dateien auf die Platte zu schreiben, die man mit anderen Programmen leichter wieder einlesen kann, als ein eigenes Format.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten