AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQLite - Wie Multiuser Zugriff regeln?
Thema durchsuchen
Ansicht
Themen-Optionen

SQLite - Wie Multiuser Zugriff regeln?

Ein Thema von Satty67 · begonnen am 1. Dez 2010 · letzter Beitrag vom 4. Dez 2010
Antwort Antwort
Seite 1 von 3  1 23      
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#1

SQLite - Wie Multiuser Zugriff regeln?

  Alt 1. Dez 2010, 14:48
Datenbank: SQLite • Version: 3.x • Zugriff über: universell
Hallo,

eine Anwendung (Fuhrpark-Verwaltung) speichert Daten in einer SQL-Datenbank. Über eine Zwischenschicht (einfach ein Object, dass die Daten bereitstellt) wird nun die Möglichkeit geboten MSSQL, Firebird oder SQLite zu verwenden.

Grundsätzlich empfehle ich, SQLite nur für Einzelplatz-Rechner zu verwenden, will aber auch hier eine Notlösung für 2-3 Clientrechner bieten.

Es wird meistens lesend auf die Datenbank zugegriffen. Schreibzugriffe bei neuem Fahrzeug, Werkstattbesuche oder Verbrauchswerte eingetragen oder neue Bilder eingefügt werden. Denke also, das es sehr selten zu Schreibkollisionen kommen wird.

Meine Lösung über eine Lock-Table ist für SQLite nicht sicher, da ja kein zentrales DBMS den Zugriff regelt, sondern dezentral die Clientrechner per DLL auf die DB zugreifen. Im worst-case locken zwei Clientrechner die gleiche Tabelle/Datensatz.

***

Meine erste Idee und bisher einziger Ansatz ist, das ich eine Datei zur Datenbank mit anlege. Also neben Daten.sqlite noch eine Daten.lock. Diese Datei Daten.lock wird vom Clientrechner exclusiv (ShareDenyAll) geöffnet, bevor ein Schreibzuriff innerhalb der Daten.sqlite erfolgt.

Welche Lösungen würde Ihr vorschlagen?
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: SQLite - Wie Multiuser Zugriff regeln?

  Alt 1. Dez 2010, 15:38
Welche Lösungen würde Ihr vorschlagen?
Keine.

Wieso bietest Du überhaupt unterschiedliche DB an? Was Du da machst, hat weder Hand noch Fuss. Du läufst mit so einer Krückenlösung Gefahr, das der Kunde sich die Datenbank zerschießt.

Schmeiss SQLLite doch einfach aus dem Portfolio und verwende nur FB, und von mir aus auch MSSQL (aber wieso eigentlich?).
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: SQLite - Wie Multiuser Zugriff regeln?

  Alt 1. Dez 2010, 15:52
... und von mir aus auch MSSQL (aber wieso eigentlich?).
Wenn man nur ein DB anbietet so ist man auch für die nachgelagerten Jobs wie Backups, ... verantwortlich.
Hat man ein DB im Angebot die der Kunde eh schon hat (i.d.R. MS SQL Server, MySQL oder Oracle) so kann man diese Installation verwenden und somit auch vorhandene Backupmechanismen, ...
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#4

AW: SQLite - Wie Multiuser Zugriff regeln?

  Alt 1. Dez 2010, 16:32
Wieso bietest Du überhaupt unterschiedliche DB an?
Weil es geht... der Zugriff auf SQL-Server Datenbanken ist problemlos und wird über ein jeweils aufs DBMS spezialisiertes Objekt geregelt, es werden auch noch weitere Datenbanken dazu kommen. Innerhalb des Programmes gibt es eine genormte Schnittstelle zum Daten-Objekt, XML usw. wird darüber auch angesprochen werden. (vgl. Linq)

Das ist aber unwichtig...

Die Frage ist nur, wie ich einen sicheren Multiuser-Zugriff mit SQLite lösen könnte.

Gibt es keine sichere Lösung, wird es Singleuser beschränkt, aber auf jeden Fall drin bleiben.

// Es wäre Schade, wenn die Diskussion an der Frage vorbeiläuft, weil ich das aktuelle Einsatzgebiet gleich mit beschrieben habe.
  Mit Zitat antworten Zitat
Florian Hämmerle
(Gast)

n/a Beiträge
 
#5

AW: SQLite - Wie Multiuser Zugriff regeln?

  Alt 1. Dez 2010, 16:36
Du könntest eine Liste dazugeben, welche Tabellen gerade in Gebrauch sind. Ist das der Fall bekommt der zweite, der auf die Tabelle zugreifen möchte eine Meldung angezeigt, dass er es in einigen Sekunden noch einmal versuchen soll.

mfg Florian
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: SQLite - Wie Multiuser Zugriff regeln?

  Alt 1. Dez 2010, 16:43
Einfache Lösung?
SQLLite nur für SingleUserSysteme.

Sobald es mehr wird, dann ein richtiges DBMS nutzen, welches von sich aus MultiUser anbietet.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#7

AW: SQLite - Wie Multiuser Zugriff regeln?

  Alt 1. Dez 2010, 17:15
Du könntest eine Liste dazugeben, welche Tabellen gerade in Gebrauch sind.
Eine einfache Variante ist meine aktuelle Idee (via gelockter beliegender Datei). Es darf schon unkomfortabel sein, also muss nicht Tabellen einzeln sperren, sondern die ganze Datenbank ist völlig Ok. Denke werde in der Richtung mal weiter testen. (Die *.sqlite Datei selbst kann ich leider nicht "sporadisch" sperren)

Wie himitsu auch geschrieben hat, für richtiges Multiuser muss ein Server-System verwendet werden. Es wäre nur gut, wenn mit SQlite eine Art Basis-Muliuser-Zugriff möglich wäre z.B. für Heimnetzwerke ohne Server.
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#8

AW: SQLite - Wie Multiuser Zugriff regeln?

  Alt 1. Dez 2010, 17:48
Wieso bietest Du überhaupt unterschiedliche DB an?
Wir haben auch einige Kunden, die uns an die Gurgel springen würden, täten wir nicht MSSQL und Oracle unterstützen. Nichtsdestowenigertrotz ist der Einsatz von SQLite für eine Multiuser-Umgebung - Pardon - schwachsinnig.

Ich würde nicht anfangen, mir eine Lösung zusammenzufrickeln, nur weil ich unbedingt bei SQLite MU brauche. Wenns für den Kunden billig sein soll, dann würde ich ihn eher dazu anhalten, MySQL zu installieren, wenn er eine MU-Umgebung benötigt. Das müsstest du natürlich noch unterstützen, ist ja aber nichts unmögliches.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#9

AW: SQLite - Wie Multiuser Zugriff regeln?

  Alt 1. Dez 2010, 18:02
Ja, es sollen viele DBMS unterstützt werden, gruppiert nach Fähigkeiten.

Wenn es zu riskant ist, dann schiebe ich SQlite in die SingleUser-Gruppe zusammen mit XML, INI usw. (letztere sind sogar nur SingleTable)
  Mit Zitat antworten Zitat
webcss

Registriert seit: 10. Feb 2006
255 Beiträge
 
Delphi XE2 Professional
 
#10

AW: SQLite - Wie Multiuser Zugriff regeln?

  Alt 1. Dez 2010, 20:38
Schau Dir mal die Patterns Optimistic-Offline-Locking oder Pessimistic-Offline-Locking an. Die könnten Dir weiterhelfen.
"Wer seinem Computer Mist erzählt, muss immer damit rechnen..." (unbekannt)
"Der Computer rechnet damit, dass der Mensch denkt..." (auch unbekannt)
mein blog
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 05:36 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