AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Vergleich Clientdatasets

Ein Thema von ventiseis · begonnen am 19. Okt 2022 · letzter Beitrag vom 20. Okt 2022
Antwort Antwort
ventiseis

Registriert seit: 15. Jan 2009
Ort: 94032 Passau
53 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Vergleich Clientdatasets

  Alt 19. Okt 2022, 13:04
Datenbank: TClientdataset • Version: 10.2 • Zugriff über: DBX
Hallo!

ich haben hier regelmäßig Probleme mit dem normalen TClientDataSet und bekomme die Fehlermeldung:
Code:
Insufficient memory for this operation

Funktion: Dbclient.TCustomClientDataSet.InternalCheck (Zeile 0)
Adresse: [5112E08F]

Aufruf-Stack:
  [5112E08A] Datasnap.Dbclient.TCustomClientDataSet.InternalCheck
  [5113374A] Datasnap.Dbclient.TCustomClientDataSet.InternalPost
  [511D4A5C] Data.Db.TDataSet.Post
Daraufhin habe ich das Dataset durch zwei unterschiedliche Komponenten testweise ersetzt:
  • TFDMemTable (Firedac)
  • kbmMemTable (Dritthersteller)
Bei einer Stichprobe funktionieren beide Komponenten ohne Exception und beinhalten nach dem Auffüllen der Daten den gleichen Inhalt.
Geschwindigkeit der Ausführung und Speicherverbrauch sind ähnlich.

Wir nutzen (an dieser Stelle) das Dataset unabhängig von der Datenbank: erst erstellen wir Felddefinition mit (gängigen) Datentypen (Zahlen, Strings, große Memo-Felder)
und füllen dann die Werte im Programm. Sonst ist bei uns noch überall DbExpress im Einsatz (z.B. auch zur Datenbankverbindung), hier in diesem Fall würde aber (ohne große Umbauten) auch
scheinbar das Firedac Dataset funktionieren.

Hat hier jemand Erfahrungswerte oder einen Tipp, welche dieser Komponenten für diesen Zweck sinnvoller wäre? Oder lässt sich die Fehlermeldung im bestehenden Dataset
irgendwie vermeiden (ohne natürlich Felder wegzulassen)?
Bastian

Geändert von ventiseis (20. Okt 2022 um 07:21 Uhr) Grund: Text ergänzt
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
712 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Vergleich Clientdatasets

  Alt 19. Okt 2022, 14:25
Hallo,

was ist denn die Fehlermeldung die da kommt?

Ich/wir verwenden seit Jahren erfolgreich KbmMemTable. Selbst bei Tabellen mit tausenden Datensätzen gibt es keine Probleme.
Die FD Version muss ich mir noch im Detail ansehen.
Bei KbmMemTable finde ich als absolutes Plus das man wunderschön die Daten einer Tabelle mit zig anderen Tabellen teilen kann ohne umständliche Konstrukte bauen zu müssen.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
ventiseis

Registriert seit: 15. Jan 2009
Ort: 94032 Passau
53 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Vergleich Clientdatasets

  Alt 19. Okt 2022, 14:43
Die Fehlermeldung bekomme ich nur beim mitgelieferten TClientDataset von Delphi.

Die zwei anderen Datasets funktionieren ohne Probleme. Ich werde mal noch ein Beispielprogramm machen, welches einen einfacheren Vergleich (Geschwindigkeit, Speicherverbrauch) erlaubt.
Bastian
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
712 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Vergleich Clientdatasets

  Alt 19. Okt 2022, 16:16
Die Fehlermeldung bekomme ich nur beim mitgelieferten TClientDataset von Delphi.
Diese Antwort bringt NULL Informationszuwachs.

Wie lautet die Fehlermeldung? Welchen Text hat sie?
Das Stück der Meldung in deinem ersten Post ist ziemlich nutzlos ohne den Text der wirklichen Fehlermeldung. Das sind ja nur Zusatzinfos.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
ventiseis

Registriert seit: 15. Jan 2009
Ort: 94032 Passau
53 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Vergleich Clientdatasets

  Alt 19. Okt 2022, 20:10
Entschuldigung, manchmal ist man wirklich betriebsblind .
Die Fehlermeldung der Exception ist natürlich:
Insufficient memory for this operation
Ich habe mittlerweile ein Vergleichsprogramm geschrieben mit folgender Idee:
  • Aufbau eines Beispiel-Datasets mit hinreichend vielen Felddefinitionen
  • so viele Datensätze hineinschreiben, bis der Speicherplatz knapp wird

Man kommt hier mit der mit der TFdMemtable viel wieder als mit dem alten TClientDataset: es können viel mehr Datensätze angelegt werden, bis ca. 1.9GB Hauptspeicher verbraucht sind. Beim TClientDataset kommt der Speicherfehler schon bei knapp 1 GB Daten.

Zusätzlich habe ich noch TVirtualTable von DevArt ausprobiert, das funktioniert ebenfalls gut, es passen aber weniger Datensätze in ein Dataset. Aus irgendeinem Grund funktioniert kbmMemTable in meinem Beispiel wieder nicht. Das mag daran liegen, dass die herunterladbare Freeware-Version schon einige Jahre alt ist und es keine Trial-Version für ein aktuelle Delphi gibt. Erst nach einigem Basteln konnte ich die Units zum kompilieren bringen, habe mich hier aber vermutlich irgendwo verzettelt.
Bastian

Geändert von ventiseis (19. Okt 2022 um 20:11 Uhr) Grund: Buchstaben verdreht
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
480 Beiträge
 
#6

AW: Vergleich Clientdatasets

  Alt 19. Okt 2022, 21:46
Man kommt hier mit der mit der TFdMemtable viel wieder als mit dem alten TClientDataset: es können viel mehr Datensätze angelegt werden, bis ca. 1.9GB Hauptspeicher verbraucht sind. Beim TClientDataset kommt der Speicherfehler schon bei knapp 1 GB Daten.
Bei großen Datenmengen würde ich eher SQLite statisch ins Programm einbinden. Wenn es sein muss, kann man SQLite auch als In-Memory-Datenbank verwenden. Wie es mit mORMot gemacht wird, kannst du hier nachlesen. Werte zur Performance findest du hier.

Bis bald...
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz