AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQLite und konkurrierender Zugriff mit FireDAC
Thema durchsuchen
Ansicht
Themen-Optionen

SQLite und konkurrierender Zugriff mit FireDAC

Ein Thema von Codehunter · begonnen am 26. Nov 2018 · letzter Beitrag vom 27. Nov 2018
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

SQLite und konkurrierender Zugriff mit FireDAC

  Alt 26. Nov 2018, 19:28
Datenbank: SQLite • Version: 3.25.3 • Zugriff über: FireDAC
Hallo!

Für ein kleines Spaßprojekt habe ich mir folgendes Konzept ausgedacht: Windows-Netz, Datenbankdatei auf dem Netshare und Clientanwendung auf mehreren Rechnern. Absichtlich ohne Datenbankserver. Das Ganze ist weder Last- noch Zeitkritisch. Die Anwendung funktioniert soweit, lesend wie auch schreibend. Im Grunde wie erwartet gibt es ab und zu wegen der konkurrierenden Zugriffe "Datebase-is-locked"-Fehler. Allerdings habe ich hier und da Hinweise gesehen, dass man SQLite durch verschiedene Connection-Parameter verträglicher machen kann für eine solche Konstellation. Nur hatte ich dabei bisher noch keinen Erfolg. Falls jemand Erfahrungen damit hat wäre ich für Tips dankbar. Alternativ zu FireDAC könnte ich auch mit wenig Aufwand auf ZEOS oder UniDAC wechseln.

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: SQLite und konkurrierender Zugriff mit FireDAC

  Alt 26. Nov 2018, 19:51
(Hervorhebung durch mich)

Zitat:
SQLite assumes that these system calls all work as advertised. If that is not the case, then database corruption can result. One should note that POSIX advisory locking is known to be buggy or even unimplemented on many NFS implementations (including recent versions of Mac OS X) and that there are reports of locking problems for network filesystems under Windows. Your best defense is to not use SQLite for files on a network filesystem.
Quelle: https://www.sqlite.org/lockingv3.html


und

Zitat:
A good rule of thumb is to avoid using SQLite in situations where the same database will be accessed directly (without an intervening application server) and simultaneously from many computers over a network.
Quelle: https://www.sqlite.org/whentouse.html
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: SQLite und konkurrierender Zugriff mit FireDAC

  Alt 26. Nov 2018, 20:02
@Günther: Kenne ich. Die zitierte Seite weist aber selbst darauf hin, dass es inzwischen Verbesserungen gibt.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: SQLite und konkurrierender Zugriff mit FireDAC

  Alt 26. Nov 2018, 20:25
Uh, wenn du meinst?

Zitat:
All processes using a database must be on the same host computer; WAL does not work over a network filesystem.

Einer schreibt und alle anderen lesen jederzeit nur - Das würde ich mich vielleicht noch trauen. Aber mehr nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: SQLite und konkurrierender Zugriff mit FireDAC

  Alt 26. Nov 2018, 20:28
Wenn ich es wüsste hätte ich ja nicht gefragt. SQLite ist hier auch nur ein Versuch. Die Grundidee soll eine Datenbank ohne Serverdienst sein. Der Name der DB ist verhandelbar
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#6

AW: SQLite und konkurrierender Zugriff mit FireDAC

  Alt 26. Nov 2018, 22:11
Die Grundidee soll eine Datenbank ohne Serverdienst sein. Der Name der DB ist verhandelbar
Du wirst damit ein einigermassen stabiles System hinbekommen - egal wie der Name der DB lautet. Ein zuverlässig stabiles System aber nicht.

Wenn eingermassen reicht, dann bist du auf dem richtigen Weg.
Wenn du zuverlässig brauchst, dann verbrennst du gerade einfach nur Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: SQLite und konkurrierender Zugriff mit FireDAC

  Alt 26. Nov 2018, 22:29
Eventuell wäre hier Absolute Database in der MultiUser Edition eine Option. Allerdings kostenpflichtig. Ob es sich für ein Spassprojekt lohnt kannst nur du entscheiden. Ich arbeite sehr gerne damit
Michael Kübler
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#8

AW: SQLite und konkurrierender Zugriff mit FireDAC

  Alt 27. Nov 2018, 09:33
Was ich an dem Szenario interessant finde:
Du sagst, es gibt keine hohe Last, wenig Teilnehmer/ Konkurrenz. Trotzdem tritt aber der Fehler auf.

Tritt er auf, weil Du Lasttest machst und ihn den Fehler provozierst oder tritt er bereits in der beschriebenen Normalsituation auf?

Und wie sind die Parameter konkret?
Nutzeranzahl:
Schreibzugriffe pro Minute, Stunde, Tag:
Gruß, Jo
  Mit Zitat antworten Zitat
EgonHugeist

Registriert seit: 17. Sep 2011
187 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

AW: SQLite und konkurrierender Zugriff mit FireDAC

  Alt 27. Nov 2018, 10:09
@Cody,

der Fehler tritt auf, weil FireDac ein Performace-Blender ist. FireDac setzt alle !DB defaults! zu max Performace-settings. Wogegen alle ander Komponenten das nicht machen. Bei Zeos mußt du das explizit setzen.

Schau mal in die Antwort von:
https://stackoverflow.com/questions/...qlite-database
Dort steht beschieben, wie du FD wieder für konkurierende Zugriffe nutzbar machen kannst.

kleines ABER:
SQLite ist rasend schnell mit den FD settings. Zum Vergeich: https://synopse.info/forum/viewtopic.php?id=4472
Jedoch in den default-settings solltest du mit wirklich erhöhter Disk-Aktivität rechnen.
SQLite ist einfach nicht dafür gemacht, aber kann es.

Geändert von EgonHugeist (27. Nov 2018 um 10:22 Uhr) Grund: typos
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#10

AW: SQLite und konkurrierender Zugriff mit FireDAC

  Alt 27. Nov 2018, 10:59
Interessant!
normal versus exclusive Lock würde ich jetz nicht gleich als Performance Blendung bezeichnen.
Ein Exclusive Lock entspricht ja vollkommen der Bestimmung von sqlite und neben der dadurch gewonnenen Performance, bringt es ja im Zweifel auch "bessere" Daten (wobei ich nichts über die Qualität des "Normal Lock" Modes von sqlite weiß)
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:39 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