AGB  ·  Datenschutz  ·  Impressum  







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

Thread getriebene SQLite Zwischenschicht?!

Ein Thema von Mavarik · begonnen am 4. Nov 2014 · letzter Beitrag vom 6. Nov 2014
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#11

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 5. Nov 2014, 12:21
@Dejan Vu & @Sir Rufo

Ich macht Euch viel zu viele Gedanken. Das Funktioniert doch schon alles...

OnBeforeOpen
- Get New & Lock
OnAfterClose
- Post New & Unlock

Leider habe ich auf ein eindeutiges ID (Autoinc) bei Design gesetzt... War ein Fehler! Aber darum geht es ja gar nicht.

Nur als kleinen Hintergrund:
Das Ganze ist aus der ENZ-BTreeIsam aus DOS-Zeiten noch. (Ja ich bin alt...) Und da wurde halt eine SeekNr genommen.
Dann habe ich die Routinen für Windows 95 und Delphi 3 auf Windows umgestellt.
Mit Delphi 4 (glaube ich) habe ich eigene Datenbank Komponenten geschrieben die auf diese Datenbank aufsetzen.
Mit Delphi 7 habe ich das ganze (ohne eine Zeile am Hauptprogramm zu ändern) auf MySQL umgestellt)! Und aus der SeekNr wurde das ID.
Mit Delphi 2007 dann den Serverübergreifenden Sync (auch wieder ohne eine Zeile am Hauptprogramm zu ändern)!
Jetzt stehen halt mal wieder Verbesserungen an und ein Wechsel zu FireDac um die Fehler der alten MySQL Komponenten los zu werden.

Da ich FireDac entwas "unübersichtlich" finden... Meine Frage ob ich mit ner MemTable die im Hintergrund auf den Server das Update durchführt, auf dem richtigen Weg bin oder lieber etwas anderes nehmen soll.

An eine Service-Anwendung hatte ich auch schon gedacht... Läßt sich nur immer so schlecht debuggen.

Vielleicht auch lieber einfach per TCP/IP in eine App auf dem lokalen Server einloggen die Daten "nativ" also binär übertragen und auf dem lokalen Server erst in SQL umwandeln. ALLE Daten liegen sowieso in Records vor. Eine TCP/IP Übertragung der nativen Daten, wäre warscheinlich sowieso um den Faktor 10x bis 100x schneller... Und dann kann die "Serverapp" losorgeln.

Oder und daher der Title "Thread" die Umwandlung lokal innerhalb der Software und dann auf den Server. Die Software läuft sowieso fast 24/7.

Grüsse Mavarik
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#12

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 5. Nov 2014, 14:58
[OffTopic]

Das Ganze ist aus der ENZ-BTreeIsam aus DOS-Zeiten noch. (Ja ich bin alt...) . . .
Nicht nur du aber, Mann o Mann, das war noch ne Datenbank.

[/OffTopic]

Zum Thema bzw. zur Frage: MemTable würde ich persönlich nicht bevorzugen, es sei denn, du kannst das in Transaktionen verpacken. Da wäre die TCP/IP-Variante schneller, und wahrscheinlich auch sicherer, weil transaktionsfähig

Gruss vom MM Baujahr 56
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 5. Nov 2014, 16:04
Nicht nur du aber, Mann o Mann, das war noch ne Datenbank.
Funktionierte, kaum erkennbare Fehler... schnell... jojojo
Zum Thema bzw. zur Frage: MemTable würde ich persönlich nicht bevorzugen, es sei denn, du kannst das in Transaktionen verpacken. Da wäre die TCP/IP-Variante schneller, und wahrscheinlich auch sicherer, weil transaktionsfähig
Wieso transaktionsfähig?
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#14

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 5. Nov 2014, 16:20
...
Leider:
a.) passiert es immer wieder, dass während dem Datentransfer die Verbindung zum Server abraucht.
b.) ist ggf. die Wartezeit nach einem Open der Datenbank recht lange, wenn die andere Seite viele Daten eingefügt hat.
...
@Dejan Vu & @Sir Rufo
Ihr macht Euch viel zu viele Gedanken. Das Funktioniert doch schon alles...

OnBeforeOpen
- Get New & Lock
OnAfterClose
- Post New & Unlock
Also wenn alles funktioniert, was willst Du dann? Ich denke, es geht gerade so *nicht*. Da kann man dann schon mal nachdenken. Aber da alles funktioniert, ist ja auch alles klar und es gibt keine Probleme.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#15

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 5. Nov 2014, 16:31
Also wenn alles funktioniert, was willst Du dann? Ich denke, es geht gerade so *nicht*. Da kann man dann schon mal nachdenken. Aber da alles funktioniert, ist ja auch alles klar und es gibt keine Probleme.
- wie gesagt. Es gibt Abbrüche und ich will die MySQL Componenten wechseln.
- und modernisieren.

Nur weil etwas funktioniert bedeutet es doch nicht, dass es nicht noch besser funktionieren kann...
Aber meine Frage war ja Firedac Memtable ja oder etwas anderes.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#16

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 5. Nov 2014, 16:44
Also wenn alles funktioniert, was willst Du dann? Ich denke, es geht gerade so *nicht*. Da kann man dann schon mal nachdenken. Aber da alles funktioniert, ist ja auch alles klar und es gibt keine Probleme.
Mann, es läuft nicht optimal und er wehrt sich alles auf den Müll zu schmeißen, nur um die Superduperdistributetobjectorienteddatastoragelösu ng zu installieren, bei der in 3 Jahren jeder die Schulter zuckt und fragt was das alte Zeug soll.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#17

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 5. Nov 2014, 17:19
...und er wehrt sich alles auf den Müll zu schmeißen...
Genau... 1 Mio. Zeilen Source die fest mit der ENZ ISAM verknüpft sind, baut man nicht mal eben um auf Firedac...

Besonders nicht, wenn man dafür nicht bezahlt wird...

Mavarik
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#18

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 5. Nov 2014, 19:32
Wieso transaktionsfähig?
na ja, was passiert denn wenn während eines Schreibvorganges ein Problem auftritt (PC bzw. OS bleibt hängen, Stromausfall...). Dann hängt die MemTable "irgendwo"....und du hast ein Problem.

Zitat von Mavarik:
Besonders nicht, wenn man dafür nicht bezahlt wird...
Macht es dann überhaupt Sinn sich über zeitaufwändige Optimierungen Gedanken zu machen?
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#19

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 6. Nov 2014, 08:44
Mann, es läuft nicht optimal und er wehrt sich alles auf den Müll zu schmeißen, nur um die Superduperdistributetobjectorienteddatastoragelösu ng zu installieren, bei der in 3 Jahren jeder die Schulter zuckt und fragt was das alte Zeug soll.
Wo steht denn, 'alles auf den Müll zu schmeißen' sei eine Lösung?
Wenn man die Wartezeiten während des Abgleiches nicht will, dann kann/muss man das im Hintergrund machen. Und wenn man das im Hintergrund macht, muss man eben noch 1-2 Dinge beachten. Hört sich jetzt nicht nach einer Lösung an, bei der man alles auf den Müll schmeißen muss. Und eine "objektkorientierte Datastoragelösung" muss das auch nicht werden, weil man das auch in VB oder C programmieren kann.

- wie gesagt. Es gibt Abbrüche und ich will die MySQL Componenten wechseln.
- und modernisieren.
...
Und die Wartezeiten bei vielen Änderungen vermeiden?

Wenn die Datenbankzugriffe nicht gekapselt sind, wird das allerdings eine größere Operation.

Du wirst schon eine pragmatische Lösung finden. Ich würde -wenn überhaupt- zuerst die DB-Komponenten austauschen und dabei kapseln. Wenn alle DB-Zugriffe abstrahiert sind (d.h. in Klassen gekapselt) kann man die Reconcile-Logik einbauen, d.h.: Daten werden lokal und global verändert, wer gewinnt? Muss man aber nicht.

Geändert von Dejan Vu ( 6. Nov 2014 um 08:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#20

AW: Thread getriebene SQLite Zwischenschicht?!

  Alt 6. Nov 2014, 10:35
Macht es dann überhaupt Sinn sich über zeitaufwändige Optimierungen Gedanken zu machen?
Ja, denn die Software nutze ich "selber".


Wenn die Datenbankzugriffe nicht gekapselt sind, wird das allerdings eine größere Operation.
So gesehen sind die "eigentlich" zu 100% gekapselt.
Beispiel:

Meine TISAMEdit Komponente hat eine Verknüpfung zu einer TISAMBase Komponente und kann den da gespeicherten Record lesen und schreiben...

Die Verarbeitung ist ganz normal ENZ

Delphi-Quellcode:
Adressen : TISAMBase;

begin
  Adressen.BTInitIsam;
  Adressen.Open := true;
  RetKey := Adressen.Findkey(KeyNr,SeekNr,SearchKey);
  if (RetKey = SearchKey) and (Adresse.ISAMError = ISAMOK) then
    begin
      Adressen.GetRec(SeekNr);
      Adressen.Edit;
      ...
      Adressen.PutRec(SeekNr);
      Adressen.AddKeys;
    end;
   Adressen.Open := false;
   Adressen.BTDeInitIsam;
end;
Naja und die Findkey, GetRec, Edit, Put, AddKeys usw. werden halt in der ehemaligen ISAM umgesetzt in SQL.

Mavarik

PS.: Aber die eigentlich Frage war immer noch nach der Richtigen FireDac Komponente für die Zwischenschicht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 16:00 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