zwei tabellen auf zwei rechnern synchronisieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • zwei tabellen auf zwei rechnern synchronisieren

    Hallo

    ich habe auf zwei Rechner Local ( nicht im Internet) auf jedem die gleiche Datenbank mit den gleichen Tabellen laufen.

    Auf beiden rechnern werden jetzt verschiedene Datensätze eingegeben.
    Am Abend sollen nun die beiden Tabellen mit einander abgelichen werden.

    nun liegen ja unterschiedliche Datensätze mit der gleichen ID Nummer vor.
    Wie bekomme ich diese zwei Tabellen am besten und (einfachsten) auf den gleichen Stand?



    Gruß Task1000

  • #2
    wenn beide rechner die tabellen unterschiedlich einpflegen dürfen, hast du automatisch ein problem mit den ids. und noch schlimmer ist es , wenn es tabellen gibt, die untereinander genau auf dieser id-basis verbunden sind.

    da aber beide rechner im gleichen netz sind, und wahrscheinlich mysql, schlage ich dir eine replikation vor.

    schaue einfach mal bei www.mysql.com nach, was dort zum thema replication vorhanden ist.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Ich kann empfehlen, statt INT-IDs 15-Stellige Zufalls-Varchars (z.b. id=83idkKdo923KO0) zu verwenden. Ist bei grossen Tabellen sicher eine kleine Performancebremse, aber Du kommst nicht in Probleme wie das von Dir beschriebene *und* es ist eine wunderbare zusätzliche Sicherheit bei Web-Frontends, da man z.B. die IDs von Datensätzen, die einem nicht gehören, nicht einfach erraten kann.

      Für die von Dir beschriebene Situation kann ich keine Lösung sehen, wenn die IDs nicht geändert werden dürfen. Da steckst Du ziemlich in der Scheisse
      Zuletzt geändert von pekka; 09.05.2003, 13:38.

      Kommentar


      • #4
        Also die ID könnten ruhig geändert werden. Wichtig wäre bloss das anschliesend beide Tabellen identisch sind , und die jeweils auf jedem Rechner hinzugekommenden Daten mit dabei sind.

        Task1000

        Kommentar


        • #5
          'ne andere Alternative wäre auch noch ein zusammengesetzter Primärschlüssel aus RechnerID und ID ...
          carpe noctem

          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

          Kommentar


          • #6
            kannst du das etwas genauer erläutern, was du dir da so vorstellst?
            Gruß Task1000

            Kommentar


            • #7
              Also die sache lässt mir keine Ruhe

              mal folgendes angenommen
              auf Rechner A eine Tabelle "kunde1"
              auf Rechner B eine Tabelle "kunde2"

              1. ich kopiere die komplette tabelle " Kunde1" vom Rechner A auf den Rechner B

              Jetzt habe ich auf Rechner B zwei Tabellen: "Kunde1" und "kunde2"

              ". Beide Tabellen werden miteinander Verglichen. Ist ein Datensatz in zB. Tabelle Kunde1 nicht vorhanden wird der datensatz von Tabelle Kunde2 ind die Tabelle Kunde1 kopiert.
              Um das Problem mit den ID Feldern zu umgehen besitzen beide Tabellen kein ID Feld

              jetzt enthält die Tabelle Kunde1 auch alle Daten der Tabelle Kunde2

              Tabelle Kunde 2 wird auf dem RechnerB gelöscht. und die Tabelle Kunde1 aufgespielt . somit wären auf beiden rechnern wieder die gleichen Tabellen.


              und jetz meine Frage ??

              Wie vergleiche ich diese beiden Tabellen und aktualisiere dann in der einen den Inhalt?
              Oder habe ich einen Grundlegenden Gedankenfehler gemacht?
              Das ganze ist zwar etwas umständlich aber mir fällt keine andere Lösung ein.
              Ich hoffe jemand kann helfen

              Gruß Task1000

              Kommentar


              • #8
                Um das Problem mit den ID Feldern zu umgehen besitzen beide Tabellen kein ID Feld
                Was soll das denn bitte?!? Machs wie Goth:

                Id => Rechnerid/id also zb A45 oder B37 oder A344 (a/b für rechner und zahl als id)

                mal nebenbei: was machst du, wenn ne zeile gelöscht wird??? problem! dann wird sie automatisch überspielt.

                prüfen tust du in ner schleife.

                ich würd das ganze anders aufbauen. aber grübel mal n bisschen.

                Kommentar


                • #9
                  Also ich würds so machen:

                  - Beide tabellen haben eine 15-Stellige random-ID
                  - und ein "deleted"-Feld, das standardmäßig auf "N" gesetzt ist.

                  Beim synchronisieren passiert folgendes (tabelle1 soll aktualisiert werden).

                  - Findet sich in tabelle2 ein Datensatz, der mit dieselber randomID in tabelle 1 steht, werden die Inhalte überprüft. Weichen sie voneinander ab, werden die Daten von tabelle2 in tabelle1 kopiert

                  - Findet sich in tabelle2 ein Datensatz, dessen RandomID noch nicht in Tabelle1 steht (=neuer Datensatz), wird zuerst überprüft, ob in tabelle1 nicht ein Datensatz mit abweichender RandomID, aber selbem Inhalt steht. Wenn nicht, wird er in tabelle1 kopiert.

                  - Datensätze werden nicht einfach gelöscht, sondern das "deleted"-Feld auf "Y" gesetzt. Dann kann ich Löschungen beim Synchronisieren problemlos in die anderen Tabellen weiterverbreiten.

                  Mit den RandomIDs hast Du eindeutige Datensatzkennzeichnungen über mehrere Tabellen hinweg. Dass bei 15 o.ä. Stellen mal zwei Datensätze dieselbe ID kriegen ist höchst unwahrscheinlich.

                  Naja. Das ist jetzt eine sehr spezifische Vorgehensweise. Wär sinnvoll mehr über dein Projekt zu erfahren.
                  Zuletzt geändert von pekka; 11.05.2003, 16:30.

                  Kommentar


                  • #10
                    real soll es so aussehen
                    im Aussendienst ist jemand mit einem Notebook unterwegs. auf diesem Notebook existieren zwei Tabellen. einmal eine Kundentabelle und eine Produkttabelle. der aussendienst nimmt zB. neue Produkte vor Ort in diese Tabelle auf.
                    Zur gleichen Zeit werden auch im Office auf einem Rechner neue Produkte in einer Produktdatenbank angelegt.
                    Wenn jetzt Abends der Aussendienst ins Office kommt weichen seine Daten natürlich von denen aus dem Office ab. Jeder hat ja am Tag neue Datensätze angelegt.
                    Nächsten Tag soll nun jeder die die daten des anderen auch in seiner Produktdatenbank stehen haben. Das Office also die neuen daten vom Aussendienst, und der Aussendienst die Daten vom Office.
                    im Grunde genommen also eine ganz normale synchronisation.
                    Genau hier habe ich die Probleme. Alles funktioniert bloss dieser Datenabgleich, da fällt mir einfach keine vernünftige Lösung ein.

                    Ich hoffe Ihr könnt was mit der Schilderung anfangen.

                    Gruß Task1000

                    Kommentar


                    • #11
                      pekka hats doch gepostet.

                      Kommentar


                      • #12
                        Pekka wollte aber auch ein paar nähere Infos

                        Kommentar


                        • #13
                          Das schon, aber eigentlich sollte sich aus der Anleitung schon mal was machen lassen.

                          Kommentar


                          • #14
                            Kurze Frage am rande
                            mir ist zwar klar wie ich ein Int zufallszahl erzeuge in PHP mit rand, wie aber ein varchars Random ??

                            Kommentar


                            • #15
                              nimm einfach uniqid()

                              Kommentar

                              Lädt...
                              X