![]() |
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 |
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 |
Re: Programmkonfiguration
Zitat:
Zitat:
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 |
Re: Programmkonfiguration
Hallo Peter,
Andreas Kosch hat mir für genau solche Situationen Deine Variante 1 empfohlen: Zitat:
Gruß Jürgen PS. Ich kann doch annehmen, dass Andreas Kosch auch in der DP ein Begriff ist? |
Re: Programmkonfiguration
Zitat:
statt aus der Registry vorzunehmen. Zitat:
Gruß Peter |
Re: Programmkonfiguration
Zitat:
|
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 07:14 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