datenbank



  • hallo

    Ich sitze gerade an einem synchronisationsproblem zweier Datenbanken und zwar besitzt der Client eine lokale Datenbank (um Daten unterwegs abzuspeichern) und der Server eine Zentrale Datenbank.

    Eine Tabelle sieht z.B. folgendermassen aus:

    CUSTOMER
    customerid
    customername

    Wenn jetzt mehrere benutzer nur auf der lokalen Datenbank arbeiten (ohne verbindung zum Server) und einen neuen Kunden hinzufügen besitzen beide die gleiche ID (da sie ja vom selben stand ausgehen nachdem sie sich vom server getrennt haben). Beim synchronisieren besitzen dan zwei records die selbe ID.

    Wie kann ich das verhindern?

    Eine Idee wäre, dass ich bei allen Tabellen, bei welchen "unterwegs" noch Datensätze hinzugefügt werden, ein Timestamp feld hinzufüge.

    z.B.

    CUSTOMER
    customerid
    customername
    timestamp

    Wie wird so etwas sonst gelöst?



  • Ein Timestamp wird dir nichts nützen, es können ja immernoch 2 Kunden mit derselben Kundennummer angelegt werden. Welechen willst du nehmen? Den zuerst angelegten, und der vom zweiten User fällt unter den Tisch?

    Lotus Notes sagt in dem Fall einfach "Replzirungskonflikt" und der Admin muss sich drum kümmern, beide Datensätze in die DB zu bekommen. Tolle Lösung gell?

    Du könntest das eigentlich nur umgehen, wenn du dafür sorgst, dass jeder Unterwegs-Nutzer eindeutige ID's erstellt. z.B. indem jeder User einenen eigenen Prefix erhält, der vor der neu erstellten ID steht: User 1 100xxxxx, user 2 102xxxx, user 3 103xxxxx usw. xxx wäre dann der fortlaufende Teil, die ersten drei (oder wieviele du halt brauchst) stellen sind für jeden User fix. Sonst fällt mir da auch nichts ein...



  • wenn deine datenbank guids unterstuetzt koenntest du die nehmen.

    ansonsten wuerde ich versuchen den clients eindeutige ids zuzuweisen
    (z.b. wenn sie sich an der db anmelden). die clients setzen die
    id fuer die tabelle dann aus einer (selbst)generierten und der
    von der datenbank zugewiesenen zusammen.



  • hallo

    danke für die Antwort. Das mit der Userabhängigen ID ist keine schlechte Idee mal schauen ob ich das verwenden kann. (Zur not müssten die Konflikte halt von Hand gelöst werden).

    Was sind den GUIDS? Irgendwo habe ich das schon mal gehört aber fällt mir jetzt gerade nicht mehr ein wo.



  • Eine Global eindeutige ID.

    globally unique identifier (GUID)


Anmelden zum Antworten