Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Programmkonfiguration (https://www.delphipraxis.net/76270-programmkonfiguration.html)

hanspeter 1. Sep 2006 08:56


Programmkonfiguration
 
Hallo,
ich möchte einmal fragen, wie Ihr so die Programmkonfiguration, Zusatzinformationen u.s.w. speichert?

Die Ausgangssituation.
Ein größeres Projekt arbeitet mit einer Firebird Datenbank.
Neben der Datenbank gibt es (getrennt) eine Systemdatenbank, welche alle Daten rund um das Projekt enthält.
Das beginnt bei PLZ- und BLZ-Verzeichnis über Reportvorlagen bis zu Lookup Tabellen. (Also Schlüsselwort - Kennung)
Die ursprüngliche Idee, die Systemdatei zentral auf dem Server anzuordnen verlangsamt das Programm. Deshalb gibt es auf
jedem Client eine Kopie dieser Datenbank.
Programmeinstellungen wie Fensterpositionen speichere ich in der Registry.
Jetzt kommen noch eine Vielzahl neuer Einstellungen (z.B. Gridheader) dazu. Das ganze möchte ich auch noch personalisieren.
Dazu möchte ich von der Registry wegkommen, da dann größere Datenmengen anfallen.

Meine Überlegungen sind nun folgende.
1. Es gibt weiter eine zentrale Systemdatenbank.
Beim Programmstart vergleicht das Programm die Versionsnr. der Server mit der Systemdatenbank.
Liegt auf dem Server eine höhere Versionsnr. vor, wird über Backup/Restore eine lokale Kopie gezogen.
Wobei hier die Frage ist, bei einer ausschließlich lokal eingesetzten Datenbank, lohnt sich da überhaupt eine SQL Datenbank?

2. Da kaum Indizierungen vorgenommen werden müssen und der Datenbestand immer begrenzt ist, (z.B. etwa 50 Druckvorlagen)
erfolgt die Datenspeicherung nicht in einem SQL Server, sondern in einer Tabelle. Hier käme dann z.B. TMemoryTable oder
eine Access-Tabelle in Frage.
Ist der Datenzugriff dann soviel schneller?

3. Die Ablage erfolgt in Ini-Dateien. Vorteil wäre die manuelle Änderung, Nachteil es entstehen eine Vielzahl von
Dateien.

4. Ablage als XML Datei und laden über einen XML Provider.
Vorteil wäre hier wieder die manuelle Änderungsmöglichkeit.

5. Habe ich noch eine Möglichkeit übersehen???


Gruß Peter


Welchen Weg würdet Ihr bevorzugen oder gibt es noch andere Möglichkeiten, welche ich übersehen habe?

Gruß
Peter

oki 1. Sep 2006 09:13

Re: Programmkonfiguration
 
Hi Hanspeter,

hier mal meine dürftigen Erfahrungen:

zu 1.)
Wenn Geld nicht das Thema (SQL Server) ist, dann auch lokal einsetzen. Du hast dann in Zukunft keine Probleme auch netzweit zu arbeiten. (spätere Umstellung auf Server - Client)

zu 2.)
Bei so geringen Daten merkt man wohl kaum einen Unterschied. Freibleibend zu den Gedanken zu erstens könnte man sich hier zu der Methode entscheiden, die einem persönlich am meisten liegt.

zu 3.)
Ich verwende gerne Ini-dateien. Diese kann man schnell und einfach für notwendige Vorkonfigurationen erstellen und im Installationssatz mit verpacken. Das Thema mehrere Dateien wird durch die Möglichkeit der Sektionen aber minimiert und das ganze bleibt übersichtlich.

zu 4.)
XML mag ich in der Programmierung nicht so sehr, aber das liegt sicher an der Übung. Für umfangreiche Daten find ich XML aber sehr gut.

zu 5.)
Ja, da gibt es noch das Thema Serialisierung. Hab ich mal in einem Projekt gemacht und ist so nicht schlecht. Spart viel schreibarbeit bei VCL-Objekten.


Gruß oki

hanspeter 1. Sep 2006 10:31

Re: Programmkonfiguration
 
Zitat:

Wenn Geld nicht das Thema (SQL Server) ist, dann auch lokal einsetzen. Du hast dann in Zukunft keine Probleme auch netzweit zu arbeiten. (spätere Umstellung auf Server - Client)
Ich verwende Firebird und das ist ohnehin kostenfrei.


Zitat:

Bei so geringen Daten merkt man wohl kaum einen Unterschied. Freibleibend zu den Gedanken zu erstens könnte man sich hier zu der Methode entscheiden, die einem persönlich am meisten liegt.
Ich habe mal lange an einem schweinisch teueren Projekt in der Versicherungsindustrie mitgearbeitet. Dahinter stand ein
international agierendes Softwarehaus.

Die waren so vorgegangen dass sie für die Datenbank einen SQL Server hatten (SQL Anywhere) und die gesamte Programmkonfiguration
in Accesstabellen abgelegt hatten.
So richtig hatte sich mir der Sinn nicht erschlossen. (außer das man die Tabellen mit Access pflegen kann)
Deshalb auch meine Frage wie andere es machen.

Mit Gruß Peter

Jürgen Thomas 1. Sep 2006 10:52

Re: Programmkonfiguration
 
Hallo Peter,

Andreas Kosch hat mir für genau solche Situationen Deine Variante 1 empfohlen:
Zitat:

Zitat von hanspeter
1. Es gibt weiter eine zentrale Systemdatenbank.
Beim Programmstart vergleicht das Programm die Versionsnr. der Server mit der Systemdatenbank.
Liegt auf dem Server eine höhere Versionsnr. vor, wird über Backup/Restore eine lokale Kopie gezogen.

Unter NET hat er meine Vermutung bestätigt, dass als lokale Datenbank eine XML-Tabelle das einfachste und schnellste wäre. Unter D5 würde ich dasselbe DBMS - bei Dir also Firebird - verwenden, damit einheitliche Zugriffe und Verfahren möglich sind.

Gruß Jürgen

PS. Ich kann doch annehmen, dass Andreas Kosch auch in der DP ein Begriff ist?

hanspeter 1. Sep 2006 11:13

Re: Programmkonfiguration
 
Zitat:

Unter D5 würde ich dasselbe DBMS - bei Dir also Firebird - verwenden, damit einheitliche Zugriffe und Verfahren möglich sind.
Ich arbeite mit D2006. Im Moment bin ich gerade dabei mal Zeitmessungen bei der Initialisierung aus einer Datenbank,
statt aus der Registry vorzunehmen.

Zitat:

PS. Ich kann doch annehmen, dass Andreas Kosch auch in der DP ein Begriff ist?
Ja ich habe ein paar Bücher von ihm, hat aber Delphi komplett den Rücken gekehrt.

Gruß Peter

Jürgen Thomas 1. Sep 2006 11:18

Re: Programmkonfiguration
 
Zitat:

Zitat von hanspeter
Zitat:

PS. Ich kann doch annehmen, dass Andreas Kosch auch in der DP ein Begriff ist?
Ja ich habe ein paar Bücher von ihm, hat aber Delphi komplett den Rücken gekehrt.

Gruß Peter

Aber für Datenbanken und NET ist er natürlich trotzdem immer noch ein Fachmann. Jürgen

hanspeter 1. Sep 2006 12:34

Re: Programmkonfiguration
 
So ich habe ein bischen rumexperimentiert und bin zu einem eigentlich überraschenden Ergebnis gekommen.

Also Koinfiguration speichere ich z.B. beim Schließen eines Fensters immer die letzte Position und Größe in der
Registry.
Beim nächsten Öffnen des Fenster wird diese dann wiederhergestellt.

Beim Lesen/Schreiben der Einstellwerte aus der Registry dauert das zwischen 23 bis 26 Millisekunden.
Mach ich das Gleiche aus einer Firebirddatenbank (lokal Zugriff über IBObjects) dann benötigt dieser Vorgang 2 bis 3 ms.
In der Registry stehen einfach nur die Werte. In der SQL Datenbank selektiere ich noch nach User.

Ich bin etwas überrascht.

Gruß Peter


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz