Hallo zusammen,
ich arbeite schon länger mit typisierten DataSets und bin sehr zufrieden mit diesem Format, eben weil es typisiert ist! Die Geschwindigkeit ist auch super. Einziger Wermutstropfen sind die Ladezeiten mit ReadXML.
Hintergrund:
Ich habe ein Statistik Programm entwickelt, mit welchem ich Umsätze auswerte. Mir war bereits am Anfang schnell bewusst, dass ich hier mit den initialen Ladezeiten Probleme bekommen werde, daher teile ich die DataSets (XML Dateien) in mehrere Dateien (pro Jahr eine Datei) auf. Wenn ich jetzt mehrere Jahre laden möchte (intern merge ich die DataSets zu einem) dauert das schon sehr lange. Je nach Rechnerleistung schon mal 30-60 Sekunden (~660MB insgesamt).
Nebenbei beschäftige ich mich auch immer mehr mit MySQL und spiele inzwischen mit dem Gedanken mir mal das SQLite Format anzuschauen. Sowie ich das verstehe, würde ich hier auch eine "Connection" aufbauen und via Abfrage nur die Daten abrufen die ich zur Auswertung benötige. Also entweder nur einen bestimmten Monat oder direkt mehrere Jahre.
Daher meine Frage:
Macht es in meiner Situation Sinn zu SQLite zu wechseln (der Programmieraufwand wäre enorm, da im Programm alles auf das DataSet aufgebaut ist)?
Würde ich hier einen signifikanten Geschwindigkeitsvorteil erfahren? Für 10% mehr Leistung mache ich mir den Aufwand nicht.
Ich würde auch die Vorteile der Typisierung verlieren, die ich so sehr zu schätzen gelernt habe.
Eine Umstellung auf einen zentralen Datebankserver ist auch noch keine Option, da die Anwendung auch offline funktionieren muss bzw sollte.
PS: Meine Datenbank hat 3 Tabellen. 1:n mit einer Haupttabelle und 2 via ForeignKeyConstraint (Cascade) verknüpften Child Tabellen. Hier müsste ich auch dann in MySQL (SQLite) das umständliche LeftJoin verwenden wenn ich die Child-Daten abfrage.
Hier eine Beispielabfrage mit welcher ich aus Daten aus einer Parent und einer Child Tabelle abrufe:
ich arbeite schon länger mit typisierten DataSets und bin sehr zufrieden mit diesem Format, eben weil es typisiert ist! Die Geschwindigkeit ist auch super. Einziger Wermutstropfen sind die Ladezeiten mit ReadXML.
Hintergrund:
Ich habe ein Statistik Programm entwickelt, mit welchem ich Umsätze auswerte. Mir war bereits am Anfang schnell bewusst, dass ich hier mit den initialen Ladezeiten Probleme bekommen werde, daher teile ich die DataSets (XML Dateien) in mehrere Dateien (pro Jahr eine Datei) auf. Wenn ich jetzt mehrere Jahre laden möchte (intern merge ich die DataSets zu einem) dauert das schon sehr lange. Je nach Rechnerleistung schon mal 30-60 Sekunden (~660MB insgesamt).
Nebenbei beschäftige ich mich auch immer mehr mit MySQL und spiele inzwischen mit dem Gedanken mir mal das SQLite Format anzuschauen. Sowie ich das verstehe, würde ich hier auch eine "Connection" aufbauen und via Abfrage nur die Daten abrufen die ich zur Auswertung benötige. Also entweder nur einen bestimmten Monat oder direkt mehrere Jahre.
Daher meine Frage:
Macht es in meiner Situation Sinn zu SQLite zu wechseln (der Programmieraufwand wäre enorm, da im Programm alles auf das DataSet aufgebaut ist)?
Würde ich hier einen signifikanten Geschwindigkeitsvorteil erfahren? Für 10% mehr Leistung mache ich mir den Aufwand nicht.
Ich würde auch die Vorteile der Typisierung verlieren, die ich so sehr zu schätzen gelernt habe.
Eine Umstellung auf einen zentralen Datebankserver ist auch noch keine Option, da die Anwendung auch offline funktionieren muss bzw sollte.
PS: Meine Datenbank hat 3 Tabellen. 1:n mit einer Haupttabelle und 2 via ForeignKeyConstraint (Cascade) verknüpften Child Tabellen. Hier müsste ich auch dann in MySQL (SQLite) das umständliche LeftJoin verwenden wenn ich die Child-Daten abfrage.
Hier eine Beispielabfrage mit welcher ich aus Daten aus einer Parent und einer Child Tabelle abrufe:
VB.NET-Quellcode
- Dim SelectedOrderRows As EnumerableRowCollection(Of OrderDataSet.ORDERRow) =
- RefODB.MergedOrderDS.ORDER.Where(Function(o) _
- o.HAS_DOCUMENT = True AndAlso
- o.ORDER_TYPEID = OrderTypeID AndAlso
- o.NET_TOTAL >= 0 AndAlso
- Convert.ToDateTime(o.DATE_IN) >= DateFrom AndAlso
- Convert.ToDateTime(o.DATE_IN) <= DateTill)
- For Each rwOrder In SelectedOrderRows
- For Each rwItem As OrderDataSet.ITEMRow In rwOrder.GetITEMRows
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Khartak“ ()