Ankündigung

Einklappen
Keine Ankündigung bisher.

Empfehlung für Echtzeitsynchronisation

Einklappen

Neue Werbung 2019

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

  • Empfehlung für Echtzeitsynchronisation

    Gute Tag Ihr Lieben,


    ich wurde mit einem Projekt beauftragt, welches die Synchronisation mit der Datenbank in Echtzeit ermöglichen soll.

    Konkret gesagt - jegliche Änderungen bzw. Veränderungen von Inhalten in der Datenbank(en) sollen "Live" auf eine dafür erstellte Seite übertragen und dargestellt werden.

    Nun stellt sich mir die Frage: Welche Web 2.0 Technik ist für so einen Fall empfehlenswert?


    Meine Ideen aktuell:
    Die Synchronisation per Ajax(jQuery) oder Websocket lösen.

    1.
    // In einem 1000er (1Sek.) Intervall den Datenbankinhalt laden?
    $.load();

    2.
    // Jedes mal den Inhalt der Seite mit den Daten aus der Datenbank anstupsen, sobald eine Aktion durchgeführt wird, z.B. onChange?
    $.push();

    3.
    // Per Websocket ein Stream erzeugen und bei Änderungen oder Ergänzungen der Datenbankinhalte Daten an die Seite senden.
    socket_create(..., SOCK_STREAM, ...);


    Aber was ist aus der Sicht der Performanz und Sicherheit besser geeignet?

    Gut, ich glaube 1. Idee fällt schon mal weg wenn man bedenkt, dass eine Datenbank mehrere tausende Einträge haben kann oder wird.
    Die zweite Idee würde zwar die Performanz etwas erhöhen, aber werden auch die anderen Clienten über Veränderungen informiert oder nur derjenige, der die Aktion ausgeführt hat?
    Die dritte Idee stellt eine Alternative dar, ist jedoch ein Stream - also ein permanentes horchen auf einen Socket nach Änderungen - nicht für das System belastend?



    Vielleicht könnt Ihr mir aus eigener Erfahrung berichten, welche Technologie Ihr für so einen Fall vielleicht schon mal benutzt habt oder Ihr empfehlen würdet und evtl. aus welchen Gründen?


    Ich freue mich auf Eure Antworten.


    Liebe Grüße
    Monevo


  • #2
    Zitat von Monevo Beitrag anzeigen

    Vielleicht könnt Ihr mir aus eigener Erfahrung berichten, welche Technologie Ihr für so einen Fall vielleicht schon mal benutzt habt oder Ihr empfehlen würdet und evtl. aus welchen Gründen?
    Laß die DB das auslösen, die weiß, wann da ein Record sich ändert. Das nennt sich Listen / Notify.

    http://www.postgresql.org/docs/9.3/s...ql-listen.html
    http://www.postgresql.org/docs/9.3/s...ql-notify.html

    Das ist deutlich besser als sinnfrei zu pollen. Unterstützt auch in PHP: http://php.net/manual/de/function.pg-get-notify.php
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Ich entschuldige mich für fehlende Angaben über den "IST"-Zustand

      Es ist eine bestehende MySQL-Datenbank mit der ich nun irgendwie zurecht kommen soll.

      @akretschmer: Deine Hinweise über Liste / Notify haben mir aber schon weiter geholfen.

      Wie es aussieht muss man wohl bei einer MySQL-Datenbank ein wenig tricksen um in etwa den gleichen Effekt erzielen zu können.


      UPDATE: Nach einer Rücksprache mit unserem Webhoster ist ein externer Zugriff auf die Datenbank (aus Gründen der Sicherheit) gesperrt. Jegliche Aktionen müssen innerhalb und vom Server aus ausgelöst werden.

      Also wird wohl mit der Alternativen Idee das ganze per Websocket zu lösen nicht möglich sein, oder verstehe ich den Support falsch

      Kommentar


      • #4
        Zitat von Monevo Beitrag anzeigen
        Es ist eine bestehende MySQL-Datenbank mit der ich nun irgendwie zurecht kommen soll.
        Mein Beileid.


        UPDATE: Nach einer Rücksprache mit unserem Webhoster ist ein externer Zugriff auf die Datenbank (aus Gründen der Sicherheit) gesperrt. Jegliche Aktionen müssen innerhalb und vom Server aus ausgelöst werden.

        Also wird wohl mit der Alternativen Idee das ganze per Websocket zu lösen nicht möglich sein, oder verstehe ich den Support falsch
        Es geht um den externen Zugriff. Nicht um den Zugriff vom Webserver aus.
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar


        • #5
          Man kann so was natürlich über websockets oder über lang laufende Verbindungen (siehe comet) machen. Die Datenbankseitigen notifications sind natürlich prima. Alternativ macht klman das über einen applikationsseitigen Eventhandler.
          Standards - Best Practices - AwesomePHP - Guideline für WebApps

          Kommentar


          • #6
            meteor.js hat sich genau das auf die Fahne geschrieben. Wird aber mit MongoDB betrieben.
            https://www.meteor.com/

            Kommentar

            Lädt...
            X