Bereitstellung von Access-DBs an Kollegen

Status
Für weitere Antworten geschlossen.

HDready

Benutzer
Mitglied seit
18. Feb 2013
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

ich bin absoluter Neuling in Sachen Synology und hoffe, dass ich überhaupt das richtige Forum hier getroffen habe. Ansonsten würde ich die Moderatoren bitten, dieses Thema entsprechend zu verschieben.

Mein Anliegen ist folgendes: Ich habe eine Access-Datenbank, an der ich zusammen mit Kollegen an verschiedenen Standorten arbeite. Mal mehr, mal weniger. Das heißt jeder hat zu verschiedenen Zeitpunkten (manchmal auch zum gleichen Zeitpunkt) einen oder mehrere Einträge zu ändern oder zuzufügen.

Zuletzt haben wir einfach einen Rechner im Büro stehen gehabt, der 24/7 lief und über Teamviewer von jedem Kollegen angesteuert werden konnte, um so mit mehreren Personen an einer DB arbeiten zu können.
Cloud-Services waren auch schon mal ein Thema, doch stieß es den Kollegen auf, wenn mehrere Clients/Kollegen gleichzeitig mit der Online-Version zu synchronisieren versucht haben, und es so zu doppelten Versionen kam.

Nun haben wir uns eine Synology Disk Station DS413 gekauft. Nun habe ich einem Kollegen in seinem Arbeitsplatz ein Netzlaufwerk erstellt, welches via FTP auf die entsprechende DB zugreift. Der Kollege kann nun Access öffnen und übers das Internet die entsprechende DB aufrufen. Nach dem Schließen steht die aktuelle Version online. Allerdings ist diese Variante alles andere als performant und wenn ich die DB als Anwender zunächst lokal zwischenspeichere um sie dann wieder hochzuladen, besteht die Gefahr, dass sich die Kollegen ihre Versionen gegenseitig überschreiben.

Hat jemand vielleicht einen Tipp für mich, wie ich mein Problem etwas eleganter und vor allem performanter lösen kann?

Danke im Voraus!

Viele Grüße,
HD
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.991
Punkte für Reaktionen
629
Punkte
484
Hallo und Willkommen im Forum!

Wenn du von "Arbeiten an einer DB" sprichst, meinst du damit jetzt, dass dort programmiert wird? Oder werden nur Daten in Tabellen eingegeben/verändert?
Bei letzterem würde man die Datenbank ja sinnvollerweise in ein Front-/Backend aufteilen, so dass alle gemeinsam auf die DB zugreifen können. Das Backend würde dann auf den Server - der DS - liegen und die Frontends lokal bei den einzelnen Mitarbeitern, die dann über gemappte Laufwerke auf das Backend zugreifen.
Schwierig wird es, wenn, wie du schreibst, ein Kollege über das Internet auf die DB zugreift. Das ist natürlich schonmal per se langsam, wenn nicht die nötige Bandbreite an Internetverbindung besteht.
 

maDDin_1338

Benutzer
Mitglied seit
23. Apr 2012
Beiträge
823
Punkte für Reaktionen
0
Punkte
0
wenn ihr schon einen NAS gekauft habt, dann solltet ihr euch vll überlegen ob ihr nicht die mysql db nutzen wollt..

denn Access.. naja.. ich äußer mich mal nicht dazu ;)
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.991
Punkte für Reaktionen
629
Punkte
484

HDready

Benutzer
Mitglied seit
18. Feb 2013
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Zunächst mal meinen herzlichen Dank für die freundliche Aufnahme hier im Forum.
Nun zum sachlichen:

Wenn du von "Arbeiten an einer DB" sprichst, meinst du damit jetzt, dass dort programmiert wird?
- Es werden nur Daten in Tabellen eingegeben/verändert.

Bei letzterem würde man die Datenbank ja sinnvollerweise in ein Front-/Backend aufteilen, so dass alle gemeinsam auf die DB zugreifen können. Das Backend würde dann auf den Server - der DS - liegen und die Frontends lokal bei den einzelnen Mitarbeitern, die dann über gemappte Laufwerke auf das Backend zugreifen.
- Das hört sich sinnig an. Lässt sich das innerhalb von Access realisieren? Oder wie gehe ich da vor? Hast du ggf. vll. sogar einen Link für mich, wo ich mich belesen kann?

Schwierig wird es, wenn, wie du schreibst, ein Kollege über das Internet auf die DB zugreift. Das ist natürlich schonmal per se langsam, wenn nicht die nötige Bandbreite an Internetverbindung besteht.
- Ja, das dachte ich mir schon, aber ich will dennoch das Beste rausholen.

wenn ihr schon einen NAS gekauft habt, dann solltet ihr euch vll überlegen ob ihr nicht die mysql db nutzen wollt.
- ich hatte in der Tat auch schon überlegt, ob es nicht Sinn macht, die Access DB zu SQL zu migrieren. Je nach Umfang könnte man dann ein kleines Front- und Backend in php/html erstellen um damit zu arbeiten. Aber dafür hätte ich nun auch nicht unbedingt den NAS kaufen müssen, nicht wahr? ;-)
Nun gut, aber wenn mir Access vielleicht eine ähnliche Möglichkeit bietet, wie Puppetmaster meinte, dann spare ich mir ja erhebliche Arbeit und meine Kollegen können weiterhin mit dem altbekannten Access umgehen. Das wäre optimal.
Ich bin gespannt, ob Puppetmaster (oder auch gerne jemand anders) mir diese Idee ein wenig erläutern könnte, oder auf gute Quellen im Inet verweisen kann.

Danke schon mal für euer Feedback!
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.991
Punkte für Reaktionen
629
Punkte
484
Na, Quellen zur Aufteilung einer Access-DB im Netz habe ich jetzt keine parat, sind aber dank Google schnell gefunden.
Im Übrigen ist das ein in eingebauter Wizard in MS Access, der das für dich erledigen kann (ist dann nicht immer so, wie man es selbst gemacht hätte, aber prinzipiell macht der das schon. :) )

Aufteilung1

Aufteilung2

Da lässt sich aber auch noch weitaus mehr finden.
 

HDready

Benutzer
Mitglied seit
18. Feb 2013
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Ja dann finde ich da schon selbst was zu. Solange ich weiß, dass das mit Access zu realisieren ist, kann ich Google ja fragen.

Danke für die Info schon mal!
 

süno42

Benutzer
Mitglied seit
29. Nov 2012
Beiträge
224
Punkte für Reaktionen
0
Punkte
0
Moin,

ich kenne Access nur rudimentär. Aber generell ist es aus Leistungsgesichtspunkten eigentlich keine gute Idee, die Datenbankdatei auf einem Netzlaufwerk zu speichern und ohne DBMS konkurrierend darauf zuzugreifen. Hier entsteht in der Regel ein Flaschenhals, da die Synchronisierung hier maßgeblich auf Dateisperren basiert, die das zugrunde liegende Netzwerkprotokoll auch unterstützen muß. Entweder muß der Client die gesamte DB-Datei sperren oder greift auf eine globale Sperrdatei zu, die Sperren für einzelne Datensätze oder Tabellen der DB-Datei vermerkt. Aber auch diese Datei muß bei einem Zugriff kurzzeitig voll gesperrt werden. Alternativ ist aus technischer Sicht unter Einschränkungen auch eine optimistische Synchronisierung möglich, welche die Sperrzeiten der DB-Datei minimiert. Ich vermute mal, Access unterstützt letzteres nicht.

Mit einem vollständigen DBS bist Du besser beraten (die Diskstation bietet z.B. mysql an. Postgresql läuft auch, wird meines Wissens aber von Haus aus nur intern genutzt). Einige Vorteile eines DBMS sind…

  • Globaler Transaktionsmanager
  • Warteschlangen
  • Pessimistische Sperren
  • Optimistische Synchronisierung
  • usw.

Was Dein favorisiertes DBS davon unterstützt, mußt Du selbst nachlesen. Aber der Aufwand, auf ein DBMS umzusatteln, lohnt sich. Zudem kann Dir ein fehlerhafter Client nicht die DB zerschießen/löschen, bei der o.g. Access-Lösung ist dies möglich. Zudem sollte eine Access-Anbindung an eine SQL-Datenbank mittels ODBC problemlos möglich sein.


Gruß,
Süno42
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.991
Punkte für Reaktionen
629
Punkte
484
ich kenne Access nur rudimentär. Aber generell ist es aus Leistungsgesichtspunkten eigentlich keine gute Idee, die Datenbankdatei auf einem Netzlaufwerk zu speichern und ohne DBMS konkurrierend darauf zuzugreifen. Hier entsteht in der Regel ein Flaschenhals, da die Synchronisierung hier maßgeblich auf Dateisperren basiert, die das zugrunde liegende Netzwerkprotokoll auch unterstützen muß.

Access kann sehr wohl und gut mit einem auf ein Netzlaufwerk ausgelagerten Backend arbeiten. Das ist bei uns gelebte Praxis. In unseren DBs arbeiten ca. 20 Mitarbeiter gleichzeitig in einer DB. Klar ist natürlich, dass man gewisse Spielregeln beim Multiuserbetrieb einhalten muss welche beim Datenbankdesign berücksichtigt werden sollten. Die "Sperrdatei" die Access bei Zugriff anlegt ist dabei lediglich eine Datei, in der Access Informationen zu den angemeldeten Usern ablegt, die bei einem Schreibkonflikt herangezogen werden. Diese Datei ist gesperrt, richtig, aber das an sich stellt ja kein Problem dar.
 

süno42

Benutzer
Mitglied seit
29. Nov 2012
Beiträge
224
Punkte für Reaktionen
0
Punkte
0
Access kann sehr wohl und gut mit einem auf ein Netzlaufwerk ausgelagerten Backend arbeiten. Das ist bei uns gelebte Praxis. In unseren DBs arbeiten ca. 20 Mitarbeiter gleichzeitig in einer DB. Klar ist natürlich, dass man gewisse Spielregeln beim Multiuserbetrieb einhalten muss welche beim Datenbankdesign berücksichtigt werden sollten. Die "Sperrdatei" die Access bei Zugriff anlegt ist dabei lediglich eine Datei, in der Access Informationen zu den angemeldeten Usern ablegt, die bei einem Schreibkonflikt herangezogen werden. Diese Datei ist gesperrt, richtig, aber das an sich stellt ja kein Problem dar.

Ich habe nicht gemeint, daß es nicht geht. Aber schön, daß Du schon Praxiswerte zur Hand hast. Vielleicht kannst Du noch ein paar mehr Details geben (Update- und Leserate), damit HDready die Entscheidung leichter fällt. Aus Skalierbarkeitsgründen empfehle ich dennoch weiterhin meinen o.g. Vorschlag. Weiterhin schützt die Netzlaufwerklösung nicht gegen zerschießen bzw. löschen der DB-Dateien. Aber um das Thema abzukürzen, letztendlich muß HDready selbst wissen, welche Anforderungen seine DB-Lösung erfüllen muß. Wir können hier nur Empfehlungen geben, wobei jeder die Prioritäten anders setzt.


Grüße,
Süno42
 

klaas

Benutzer
Mitglied seit
30. Sep 2012
Beiträge
173
Punkte für Reaktionen
19
Punkte
18
... - Das hört sich sinnig an. Lässt sich das innerhalb von Access realisieren? Oder wie gehe ich da vor? Hast du ggf. vll. sogar einen Link für mich, wo ich mich belesen kann? ...
Sieh mal in Access unter Extras, Datenbank-Dienstprogramme nach. Da steht der "Assistent zur Datenbankaufteilung". Aber Achtung! Vorher unbedingt zur Sicherheit die komplette Datenbank unter einem anderen Namen sichern.

Nach der Aufteilung stehen die Daten einmal zentral zur Verfügung und der Programmteil, ohne Daten kann auf jeden Client kopiert werden. Damit werden nur die Anfragen im Netz übertragen und als Antwort die gemäß Anfrage gefilterten Daten. Selbst auf einem einzelnen Rechner, ohne jedes Netzwerk, ist das bei größeren und komplizierteren DB eine gute Lösung.

Access hat viele Vorteile, der wichtigste ist die leichte Handhabbarkeit auch für db-unerfahrene Anwender. Ein Umstieg auf SQL sollte meiner Meinung nach nur dann vorgenommen werden, wenn man mit Access nicht mehr weiterkommt.

Klaas
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat