TigerJython4Kids
HomeTurtlegrafikRobotikDatenbanken
multiuser

9. MEHRBENUTZER-DATENBANK

 

 

DU LERNST HIER...

 

wie du eine Datenbank für die gemeinsame Nutzung durch mehrere Benutzer einrichten kannst und welche Vorsichtsmassnahmen du dabei beachten musst.

Bisher warst du der einzige Benutzer deiner Datenbank, die sich als Datei mit der Dateierweiterung .db auf deinem Computer befindet. Du konntest eine bestehende Tabelle aus der Datenbank holen, bearbeiten und wieder abspeichern. Es ist aber durchaus denkbar, dass du die Datenbank auch anderen Benutzer zur Verfügung stellen möchtest, die gleichzeitig darauf zugreifen möchten. Das kannst du beispielsweise so realisieren, dass du das Verzeichnis, in dem sich die Datenbank befindet, über ein Computernetzwerk frei gibst oder die Datenbank auf einer Cloud beispielsweise Dropbox speicherst und anderen Benutzern Zugriffsrecht erteilst.

Solange die einzelnen Benutzer auf die Daten nur lesend zugreifen, ergeben sich bei gleichzeitiger Nutzung keine weiteren Probleme. Können die Benutzer hingegen die Daten auch verändern, muss du Vorsichtsmassnahmen ergreifen, damit die Daten der Datenbank korrekt bleiben.

 

 

MUSTERBEISPIEL

 

Wiederum gehst du von der Tabelle persons aus, die in der Datenbank schule.db gespeichert ist. Mit dem gleichen Programm wie in Kapitel 3 erstellst du zu Beginn die Tabelle und speicherst sie in der Datenbank.

from dbtable import *

persons = DbTable('id', 'name', 'vorname', 'wohnort', 'geschlecht', 'jahrgang') 
persons.insert(1,'Huber','Lia','Bern','w', 2002)
persons.insert(2,'Meier','Luca','Basel','m', 2003)
persons.insert(3,'Frech','Marc','Bern','m', 2000)
persons.insert(4,'Bauer','Jan','Luzern','m', 2003)
persons.insert(5,'Zwahlen','Noah','Thun','m', 2002)
persons.insert(6,'Meier','Nina','Biel','w', 2001) 
print(persons)
persons.save('schule.db')          
► In Zwischenablage kopieren

 

Zwei Benutzer  A und B wollen nun die Datenbank gemeinsam nutzen. (Du kannst dies so simulieren, dass du zwei TigerJython-Fenster öffnest und zwei Programme so schreibst, dass sie auf die gleiche Datenbank zugreifen.)

Um die Probleme zu demonstrieren, die sich dabei ergeben können, spielst du folgendes Szenario durch:

A und B führen kurz nacheinander folgendes Programm aus, um die Daten zu lesen:

from dbtable import *

persons = DbTable()
persons.restore("schule.db")
print(persons)        
► In Zwischenablage kopieren

Wie du erwartest, "sehen" A und B dieselben Daten. Als nächstes führt A einen Update eines Datensatzes durch, beispielsweise ändert er den Wohnort von Bauer Paul, da dieser nach Zürich umgezogen ist.

from dbtable import *

persons = DbTable()
persons.restore("schule.db")
print(persons)
persons.update(name = "Bauer", vorname = "Jan")(wohnort = "Zürich")
print(persons)
persons.save("schule.db")
► In Zwischenablage kopieren

Etwas später ändert B den Wohnort von Zwahlen Noe, da diese nun in Biel wohnt.

from dbtable import *

persons = DbTable()
persons.restore("schule.db")
print(persons)
persons.update(name = "Huber", vorname = "Lia")(wohnort = "Davos")
print(persons)
persons.save("schule.db")
► In Zwischenablage kopieren

Voller Vertrauen, ihre Arbeit gewissenhaft ausgeführt zu haben, beenden A und B ihre Tätigkeit. Etwas später schaut sich ein Benutzer C mit folgendem Programm die Personendaten an:

from dbtable import *

persons = DbTable()
persons.restore("schule.db")
print(persons)
► In Zwischenablage kopieren

Was sieht der Nutzer C als Wohnorte von Bauer Paul und Zwahlen Noe? Begründe deine Antwort.

 

 

MERKE DIR...

 

Bei der Benutzung von Datenbanken durch mehrere Personen, welche die Datenbank verändern können, ergeben sich heikle Zugriffskonflikte. Diese müssen durch besondere Vorsichtsmassnahmen vermieden werden. Im nächsten Kapitel lernst du, wie du dabei vorgehen kannst.

 

 

ZUM SELBST LÖSEN

 

1.

Erstelle ein Dropbox-Konto und stelle die Informationen über die 100 Top Songs, die du aus der TigerJython-Datenbank extrahieren kannst, mehreren Benutzern zur Verfügung. Dazu kannst du ein lokales Dropbox-Verzeichnis synchronisieren, damit die Datenbank bei einer Veränderung automatisch in die Cloud hochgeladen wird.

2.

Stelle die Song-Daten anderen Benutzern zur Verfügung, indem du die Datenbank-Datei (oder den ganzen Ordner) frei gibst. Du solltest den Nutzern aber nur Leserechte einräumen, da du der einzige sein willst, der die Daten verändern kann (d.h. der deine Songliste verändern darf).


3.

Verändere deine Song-Daten und frage andere Nutzer, was sie zu deiner neuen Reihenfolge der besten Songs meinen. (Du kannst dieses Szenario auch allein durchspielen, indem du mehrere TigerJython-Fenster gleichzeitig öffnest.)

   

 

9-1
Fachliche Hinweise:

Man spricht auch von der Konsistenz der Datenbank, die es zu bewahren gilt.

9-2
Fachliche Hinweise:

Du musst die Cloud so einrichten, dass die Datei in deinem lokalen Dateisystem sichtbar ist, beispielsweise indem du bei Dropbox das lokale Dropbox-Verzeichnis synchronisierst