Welche Datenspeichermethode

  • Allgemein

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    Welche Datenspeichermethode

    Hallo,

    in letzter Zeit stellt sich mir immer öfter die Frage, wie ich die Daten in meinem Programm speichern soll.
    Bis jetzt benutze ich immer XML-Serialisierung doch viele benutzen auch Datenbanken.
    Ich weiß grundsätzlich, wie eine Datenbank funktioniert (hab mal ein wenig was in Access gemacht) aber noch nie in VB.

    Jetzt wollte ich fragen:

    Wo liegen die Unterschiede bei den beiden Methoden?
    Welche Vor-und Nachteile gibt es?
    Was ist wann zu empfehlen?
    Welche Datenbank würde man nutzen, die Daten lokal als Datei auf dem PC speichern kann?

    Viele Grüße
    Florian
    Meine Website
    Mein Projekt: SnippetLibrary
    Hallo

    Die Unterschiede sind teilweise enorm. Das wäre ein wenig viel das jetzt zu erleutern.

    Der Hauptunterschied ist wohl die Performance. Du MUSST immer entweder die ganze XML laden oder alle XML's. Je nachdem wie du Serialisierst. Imer schlecht.
    Bei einer Datenbankabfrage selektierst du wirklich nur die Daten die du brauchst.

    Auch ist ein relationelles Datenmodell meiner Meinung nach viel eleganter und einfacher, zumindest wenn die konstistenz immer gegeben sein soll.
    Eine normalisierung des Datenmodells ist mit einer XML fast unmöglich.

    Empfehlung? Mmmmhhh. Von meiner Seite immer eine DB.

    Welche DB für lokale Anwendung. LocalDB würde ich nehmen. Easy und recht leichtgewichtig. Und vorallem super mit Entity Framework. (Ich steht hald drauf)

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    flori2212 schrieb:

    Wo liegen die Unterschiede bei den beiden Methoden?
    DB ist nicht gleich DB.
    Eine serverbasierte Datenbank nimmt dem Client Rechen- und Datenzugriffsoperationen ab.
    Eine lokale Datenbank hat diesen Vorteil genauso wenig wie eine XML-basierte Speicherung.
    XML kannst du direkt in ein Objektmodell deserialisieren.
    Datenbanken üblicher Natur benötigen ein relationales Datenmodell in Normalform (-> Google).
    Höchste Performance bei BigData-Projekten erreichst du mit einer NoSQL-Datenbank wie Cassandra.

    flori2212 schrieb:

    Welche Vor-und Nachteile gibt es?
    Was ist wann zu empfehlen?
    Bei Multiuser-Zugriff benötigst du eine Datenbank.
    Bei sehr großen Datenmengen ist eine Datenbank performanter.
    Bei kleinen Datenmengen ist eine lokale Speicherung effizienter.
    Solange du sowieso lokal auf dem Client und für eine Single-User-Anwendung speicherst, bist du mit XML sehr gut bedient.

    flori2212 schrieb:

    Welche Datenbank würde man nutzen, die Daten lokal als Datei auf dem PC speichern kann?
    Wenn du unbedingt eine DB benötigst, bietet sich hier SQLite an.
    Aber wie gesagt, bei einer Single-User-Anwendung lohnt sich der Umstellungsaufwand kaum.

    Warum bist du der Meinung, dass dein momentanes Verfahren nicht passt?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „petaod“ ()

    Vielen Dank für die schnellen Antworten erstmal.

    Nofear23m schrieb:

    Welche DB für lokale Anwendung. LocalDB würde ich nehmen. Easy und recht leichtgewichtig. Und vorallem super mit Entity Framework. (Ich steht hald drauf)

    Werde ich mir auf jeden Fall mal anschauen, auch wenn ich gerade noch gar nicht weiß, was das Entitry Framework ist.


    petaod schrieb:

    Warum bist du der Meinung, dass dein momentanes Verfahren nicht passt?

    Ich bin gerade an einem neuen Projekt und am überlegen wie ich die Daten speichern soll, und wollte einfach mal schauen was es außer XML noch gibt (vielleicht etwas besseres, am weiß ja nie... :))
    Ach ja

    Nofear23m schrieb:

    Auch ist ein relationelles Datenmodell meiner Meinung nach viel eleganter und einfacher,
    Das relationelles Datenmodell kenne ich noch aus der Arbeit mit Access und ich find es auch sehr übersichtlich, mit den Beziehungen, die ja so ohne weiteres nicht in XML gehen.

    Viele Grüße
    Florian
    Meine Website
    Mein Projekt: SnippetLibrary
    Für mich stellt sich immer erst die Frage nach der Datenmenge. Ein Datenbank, egal in welcher Form, für ein paar Settings im Programm können sicherlich besser in xml über eine klasse Serialisiert werden. Erst bei "größeren" Datenmengen würde ich zu einer DB greifen (Was nicht heißt, dass man nicht auch wahlweise intern ein DataSet verwenden kann für die angenehme Benutzung). Also was für eine Datenmenge erwartest du denn überhaupt, um das mal einschätzen zu können?
    Hallo,

    Datenmenge ist schwer abzuschätzen, ich brauche halt vor allem viele "Tabellen" da es viele Bereiche, wie Kunden, Aufträge, Kontaktadressen gibt, die halt in Beziehung stehen und wie ich denke leichter über eine Datenbank zu managen sind.

    Aber für die Datenmenge eine Schätzung: in allen Tabellen ca. 2000-6000 Einträge (werden mit der Zeit immer mehr)

    Viele Grüße
    Florian
    Meine Website
    Mein Projekt: SnippetLibrary
    Hallo

    Definitiv Datenbank - ich bleib dabei :rolleyes:

    Gerade bei Kunden, Aufträge, Kontakten will man ja gezielt selektieren können. Alles andere wird extrem unperformant.
    Da reichen bei XML oft schon ein paar hundert Datensätze das es nicht mehr "flutscht".

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Moment mal, @flori2212 könntest du bitte mal Erklären, wie du jetzt im Moment deine Daten abspeicherst, und wie du sie im Programm aufrufst?
    SIMDoku (Simple Dokumentenverwaltung)
    Mein Lernprojekt um die verschiedensten Facetten der .NET Entwicklung zu erkunden.
    GitHub

    VB Paradise Dark Theme
    Inoffizieller VB-Paradise Discord.
    Aktuell (in anderen Projekten) noch über XML und einem XML Serialiser.

    Das Projekt mit den Kunden und Aufträgen ist ja noch in der Planung, und da wollte ich mich mal informieren.

    Viele Grüße
    Florian
    Meine Website
    Mein Projekt: SnippetLibrary
    ich empfehle immer, eine Datenverarbeitun nur mit typDataset aufzubauen.
    Wenn sich erweist, dass eine Datenbank vonnöten ist, kann man die auch noch im Nachhinein dranmachen - deswegen ist ja nichts vom Code vergeblich gewesen, im Gegenteil.
    Bei einer Kindenverwaltung mit Aufträge, Rechnung und pipapo denke ich allerdings auch, es ist absehbar, dass eine DB hermuss.
    Dennoch würde ich sie erst dranmachen, wenn sie hermuss - nicht vorher.
    Wohl 90% aller Db-Anfänger gewöhnen sich nämlich eine Vorgehensweise an, mit der man die enorme Unterstützung, die VisualStudio für Databinding und typDataset-Verarbeitung bereithält, nicht nutzen kann.

    Die Performance ist anders, aber sie als 'schlechter' zu bezeichnen findich fraglich.
    Wenn da "nur" 10000 Datensätze drinne sind, startet die Anwendung natürlich um 2-3s langsamer.
    Dann aber sind alle Daten im Speicher, und keine DB der Welt erreicht eine solche Performance.
    Speichern hingegen dauert dann wieder 2-3s.
    Wobei @flori2212 glaube ich vergessen hat hinzuzufügen das es um ein Projekt unter WPF geht. Ich denke das ist in diesem Kontext eine schon recht wichtige Info.
    Zumindest vrmute ich das, da er im Moment ja doch mit der WPF "spielt".

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##