AGB  ·  Datenschutz  ·  Impressum  







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

Ini-Datei in DB verlegt

Ein Thema von Edelfix · begonnen am 13. Jul 2022 · letzter Beitrag vom 14. Jul 2022
Antwort Antwort
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
213 Beiträge
 
Delphi 10.4 Sydney
 
#1

Ini-Datei in DB verlegt

  Alt 13. Jul 2022, 10:58
Datenbank: ADS • Version: 12 • Zugriff über: ADSKomp.
Hallo,

wir habe vor ein paar Jahren die Ini-Datei in die Datenbank verlegt.

Im Quelltext wird an vielen Stellen auf die Ini-Datei zugegriffen. Deswegen haben wir eine TDBIni Klassen angelegt die sich wie eine Ini-Datei verhält.

Innerhalb der Klasse wird aus der Datenbank gelesen.

Mit der Zeit wurden es immer mehr Werte die gelesen werden müssen.

Da jeder Wert einzeln gelesen wird ist die Performance nicht sooo toll

Zum Beispiel:

myVar := ReadString('Section',1,'Name',DefaultValue); Jetzt überlege ich eine "Schnell laden" Funktion zu erstellen die fix über 2000 Werte aus der DB liest.

Eventuell kennt jemand ein Beispiel wo der Umstieg von Ini-Datei auf DB dokumentiert / beschrieben wurde. Dann muss ich das Rad nicht neu erfinden.
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

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

AW: Ini-Datei in DB verlegt

  Alt 13. Jul 2022, 11:46
Hallo,

wie oft ändern sich die Werte denn?
Ich würde die Tabelle, oder einzelne Sectionen einfachen in eine MemTable spiegeln und dann nur lokal auslesen.
Schreiben schreibt dann durch.
Zum prüfen auf Änderungen schreibt jeder editierer an den geänderten Wert den Zeitpunkt der Änderung dran.
Beim Auslesen prüft die Leseroutine erstmal ob sich in der Tabelle ein Wert befindet der neuer als der neuste vom letzten Lesen ist und ließt erst alles neu.
Das macht nur Probleme wenn zu oft geschrieben wird.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
672 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Ini-Datei in DB verlegt

  Alt 13. Jul 2022, 11:57
Nicht MemTable, MemIni verwenden, bei Programmstart erzeugen und aus der DB befüllen. Bei Änderungen direkt zurückschreiben.
Beim Ändern der Werte in der DB, per Trigger eine Notification auslösen und darauf in der Anwendung reagieren (Wert neu laden).
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Ini-Datei in DB verlegt

  Alt 13. Jul 2022, 12:51
Ich habe mir angewöhnt (vielleicht war es ein Fehler...) das meine Konfiguration im Programm ein Record oder eine Klasse ist und speichere/lade demzufolge nur einmal.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
213 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Ini-Datei in DB verlegt

  Alt 13. Jul 2022, 13:26
Es ist eine Server Basierende Anwendung. Es arbeiten teilweise bis zu 60 User gleichzeitig mit einer DB.
Wenn einer etwas ändert dann wird das direkt in die Datenbank gespeichert. Während der Änderung wird das Ändern für andere gesperrt.
Die Änderung erhalten alle anderen (und der die Änderung vornimmt), wenn sie ihre Anwendung neu starten.

Einer der Gründe warum die Änderung nur durch Neustart ankommt ist die lange Lade / Start Zeit der Anwendung.

Wenn ich das verkürzen könnte dann könnten die Änderungen direkt geladen werden.

Die Idee mit dem Änderungsstempel ist interessant.
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

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

AW: Ini-Datei in DB verlegt

  Alt 13. Jul 2022, 18:08
Nicht MemTable, MemIni verwenden, bei Programmstart erzeugen und aus der DB befüllen. Bei Änderungen direkt zurückschreiben.
Beim Ändern der Werte in der DB, per Trigger eine Notification auslösen und darauf in der Anwendung reagieren (Wert neu laden).
MemIni ist umständlich, die ermöglicht kein 1:1 kopieren ohne jedes Feld einzeln anzufassen. Auch ist es nicht möglich eventuell zusätzliche Felder mit zu kopieren.
Wenn man einmal eine Tabelle hat tut man sich doch nicht freiwillig etwas so unflexibles an.
Zudem müsste man dann auch noch den Zugriff auf die Daten neu schreiben.
Ich denke bei MemTable an TKbmMemTable, darauf ist bei uns alles optimiert. Ich bin mir aber sicher andere MemTables können alles nötige auch.

Und ADS Trigger lasse ich lieber bleiben. Auf Speicherlöscher und sich sporadisch beim beenden aufhängende Programme kann ich verzichten (ADS V11.10).
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
Rollo62
Online

Registriert seit: 15. Mär 2007
3.908 Beiträge
 
Delphi 12 Athens
 
#7

AW: Ini-Datei in DB verlegt

  Alt 14. Jul 2022, 06:32
Du könntest auch versuchen mit JSON statt INI zu arbeiten um flexibler zu sein, oder
so eine ähnliche Struktur in der DB anzulegen.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#8

AW: Ini-Datei in DB verlegt

  Alt 14. Jul 2022, 06:45
Moin...
Zitat:
wird ist die Performance nicht sooo toll
Zitat:
ist die lange Lade / Start Zeit der Anwendung
...vieleicht sollte man das mal definieren? (in Millisekunden bis Stunden) + die Erwartung (in Millisekunden bis Stunden)
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
213 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Ini-Datei in DB verlegt

  Alt 14. Jul 2022, 09:36
Das Laden dauert je nach Datenbank Größe etwa 20 Sek.

Die Datenbank Tebellen Struktur sieht so aus:

ID | Section | Nummer | Name | Typ | Bool | Integer | String
----------------------------------------------------------------------
1 | Systemeinstellung | 1 | LKZ | 2 | | | DE
2 | Systemeinstellung | 1 | BetreffFett | 0 | true | |


Das befüllen der TMemIni müsste ich neu programmieren.
  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 07:49 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