Datenbankarchitektur für Millionen neuer Zeilen pro Tag

Ich muss einen speziell entwickelten Webanalysedienst für eine große Anzahl von Websites implementieren. Die Schlüsselelemente hier sind:

WebseitBesuche

Jeder einzelne Besucher hat eine einzelne Zeile in der Datenbank mit Informationen wie Zielseite, Uhrzeit, Betriebssystem, Browser, Referrer, IP usw.

Ich muss aggregierte Abfragen in dieser Datenbank durchführen, z. B. "COUNT alle Besucher, die Windows als Betriebssystem haben und von Bing.com stammen".

Ich habe Hunderte von Websites zu verfolgen und die Anzahl der Besucher für diese Websites reicht von einigen hundert pro Tag bis zu einigen Millionen pro Tag. Insgesamt erwarte ich, dass diese Datenbank um etwa eine Million Zeilen pro Tag wächst.

Meine Fragen sind:

1) Ist MySQL eine gute Datenbank für diesen Zweck?

2) Was könnte eine gute Architektur sein? Ich denke darüber nach, für jede Website eine neue Tabelle zu erstellen. Oder vielleicht mit einer einzelnen Tabelle beginnen und dann eine neue Tabelle (täglich) erzeugen, wenn die Anzahl der Zeilen in einer vorhandenen Tabelle 1 Million überschreitet (ist meine Annahme richtig). Meine einzige Sorge ist, dass die SQL-Abfragen dramatisch langsam werden können, wenn eine Tabelle zu groß wird. Wie viele Zeilen sollte ich maximal pro Tabelle speichern? Darüber hinaus ist die Anzahl der Tabellen, die MySQL verarbeiten kann, begrenzt.

3) Ist es ratsam, Abfragen über Millionen von Zeilen zusammenzufassen? Ich bin bereit, einige Sekunden zu warten, um Ergebnisse für solche Abfragen zu erhalten. Handelt es sich um eine bewährte Methode oder gibt es eine andere Möglichkeit, aggregierte Abfragen durchzuführen?

In einer Nussschale,Ich versuche ein Design für ein umfangreiches Data-Warehouse-Setup, das schwer zu schreiben sein wird. Wenn Sie über veröffentlichte Fallstudien oder Berichte Bescheid wissen, ist das großartig!

Antworten auf die Frage(8)

Ihre Antwort auf die Frage