Ergebnis 1 bis 9 von 9

Thema: Ideen/Ratschläge für eine Multiuser Datenbank.

  1. #1
    cem
    cem ist offline
    TP-Junior
    Registriert seit
    Jun 2012
    Ort
    Deutschland
    Beiträge
    7

    Ideen/Ratschläge für eine Multiuser Datenbank.

    Hallo Community.

    Mein Ziel ist es eine DB zu erstellen wo mehrere Clients an einer MySQL DB gleichzeitig arbeiten können. Jeder Client soll Datensätze die von einer MySQL DB kommend bearbeiten können.

    Szenario:
    - MySQL DB ist online auf einem Server.
    - MySQL DB (Kundendaten) mit täglich 2000 Datensätzen sind zu bearbeiten (upzudaten)
    - z.B. 10 Mitarbeiter im Büro sollen die Datensätze nun bearbeiten können. (gleichzeitig bzw. nach und nach)

    Meine aktuelle Lösung ist die das ich für jeden Mitarbeiter eine eigene Tabelle von Kundendatensätzen erzeuge die abgearbeitet werden können, weil ich nicht weiss wie ich es am geschicktesten anstellen soll das wenn gerade ein Mitarbeiter an einem Datensatz arbeitet der nächste Mitarbeiter nicht auch dabei ist den gleichen Datensatz zu bearbeiten.
    Am wichtigsten ist für mich das nicht soviel Zeit verschwendet werden soll.
    Einen Wunder-Ansatz habe ich bisher noch nicht googlen können. Nur so was wie das wenn ein Datensatz ID66 gerade gespeichert worden ist das dann der andere Mitarbeiter der vieleicht seit 10. Min auch am Datensatz ID66 arbeitet den nicht überschreiben kann. Oder mann speert und entspeert Datensätze wenn sie gerade in Bearbeitung sind, was unheimlich an Zeit kostet.
    Habe mal irgrendwie was von Zeitspannen während der Abfragen nächster Datensatz gelesen, aber komme da nicht dahinter wie ich das einsetzen kann. Z.b. Mitarbeiter A wird ein Datensatz vorgehalten (Zeit 00:32) und Mitarbeiter B wird dann def. ein anderer Datensatz vorgehalten (Zeit 00:42) oder so. Keine Ahnung eben!

    Ich kann mir das Ganze z.Z. nur so vorstellen ich bin der Server und verteile in einem Zug erstmal an 10 Mitarbeiter durchnummeriete Blätter zum abarbeiten. Ich bekomme nun nach und nach die Datensätze wieder zurück und jeder der fertig ist bekommen nun ein neues Blatt zum abarbeiten. Soweit zur Theorie.
    Bitte um Hilfe. Wie kann ich da vorgehen. Mein Projekt ist private (Hobby eben). Hat also Zeit mit den Vorschlägen. Aber hänge schon seit langen an diesem Problem. Wenn es Lösbar ist nun Gut wenn nicht dann nicht. Danke!

  2. #2
    TP-Moderator Avatar von Cybergreek
    Registriert seit
    Nov 2005
    Ort
    Köln
    Beiträge
    1.666
    Zitat Zitat von cem Beitrag anzeigen
    Hallo Community.
    Hallo Cem

    Zitat Zitat von cem Beitrag anzeigen
    Oder mann speert und entspeert Datensätze wenn sie gerade in Bearbeitung sind, was unheimlich an Zeit kostet.
    Warum?
    Das wäre nämlich genau die Lösung.
    - Du packst alle Datensätze in eine Tabelle
    - die Tabelle kriegt die Spalten "gesperrt durch" (varchar) und "gesperrt um" (datetime) dazu
    - sobald ein Datensatz ausgelesen wird, wird der Benutzername in das erste Feld und das aktuelle Datum mit Uhrzeit in das zweite Feld geschrieben
    - sobald der Benutzer den Datensatz speichert und den nächste öffnet, wird dieser Datensatz wieder freigegeben (also die beiden Felder geleert)
    - beim Abfragen der Datensätze, holst Du Dir immer den Datensatz als nächstes ab, bei dem beiden Felder leer sind
    - das Feld mit Datum und Uhrzeit hat den Vorteil, dass Du Datensätze freigeben kannst, die z.B. seit einem Tag gesperrt sind, wenn der Benutzer seine Änderungen nicht wieder hochgeladen hat, also den Datensatz nicht freigegeben hat


    Zitat Zitat von cem Beitrag anzeigen
    Mein Projekt ist private (Hobby eben)
    Das musst Du mir mal erklären. Das klingt insgesamt sehr nach nicht-Hobby
    Grüße vom Griechen,
    Cybergreek!

    everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht

  3. #3
    TP-Supporter Avatar von chorn
    Registriert seit
    Apr 2008
    Ort
    Verden
    Beiträge
    483
    Du kannst auch den Zeitraum zwischen "Benutzer ruft Datensatz auf" (in der Session speichern) und "Benutzer will Datensatz speichern" nehmen. Wenn dazwischen bereits gespeichert wurde (Datensatz zuletzt gespeichert um...) kannst du fragen, ob der Datensatz überschrieben werden, oder die Änderungen verworfen werden sollen. Schütz allerdings nicht davor, dass zwei Leute gleichzeitig den Datensatz bearbeiten wollen.

  4. #4
    cem
    cem ist offline
    TP-Junior
    Registriert seit
    Jun 2012
    Ort
    Deutschland
    Beiträge
    7
    Danke für die Ratschläge. Mein Projekt ist wirklich nur Hobby. Habe persönlich schon sachen programmiert wo ich nicht gedacht hätte das ich das schaffe. Es ist halt nur eine Herausforderung mehr nicht. Alles unprofessionell und amateurhaft was ich so mache. Vor allen Dingen bin ich der Meinung das mann mit sowas auch kein Geld verdienen kann. Ist für mich nur Zeitvertreib. (Zeitverschwendung eigentlich, sorry) Macht aber Spass, wenn mann einiges umsetzen kann.

  5. #5
    TP-Moderator Avatar von Cybergreek
    Registriert seit
    Nov 2005
    Ort
    Köln
    Beiträge
    1.666
    Zitat Zitat von cem Beitrag anzeigen
    ...Ist für mich nur Zeitvertreib. (Zeitverschwendung eigentlich, sorry) Macht aber Spass, wenn mann einiges umsetzen kann.
    Das mit Zeitverschwendung sehe ich nicht so (jetzt wird's philosophisch ). Wenn es Spaß macht, dann ist sowas immer eine gute Übung. Man lernt was dazu und kann das später vielleicht sogar vernünftig nutzen. Ich hatte auch vor einigen (oh gott, bin ich alt...) Jahren Spaß dran und habe manche Sachen einfach mal ausprobiert. Mittlerweile nutze ich das zwar nicht "vernünftig" (im Sinne von Geld verdienen) aber es sind schon ein paar spannende Projekt bei rausgekommen.
    Also: Weitermachen!
    Grüße vom Griechen,
    Cybergreek!

    everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht

  6. #6
    cem
    cem ist offline
    TP-Junior
    Registriert seit
    Jun 2012
    Ort
    Deutschland
    Beiträge
    7
    Auch wenn ich keine eindeutige Lösung gefunden habe für dieses Problem (Phänomen), erkenne ich umsomehr detaiertere schwachstellen eines sogannaten Mehrbenutzerdatenbanksystems. Eines davon ist die, dass wenn ich 2000 Datensätze vergebe an 10 Mitarbeiter die diese Datensätze verarbeiten sollen an einem Tag, das der Arbeitsaufwand evtl. nicht gerecht verteilt wird. Genauer gesagt, arbeitet vieleicht Mitarbeiter 1,2 und Mitarbeiter 3 immer mehr Datensätze ab, als der Rest der Belegschaft. Ein übliche Methode (Lösung für das Problem ) laut Internetrecherche wäre eine Vergabe eines eindeutigen Zeitstempels (als Transaktions-ID)! Transaktions- ID= lokale Zeit + Stations- ID. Dann kann ich auch gleich statt dem Zeitstempel z.B. den Namen des Mitarbeites als eindeutige Trankaktions-ID nehmen. Somit wäre in der DB festgelegt das 2000 Datensätze gerecht verteilt wären für eine Abarbeitung. Ich werde meiner jetzige Lösung treu bleiben. Eine Kunden DB und 10 einzelne Tabellen. Für jeden Mitarbeiter eben eine separate Tabelle. Macht weniger Probleme. Ist wenigstens eine übliche Methode die mir bekannt ist. In jedem Büro bekommt jeder einzelne Mitarbeiter einen batzen Ordner auf seinen Schreibtisch gesetzt das er abarbeiten soll.

  7. #7
    TP-Moderator Avatar von Cybergreek
    Registriert seit
    Nov 2005
    Ort
    Köln
    Beiträge
    1.666
    Je nachdem worum es geht, kann aber die Bearbeitung von einem Datensatz länger dauern als die Bearbeitung von einem anderem.
    Ein Mitarbeiter kann auch langsamer sein als der andere.

    Wenn Du alles auf 10 Tabellen verteilst, musst Du (bzw. das System) Dich drum kümmern, die liegen gebliebenen Datensätze in den leeren Tabellen zu verteilen.
    Die Frage wäre, was genau das Ziel ist: Die Datensätze möglichst gleich zu verteilen oder möglichst viele Datensätze insgesamt zu verarbeiten.
    Grüße vom Griechen,
    Cybergreek!

    everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht

  8. #8
    TP-Veteran
    Registriert seit
    Jan 2008
    Ort
    Hessen
    Beiträge
    1.044
    Zitat Zitat von cem Beitrag anzeigen
    Auch wenn ich keine eindeutige Lösung gefunden habe für dieses Problem (Phänomen), erkenne ich umsomehr detaiertere schwachstellen eines sogannaten Mehrbenutzerdatenbanksystems.
    Hallo,

    stimmt eine einzige eindeutige Lösung gibt es nicht. Es kommt sehr viel auf die Aufgabenstellung, die Art der Daten und die betriebliche Abläufen an.
    Ob ein Mitarbeiter arbeitet oder Kaffee trinkt muss der Chef erkennen, die Arbeit kann ihm ein DB System nicht abnehmen nur dabei unterstützen. Es muss auch nicht derjenige der beste sein, der die meisten Aufträge abarbeitet, auf die Qualität kommt es auch noch an. Und die Qualitätskontrolle ist wiederum teil des betrieblichen Ablaufs.

    Die Aufgabenstellung kann auch sehr verschieden sein, z.Bsp. ein Artikel in einer Lagerverwaltung soll durchaus gleichzeitig vom Wareneingang, dem Lageristen an der Ausgabe und dem Online-Shop-System bearbeitet werden. Dann aber als Transaktion . Während einer Inventur ist natürlich eine Änderung der Bestandsmenge unerwünscht. Dann muss halt der Datensatz gesperrt, Transaktionen verhindert oder zurückgestellt werden.

    Bei abzuarbeitenden Aufträgen ist es immer so, dass der Datensatz oder Teile davon nur von einem bearbeitet werden dürfen. Hier kommt man an eine Sperrung von Datensätzen oder Feldern nicht vorbei, dies kann auf Datenbank- oder Programmebene geschehen.
    Ein übliches Vorgehen ist zum Beispiel, dass vom eigentlichen Datensatz eine Arbeitskopie erstellt wird, der original Datensatz wird dann als "in Bearbeitung durch" markiert und dessen Bearbeitung verhindert oder eingeschränkt. Die Arbeitskopie muss für diesen Zeitraum auch nicht unbedingt in einer Datenbank liegen, sondern z.Bsp. im Speicher eines Programms.
    Wurde die Arbeitskopie fertig bearbeitet, auf Plausibilität und Datenintegrität geprüft wird der original Datensatz upgedatet und die Sperre aufgehoben.
    Je nach System und Programmiersprache kann es durchaus sein, dass mehrere Leute/Jobs die gleiche Arbeitskopie gleichzeitig bearbeiten. Mit PHP bzw. per Internet ist das natürlich nicht machbar, hier ist eine sehr sequentielle Arbeitsweise notwendig. Die ms die die für die Sperre eines Datensatzes benötigt wird ist dabei vernachlässigbar.

  9. #9
    cem
    cem ist offline
    TP-Junior
    Registriert seit
    Jun 2012
    Ort
    Deutschland
    Beiträge
    7
    Hi Community!

    Habe mir die Antwort von Cybergreek mal durch den Kopf gehen lassen und tatsächlich ist eine gute Lösung bei rausgekommen. Einfach ein weiteres Feld in der DB einpflegen Namens 'abfragestatus' und das mit "unbearbeitet" vordefinieren. Sobald ein Mitarbeiter "nächsten Datensatz" Button drückt wird programmablauftechnisch (fast zeitgleich) nachdem Select Befehl ein Update Befehl ins Feld 'abfragestatus' "in Bearbeitung" ausgeführt! Der ganze Programmablauf eben immer auf den aktuellen Datensatz ID bezogen. Der Select Befehl ergibt sich aus zwei WHERE Klauseln. Erstens ist das Ergebniss noch 0 und abfragestatus noch unbearbeitet. Wenn beides demso ist speichere noch die aktuelle ID irgendwo ab, gib mir die zu bearbeitenden Datensätze auf den Bildschirm und im Hintergrund wird genau der jetzige Datensatz als in Bearbeitung schonmal abgedatet (praktisch bleibt die ID bis sie abgearbeitet ist reserviert) sodass das wenn in der Zwischenzeit ein anderer Mitarbeiter auf "nächsten Datensatz" drückt er jedenfalls einen anderen noch unbearbeiteten Datensatz vor die Linse bekommt.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. [HTML] Ideen für eine Präsentation gesucht!
    Von Ben- im Forum HTML & CSS
    Antworten: 4
    Letzter Beitrag: 09.02.2008, 20:56
  2. Brauche Ideen für eine Homepage
    Von Furgy im Forum Webdesign allgemein
    Antworten: 9
    Letzter Beitrag: 26.03.2006, 14:14
  3. Such Ideen für eine Präsentation
    Von mischaef im Forum Webdesign allgemein
    Antworten: 3
    Letzter Beitrag: 29.10.2003, 14:39
  4. Vorschläge Ideen für eine Jugendraum seite!!
    Von Bruecksen im Forum Webdesign allgemein
    Antworten: 2
    Letzter Beitrag: 01.12.2002, 15:13

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51