Home > Artikel > Ausgabe 6/2011 > Datenbanken im Mehrbenutzerbetrieb

Datenbanken im Mehrbenutzerbetrieb

  PDF ansehen

  Download PDF und Beispieldatenbank

Wenn Sie eine Datenbank aufteilen und die Benutzer von mehreren Backends aus auf die Daten im Backend zugreifen, gibt es eine neue Herausforderung: Wie schnell sollen Änderungen an Daten auf den anderen Rechnern angezeigt werden? Was geschieht, wenn mehrere Benutzer gleichzeitig auf einen Datensatz zugreifen und diesen ändern? Diese und weitere Fragen beantwortet dieser Artikel.

Beispieldatenbanken

Die Beispieldatenbanken zu diesem Artikel heißen 1106_Multiuser_fe1.mdb, 1106_Multiuser_fe2.mdb und 1106_Multiuser_be.mdb. Sie finden diese im Download zu diesem Artikel. Die Datenbanken sind das Ergebnis der Aufteilung einer Datenbank in Frontend und Backend. Details hierzu finden Sie im Artikel Datenbanken aufteilen.

Mehrbenutzertest

Die Mehrbenutzerfähigkeiten einer Frontend-Backend-Konstellation können Sie leicht testen. Dazu brauchen Sie noch nicht einmal mehrere Rechner. Erstellen Sie einfach ein weiteres Frontend, indem Sie die Datei 1106_Multiuser.mdb kopieren und unter einem anderen Namen wieder einfügen. Öffnen Sie nun beide Instanzen dieser Datenbank. Ändern Sie einen Datensatz in der ersten Instanz und betrachten Sie, was mit dem gleichen Datensatz in der zweiten Instanz geschieht. Es dauert eine Weile, aber dann wird die Änderung dort automatisch angezeigt.

Anzeigeaktualisierung

Je nach Anforderungen soll die Anzeige möglichst schnell aktualisiert werden. Dies können Sie über entsprechend Optionen beeinflussen:

Access 2003 und älter: Öffnen Sie den Optionen-Dialog über den Menüeintrag Extras|Optionen und stellen Sie die Eigenschaft Weitere|Intervall für Anzeigeaktualisierung (s) auf die Anzahl Sekunden ein, nach der die Daten erneut abgefragt werden sollen. Wenn Sie hier beispielsweise eine 1 eintragen, wird die Anzeige jede Sekunde aktualisiert.

Access 2007: Öffnen Sie den Optionen-Dialog über die Schaltfläche Access-Optionen des Office-Menüs. Die gesuchte Eigenschaft finden Sie unter Er­wei­tert|Er­weitert|Anzeigeaktualisierungs­inter­vall (s).

Access 2010: Hier öffnen Sie die Access-Optionen mit dem Ribbon-Eintrag Datei|Optionen. Die Option lautet Client­ein­stel­lun­gen|Erweitert|Anzeige­aktuali­sierungsintervall (s). Sie finden diese in Bild 1.

Einstellen des Aktualisierungsintervalls

Bild 1: Einstellen des Aktualisierungsintervalls

Diese und weitere Einstellungen, die Sie in den Access-Optionen vornehmen, wirken sich erst nach dem Schließen und dem erneuten Öffnen der aktuellen Datenbank aus.

Gleichzeitiges Bearbeiten

Sie können das Verhalten von Access beim gleichzeitigen Bearbeiten eines Datensatzes durch zwei Benutzer beeinflussen. Standardmäßig können mehrere Benutzer den gleichen Datensatz bearbeiten, ohne das etwas geschieht. Früher oder später könnte jedoch Folgendes geschehen:

  • Benutzer 1 ändert ein Feld des Datensatzes, ohne diesen zu speichern.
  • Benutzer 2 ändert ebenfalls ein Feld dieses Datensatzes. Auch er speichert die Änderungen nicht.
  • Benutzer 1 speichert den Datensatz (beispielsweise durch den Wechseln zu einem anderen Datensatz).
  • Benutzer 2 möchte seine Änderungen ebenfalls speichern. Er enthält allerdings die Meldung aus Bild 2.
  • Meldung eines Schreibkonflikts

    Bild 2: Meldung eines Schreibkonflikts

Diese Meldung verlangt vom Benutzer eine Entscheidung: Soll er seine Version des Datensatzes speichern und somit gegebenenfalls die Änderungen des anderen Benutzers überschreiben? Oder soll er den aktuellen Stand des durch ihn geänderten Datensatzes in die Zwischenablage kopieren, um zu prüfen, wie die Änderungen des anderen Benutzers aussehen? Oder verwirft er seine eigenen Änderungen zugunsten der Änderungen des anderen Benutzers?

Je weniger Datensätze es gibt und je mehr Benutzer diese bearbeiten, desto höher ist das Risiko eines Schreibkonflikts.

Im Idealfall bearbeitet jeder Mitarbeiter seinen eigenen Kreis von Daten, beispielsweise Bestellungen für bestimmte Kunden. Dann ist das Auftreten eines Schreibkonfliktes sehr unwahrscheinlich.

Das Zulassen von Änderungen von Datensätzen, die sich bereits in einem geänderten Zustand befinden, nennt sich übrigens Optimistisches Sperren. Das Gegenteil dazu erläutern die folgenden Abschnitte.

Pessimistisches Sperren

Sie können Schreibkonflikte jedoch auch auf andere Weise unterbinden. Dazu verwenden Sie eine weitere Option namens Standard bei Datensatzsperrung, die sich im Optionen-Dialog der verschiedenen Access-Versionen in unmittelbarer Nähe der soeben vorgestellten Option zum Einstellen der Aktualisierungsgeschwindigkeit befindet (siehe Bild 3).

Arten der Sperrung von Datensätzen

Bild 3: Arten der Sperrung von Datensätzen

Die Standardeinstellung lautet Keine Sperren und wirkt sich durch nachträgliche Schreibkonflikte bei gleichzeitiger Änderung des gleichen Datensatzes aus. Wenn Sie hier die Einstellung Alle Datensätze wählen, wird die komplette Tabelle beim Bearbeiten eines Datensatzes gesperrt, bei Bearbeiteter Datensatz nur der aktuelle Datensatz.

Aber Achtung: Die Optionen wirken sich nur auf das Erstellen neuer Formular aus! Wenn Sie also ein bestehendes Formular verwenden und die Option Standard bei Datensatzsperrung wählen, ändert sich die Sperrungsstrategie für Datensätze in bestehenden Formularen nicht. Sie müssen dann zunächst das betroffene Formular in der Entwurfsansicht öffnen und die Option Daten|Datensätze sperren wie in Bild 4 einstellen.

Sperrungsoptionen im Formularentwurf

Bild 4: Sperrungsoptionen im Formularentwurf

Wenn der bearbeitete Datensatz gesperrt wird, kann Folgendes geschehen:

  • Benutzer 1 ändert den Wert eines Feldes dieses Datensatzes.
  • Benutzer 2 betrachtet gerade genau diesen Datensatz im Formular. Bei der nächsten Aktualisierung der Anzeige erscheint als Datensatzmarkierer das Gesperrt-Symbol wie in Bild 5. Spätestens aber nach der ersten Änderung des Datensatzes erscheint dieses Symbol und es ertönt ein akustisches Signal.
  • Sperrung eines Datensatzes, der gerade in einer anderen Instanz bearbeitet wird

    Bild 5: Sperrung eines Datensatzes, der gerade in einer anderen Instanz bearbeitet wird

  • Benutzer 2 kann in diesem Fall keine Änderungen am Datensatz vornehmen, bis Benutzer 1 den Datensatz gespeichert hat. Der Datensatzmarkierer zeigt dann wieder das übliche Dreieck an.

Satz- oder seitenweise Sperrung

Es gibt noch eine weitere Option, die das Sperrverhalten beeinflusst. Voraussetzung ist, dass Sie die Option Datensätze sperren auf Bearbeiteter Datensatz eingestellt haben. In diesem Fall macht sich die Option Datenbanken mit Sperrung auf Datensatzebene öffnen bemerkbar, die Sie nur in den Access-Optionen, nicht aber in Formularen einstellen können. Der Hintergrund ist, dass Access früher immer nur komplette Speicherseiten sperren konnte, in denen sich ein bearbeiteter Datensatz befand.

Eine Speicherseite war früher 2.048 Zeichen groß (mittlerweile 4.096 Zeichen). Wenn ein bearbeiteter Datensatz also nur Zeichen groß ist, wird dennoch die gesamte Speicherseite gesperrt, in der sich der Datensatz befindet – und somit einige benachbarte Datensätze. Sie können dies ausprobieren, indem Sie die Option Datenbanken mit Sperrung auf Datensatzebene öffnen aktivieren, im ersten Frontend einen Datensatz bearbeiten und dann im zweiten Frontend versuchen, den gleichen Datensatz und die umliegenden Datensätze zu editieren. Wenn Sie im ersten Frontend den ersten Datensatz der Tabelle tblArtikel bearbeiten, sind im zweiten Beispielfrongend immerhin rund 50 Datensätze gesperrt!

Wenn dies für Ihren Anwendungsfall nicht akzeptabel ist, aktivieren Sie die Option Datenbanken mit Sperrung auf Datensatzebene öffnen. In diesem Fall wird nur der tatsächlich in Bearbeitung befindliche Datensatz gesperrt.

Performance

Die verschiedenen Einstellungen wirken sich auch auf die Performance einer Access-Anwendung im Netzwerk aus. Die optimistische Sperrung ist die Einstellung mit den geringsten Einbußen bezüglich der Performance.

Bei der pessimistischen Sperrung ist in performance-kritischen Umgebungen die Variante mit der seitenweisen Sperrung vorzuziehen. Das Sperren auf Datensatzebene ist die langsamste der genannten Optionen.

Beachten Sie, dass sich das Intervall der Anzeigeaktualisierung ebenfalls auf die Performance auswirkt.

Zusammenfassung und Ausblick

Access bietet einige Alternativen für den Umgang mit Datenbanken in Mehrbenutzerumgebungen an. Welche Sie davon wählen, hängt vom konkreten Anwendungsfall ab.