


Welche Lösungen gibt es für die MySQL-Datensynchronisierung mit Elasticsearch?
Jun 01, 2023 pm 06:37 PMProduktabfrage
Sie sollten auf verschiedenen E-Commerce-Websites nach Produkten gesucht haben. Wie suchen Sie normalerweise nach Produkten? Suchmaschine Elasticsearch.
Dann stellt sich die Frage: Wenn ein Produkt in den Handel kommt, werden die Daten normalerweise in die MySQL-Datenbank geschrieben. Wie werden die Daten zum Abruf mit Elasticsearch synchronisiert?
MySQL synchronisiert ES
1. Synchrones Doppelschreiben
Dies ist der direkteste Weg, den man sich vorstellen kann. Beim Schreiben in MySQL wird gleichzeitig auch eine Kopie der Daten direkt in ES geschrieben.
Synchronisiertes Doppelschreiben
Für diese Methode:
Vorteile: Einfache Implementierung
Nachteile:
Geschäftskopplung, Kopplung einer großen Menge an Datensynchronisationscode in der Warenverwaltung
beeinträchtigt die Leistung , Schreiben Mit zwei Speichern wird die Antwortzeit länger
Unpraktisch zu erweitern: Die Suche kann einige personalisierte Anforderungen haben, die eine Aggregation von Daten erfordern, was umständlich zu implementieren ist
2. Asynchrones Doppelschreiben
Wir können Stellen Sie sich das auch leicht vor: Bei der asynchronen Dual-Writing-Methode werden die Produktdaten beim Auflisten von Produkten zunächst in MQ geworfen. Um die Kopplung zu verstehen, teilen wir normalerweise einen Suchdienst auf und der Suchdienst abonniert die Produktnachrichten Änderungen bis zur vollständigen Synchronisierung.
Asynchrones Doppelschreiben
Wie bereits erwähnt, was soll ich tun, wenn einige Daten in einer Struktur ähnlich einer breiten Tabelle aggregiert werden müssen? Beispielsweise sind die Produktkategorie-, SPU- und SKU-Tabellen der Produktbibliothek getrennt, aber die erneute Aggregation in ES ist weniger effizient. Es ist am besten, die Produktdaten zu aggregieren und eine ähnliche Größe zu verwenden -scale-Methode in ES Es wird in Form einer breiten Tabelle gespeichert, sodass die Abfrageeffizienz höher ist.
Mehrdimensionale Abfrage mit mehreren Bedingungen
Es gibt eigentlich keine gute Möglichkeit, dies zu tun. Grundsätzlich müssen Sie immer noch den Dienst durchsuchen, um die Datenbank direkt zu überprüfen, oder ihn aus der Ferne aufrufen und dann die Produktdatenbank erneut abfragen. das ist der sogenannte Backcheck.
Überprüfen, um die Aggregation abzuschließen
Auf diese Weise:
Vorteile:
Entkopplung, Produkte und Dienste müssen nicht auf Datensynchronisation achten
Gute Echtzeitleistung mit MQ unter Unter normalen Umständen ist die Synchronisierung auf der zweiten Ebene abgeschlossen. Nachteile: Einführung neuer Komponenten und Dienste, wodurch die Komplexität erhöht wird Daten nicht so groß? Was tun? Geplante Aufgaben sind ebenfalls verfügbar.
- Das Problem bei geplanten Aufgaben ist, dass die Häufigkeit hoch ist und es zu unnatürlichen Spitzenzeiten kommt, wodurch die Speicher-CPU- und Speicherauslastung in Spitzenzeiten ansteigt. Wenn die Frequenz niedrig ist, steigt sie in Echtzeit an. Der Sex ist relativ schlecht und es gibt auch Spitzen. Diese Methode:
Schwierig, Echtzeitleistung zu garantieren
höherer Speicherdruck
4. Datenabonnement
Es gibt auch einen anderen Weg , das ist das beliebteste Datenabonnement.
- MySQL erreicht die Master-Slave-Synchronisation durch Binlog-Abonnements. Verschiedene Datenabonnement-Frameworks wie Canal nutzen dieses Prinzip, um die Client-Komponente als Slave-Bibliothek zu tarnen, um ein Datenabonnement zu implementieren.
- MySQL-Master-Slave-SynchronisationWir nehmen den am weitesten verbreiteten Kanal, der eine Vielzahl von Adaptern unterstützt, einschließlich des ES-Adapters, nach dem Start können Sie MySQL-Daten direkt synchronisieren Mit ES ist dieser Prozess Zero-Code.
Kanalsynchronisationsdaten
Obwohl wir dem Rat des Chefs folgen und den Kanal für Synchronisationsarbeiten verwenden, müssen wir tatsächlich noch Code schreiben. Warum?
Aufgrund der begrenzten Unterstützung von Canal muss die oben erwähnte Datenaggregation mehrerer Tabellen noch durch Überprüfung implementiert werden. Zu diesem Zeitpunkt ist die Verwendung von Canal-Adapter nicht angebracht. Sie müssen den Canal-Client selbst implementieren, Daten überwachen und aggregieren und an ES schreiben:
Datenabonnement + Überprüfung canal-adapter
Nutzen Sie also das Datenabonnement:
Vorteile:
Weniger geschäftliche Eingriffe
Was die Auswahl an Datenabonnement-Frameworks betrifft, sind die gängigsten im Allgemeinen die folgenden: Quelle
Community |
Entwicklungssprache | Java | |
---|---|---|---|
Aktivität | Aktiv | Aktiv | |
Hohe Verfügbarkeit | Support | Support | |
Client | Java/Go/PHP/Python/Rust | None | |
Message Landing | Kafka/RocketMQ usw. | Kafka/RabbitNQ/Redis usw. | |
Nachrichtenformat | Angepasst | JSON | |
Dokument detailliert | Detailliert | Detailliert | |
Boostrap | Nicht unterstützt | Unterstützt | |
MySQL synchronisiert zu anderen Datenspeichern wie HBase, grundsätzlich mit ähnlichen Methoden. |
Das obige ist der detaillierte Inhalt vonWelche Lösungen gibt es für die MySQL-Datensynchronisierung mit Elasticsearch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHPs Fähigkeiten zur Verarbeitung von Big-Data-Strukturen

Wie optimiert man die MySQL-Abfrageleistung in PHP?

Wie verwende ich MySQL-Backup und -Wiederherstellung in PHP?

Welche Anwendungsszenarien gibt es für Java-Aufzählungstypen in Datenbanken?

Wie füge ich mit PHP Daten in eine MySQL-Tabelle ein?

So beheben Sie den Fehler „mysql_native_password nicht geladen' unter MySQL 8.4

Wie verwende ich gespeicherte MySQL-Prozeduren in PHP?

Strategien zur Leistungsoptimierung für PHP-Array-Paging
