Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Projektplanung und -Management (https://www.delphipraxis.net/85-projektplanung-und-management/)
-   -   Software-Datenmodell Redesign - Möglichkeiten (https://www.delphipraxis.net/215590-software-datenmodell-redesign-moeglichkeiten.html)

himitsu 2. Aug 2024 12:31

AW: Software-Datenmodell Redesign - Möglichkeiten
 
Bei DataSnap, bzw. RAD-Server, sowie auch einigen anderen IPC-Frameworks,
kann man DataSets als Parameter übergeben und als VAR-Parameter oder Result abrufen.

Die DB-Verbindung oder sonstwas wäre in der Middleware (Server) und die Clients bekämen die Daten von dort durchgereicht.



Für langsame Query, hatten wir mal eine Liste von DataSets im Apps, dort wurden sie regelmäßig in einem Thread aktualisiert
und dann konnten die Clienten sie gemütlich abrufen.

* der Aufruf der Runterladfunktion kommt je in einem Thread an
* dort wurde via CriticalSections das jeweilie DataSet kurz gesperrt
* dann schnell in ein MemoryDataset (z.B. dxMemData oder CDS) umkopiert
* anschließend das MemoryDataset als Result rausgegeben (mit OwnsObjects, damit Datasnap das dann freigibt, wenn fertig)
* im Client kam dann eine Kopie dieses Datasets an (das lief in einem DownloadThread)
* und anschließend wurde das DataSet im Hauptthread (Synchronize) ans Grid gehängt (das alte DataSet dabei freiegeben)

Inzwischen nutzen wir aber MATERIALIZED VIEWs im Postgres, welche die Clients vom DBServer laden, und die regelmäßig über den Apps aktualisiert werden.

SusiT 2. Aug 2024 14:23

AW: Software-Datenmodell Redesign - Möglichkeiten
 
Danke himitsu,

so wie du es für die langsamen Queries beschrieben hast machen wir es bereits ähnlich (nicht identisch).
Aber der Einwand mit dem DataSnap/Rad-Server ist sehr hilfreich! Das werde ich mir nochmal im Detail anschauen,
da ich mir die Erweiterbarkeit nicht so Umstandsbehaftet wie mit DataSets in Kombination mit CriticalSections vorstelle.

jaenicke 4. Aug 2024 06:44

AW: Software-Datenmodell Redesign - Möglichkeiten
 
Zitat:

Zitat von SusiT (Beitrag 1539494)
Wäre es auch möglich via CloneCursor die Anzeige im MainThread auf die im Event-Thread zu referenzieren?

Ich kenne die Interna eines ClientDataSets zu wenig um das zu beantworten. Laut Cary Jensen sollte das aber gehen.
Zitat:

So long as no code needs to make changes to Data or Delta, the ClientDataSet is thread safe.
Er hat zum ClientDataSet ein ganzes Buch geschrieben. Das Thema Threads findest du auch in seinem Blogeintrag:
https://caryjensen.blogspot.com/2011...rsors.html?m=1
Ich empfehle dir, dass du dir das genau anschaust, was er dazu schreibt. Ich habe das nur überflogen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:27 Uhr.
Seite 2 von 2     12   

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