AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi "Single-User" -> "Multi-User" + SQLite
Thema durchsuchen
Ansicht
Themen-Optionen

"Single-User" -> "Multi-User" + SQLite

Ein Thema von wjjw · begonnen am 21. Feb 2019 · letzter Beitrag vom 24. Feb 2019
Antwort Antwort
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: "Single-User" -> "Multi-User" + SQLite

  Alt 23. Feb 2019, 04:46
Ich persönlich würde die Kommunikation und das DB Handling in ein eigenes Serverprogramm ohne GUI (Dienst/Daemon) auslagern. Das Serverprogramm nimmt die Daten der Clients entgegen, packt diese in eine Que. Ein eigener Thread des Serverprogramm arbeitet die Que ab und trägt diese in die DB ein.

Vorteile:

- Keine Synchronisatzion mit einer GUI
- Keine Blockade der Clients
- Wenns zuviel wird, kann man das ganze auf einen eigenen Rechner auslagern.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: "Single-User" -> "Multi-User" + SQLite

  Alt 23. Feb 2019, 11:05
Ich persönlich würde die Kommunikation und das DB Handling in ein eigenes Serverprogramm ohne GUI (Dienst/Daemon) auslagern. Das Serverprogramm nimmt die Daten der Clients entgegen, packt diese in eine Que. Ein eigener Thread des Serverprogramm arbeitet die Que ab und trägt diese in die DB ein.
Sicherlich ein guter Vorschlag!

Aber muss man nicht in jeder App, egal ob Windows, iOS oder Android, die Datenbankzugriffe kapseln?

Ich hatte noch nie ne App bei der ich nicht Daten in einem Thread weg schreibe oder Daten lese, während die UI auch Daten anfordert oder schreiben möchte?

Wenn ich also immer asynchron mit CRUD arbeite habe ich "keine" Probleme egal wie die Anwendung aus sieht.

Es gibt natürlich Situationen, wo die UI auf ein Ergebnis der Datenbank warten muss. Aber wovon sprechen wir hier? 250ms? 1s? 3s?

Wenn ich auf einen Button klicke, erwarte ich eine sofortige Reaktion. IMMER, damit sich die Anwendung flüssig "anfühlt". Wenn also ein Zugriff länger dauert, muss ich sowieso eine Art von Stundenglas/Wait-Animation anzeigen.
Naja und die kann sich auch nur flüssig drehen, wenn mein DB-Zugriff in einem eigenen Thread ist...

Also sind ALLE Datenbankzugriff immer in einem Thread. Hier also einen Queue einzufügen, die dann auch gerne Datenbankanfragen von mehrerer Quellen abhandeln kann ist kein Hexenwerk. Wenn ich dann noch anfragen der lokalen App bevorzuge, läuft alles schnell und sauber.

Wäre es nicht schön, wenn es für Firemonkey ein Framework gäbe, dass so etwas kann?

Mavarik
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: "Single-User" -> "Multi-User" + SQLite

  Alt 24. Feb 2019, 06:22
Naja, einfach ist es schon.

Die Frage nach der Priorisierung der Zugriffe, ist eine Frage, wie aktuell die Daten für die Clients sein müssen.

Beispiel:

Client A braucht unbedingt die Daten von Client B, die dieser gerade in die Que zum eintragen geschickt hat.

Dann sollte der Schreibzugriff natürlich oberste Prio haben.

Eine andere Situation, die man noch berücksichtigen könnte, wäre, das die Clients auch "Offline" arbeiten können sollen. Dann wärs sinnvoll die Clients mit einer eigenen "lokalen" DB arbeiten zu lassen, die dann entsprechend mit der zentralen Version synchronisiert werden.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: "Single-User" -> "Multi-User" + SQLite

  Alt 24. Feb 2019, 12:37
Angeblich sollen DBMS das von Hause aus können, aber ich kann mich auch irren.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 23:59 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