1

Was sind die Vor-/Nachteile der Verwendung von MySQL-Triggern, um Daten zwischen Tabellen synchronisiert zu halten und sogar Aggregat-/Berichtstabellen als Datenänderungen zu aktualisieren?Vorteile/Nachteile der Verwendung von MySQL-Triggern

Durch Aggregat/Berichtstabellen ich meine Tabellen, die Daten zusammenfassen, die in anderen Tabellen wie vorhanden ist:

tbl_user_location: 
1 Mike New York 
2 John London 
3 Emily Paris 
4 Jack New York 

tbl_summary: 
New York 2 
London 1 
Paris 1 

Als Datenänderungen in Echtzeit in tbl_user_location die Zusammenfassung aktualisiert wird.

Was sind Alternativen zu diesem Ansatz?

Antwort

2

Im Vorteil: SQL-Trigger bieten eine alternative Möglichkeit, geplante Tasks auszuführen. Trigger werden automatisch vor oder nach einer Änderung der Daten in Tabellen aufgerufen.

Im Nachteil: SQL-Trigger werden jedoch aufgerufen und unsichtbar von Client-Anwendungen ausgeführt, daher ist es schwierig herauszufinden, was in der Datenbank-Schicht passieren. Dies kann den Overhead des Datenbankservers erhöhen.

Wenn Sie über Hochgeschwindigkeitsdaten sprechen, denken Sie nicht einmal über Trigger nach. Ich schlage vor, Sie gehen mit Stream-Processing-Technik. Sie können mysql bin-logs Ereignisse erfassen und zum Stream hinzufügen und dann verarbeiten. Einfach Trigger ist keine gute Idee für Echtzeit-Datenaggregation.

etwas wie unten Versuchen Sie, müssen Sie möglicherweise einige Benutzer über diesen Ex tun: (mysql binlogs) Maxwell> kafka-> Funke (verarbeitete Daten)

+0

Dank! Anscheinend suchte Maxwell oder etwas ähnliches. Es sieht so aus, als gäbe es eine Menge [MySQL ändert Datenstrom-Tools] (https://github.com/wushujames/mysql-cdc-projects/wiki). –

+0

Mit "Wenn Sie über High-Speed-Daten sprechen nicht einmal über Trigger denken" beziehen Sie sich auf die Tatsache, dass Trigger synchron sind, in dem Sinne, dass ihre Verarbeitung "blockiert" die erste Abfrage? –

+0

Hey, hohe Geschwindigkeit bedeuten, wenn die Anzahl der Ereignisse pro Sekunde hoch ist, Trigger ausgelöst werden, die ganze Zeit hohe Belastung auf Server. Ich sagte das, weil ich es benutzt habe und sobald die Geschwindigkeit hoch wurde, ist es gescheitert – Malinga