Ich verwende Google CloudSQL für die Anwendung der erweiterten Suche nach Personendaten, um die Liste der Benutzer abzurufen. Im Datenspeicher sind dort bereits Daten mit 2 Modellen gespeichert. First wird verwendet, um aktuelle Daten von Benutzern zu verfolgen, und ein anderes Modell wird verwendet, um historische Zeitachsen zu verfolgen. Die aktuellen Daten werden auf Google CloudSQL gespeichert sind mehr als Millionen Zeilen für alle Benutzer. Jetzt möchte ich die erweiterte Suche nach historischen Daten, einschließlich zwischen Daten, implementieren, indem ich alle Verlaufsdaten zur Cloud hinzufüge.Google CloudSQL: Strukturieren von Verlaufsdaten auf cloudSQL
Wenn jemand die bessere Struktur für dieses historische Modell vorschlagen kann, wie ich durch viele der Links und Artikel gegangen bin. Aber ich kann keine richtige Lösung finden, da ich mich um die Leistung für die Suche kümmern muss (In der aktuellen Suche dauert das Abrufen des Ergebnisses normal, aber wenn der Verlauf abgerufen wird, durchsucht es alle Datensätze, was eine Verlangsamung der Abfragen verursacht komplexe JOINs nach Bedarf). Die Abfrage, die zum Abrufen der Daten aus CloudSQL verwendet wird, wird dynamisch basierend auf den Anforderungen der Benutzer erstellt. Beispiel: Ein Benutzer möchte die Liste der Mitarbeiter, deren Manager"[email protected]" ist, mithilfe von Python-Code wird die Abfrage entsprechend aufgebaut. Jetzt möchte ein Benutzer Benutzer finden, deren Manager WAS "[email protected]" mit wirksamem Vom 2016-05-02 bis 2017-01-01.
Wie ich habe wie unten einige der usecases für Struktur finden:
1) Das gleiche Modell wie aktuelle Struktur mit neuen Spalte Flag für isCurrentData (Stand der Daten, ob es Geschichte oder aktiv)
disadv .: - Abfragen Verlangsamung während Abrufen von Daten, wie es alle Datensätze scannen. Die Duplizierung von Daten kann zunehmen.
Diese alle disadv. wird die Leistung der erweiterten Suche beeinflussen, indem die Zeit erhöht wird. Lösung für dieses Problem ist die gesamte Tabelle in diff-Tabellen zu partitionieren.
2) Partition basierend auf Jahr. Mit der Zeit werden dadurch zu viele Tabellen generiert.
3) 2 Tabellen können gepflegt werden. 1. für aktuelle Daten und zweitens für die Geschichte. Wenn der Benutzer jedoch Daten in beiden Modellen suchen möchte, wird die Komplexität der Build-Abfrage erzeugt.
Also brauchen Sie Vorschläge für die Strukturierung historischer Zeitleiste mit verbesserter Leistung und effektiver Datenverarbeitung.
Vielen Dank im Voraus.