Ich versuche herauszufinden, System-Design hinter Google Trends (oder jede andere solche große Trend-Feature wie Twitter).Systemdesign von Google Trends?
Challenges:
Need große Menge an Daten zu verarbeiten Trend zu berechnen.
Filtering Unterstützung - von der Zeit, Region, Kategorie usw.
einen Weg benötigt für die Archivierung/Offline-Bearbeitung zu speichern. Filterunterstützung erfordert möglicherweise mehrdimensionalen Speicher.
Dies ist, was meine Vermutung ist (ich habe Null practial Erfahrung von MapReduce/NoSQL-Technologien)
Jeder Suchbegriff aus Benutzern von Attributen wird maintain eingestellt, und schließlich verarbeitet gespeichert werden.
sowie die Aufrechterhaltung Liste der Suchanfragen durch Zeitstempel, der Region suchen, Kategorie usw.
Beispiel:
für Kurt Cobain
Begriff:
Kurt-> (Time stamp, Region of search origin, category ,etc.)
Cobain-> (Time stamp, Region of search origin, category ,etc.)
Frage:
Wie berechnen sie effizient die Häufigkeit des Suchbegriffs?
Mit anderen Worten, bei einem großen Datensatz, wie finden sie die häufigsten Top 10 Artikel verteilt skalierbar?
Auch müssen Zeitverfall Faktor berücksichtigen –
Ich denke mit speziellen Datenstrukturen, die so strukturiert sind, dass die Trends schneller zu finden, Daten sind so angeordnet, dass es für alle offenen Funktionen für Millionen von Benutzern online vorverarbeiten –
Offensichtlich kann ich nicht wählen, um eine Frage zu schließen, die jemand anderes eine Prämie angeboten hat, aber für mich scheint diese Frage off-topic/zu breit: Es gibt viele Technologien und Bereiche der Forschung zu diesem Thema, und es gibt keinen Weg Eine Antwort könnte sie anders kapseln als durch die Verknüpfung mit einer geeigneteren Ressource wie einem Lehrbuch oder einer eigenen Website. Um eine der Richtlinien in der Hilfe zu paraphrasieren: "Wenn Sie sich eine ganze Karriere oder einen Geschäftsplan vorstellen können, der darauf basiert, die Antwort zu finden, ist die Frage wahrscheinlich zu weit gefasst". – IMSoP