2016-12-18 6 views
0

Gestern habe ich eine erstaunliche Rede Polyglot Daten von Greg Young https://www.youtube.com/watch?v=hv2dKtPq0ME&t=24m54sKeeping Datenmodelle synchron (MySQL und Neo4j)

Und während ich voll und ganz mit den wichtigsten Punkten übereinstimmen, es ist nicht alles klar Implementierung weise. Die Ideen, die er in den gegebenen Teil des Videos steckt, ist, dass der Client seinen eigenen Zustand beibehalten muss, was vernünftig ist, aber das bedeutet, dass es einen "Master" -Rekord in der MySQL geben sollte, der dann zum Neo4j propagiert wird Form von Ereignissen?

Das würde bedeuten, dass wir eine Diagrammstruktur in der SQL beibehalten müssen, nicht wahr? >. <

Antwort

1

die Ideen, die er in dem gegebenen Teil des Videos schieben ist, dass Client-eigener Staat es halten muß, was vernünftig ist, aber bedeutet das, dass es ein „Master“ Datensätze in der MySQL sein, dass seine dann in Form von Ereignissen zum Neo4j verbreitet?

Kurze Antwort: Ja - der Client-Prozessor verfolgt seine eigene Leseposition und fragt das Buch nach Aktualisierungen. Es nimmt diese Updates, übersetzt sie in Änderungen für Ihre Neo4j-Instanz, wendet diese Änderungen an.

In der Theorie brauchen Sie nicht wirklich die Updates in Form von Ereignissen abgerufen - ein Snapshot des gesamten Buches des Datensatzes würde funktionieren; Wenn Sie jedoch mit Änderungen arbeiten, können Sie kleinere Informationsbrocken verarbeiten, ohne sich Sorgen machen zu müssen, dass etwas, das Sie noch nicht gelesen haben, die Bedeutung dessen, was Sie bisher gesehen haben, ändert.

Das würde bedeuten, dass wir eine Diagrammstruktur in der SQL beibehalten müssen, nicht wahr?

Nicht die Grafikstruktur, nein - nur der gesamte Status, der zum Erzeugen der Struktur verwendet wurde. Ein Lesemodell ist eine Ansicht - es kann irrelevante Zustände ignorieren, es kann den relevanten Zustand in eine geeignetere Datenstruktur umwandeln, aber es sollte keinen Zustand enthalten, der nicht bereits im Buch der Aufzeichnung enthalten ist.