Inkrementieren von Hunderten von Zählern gleichzeitig, Redis oder Mongodb?

Hintergrund / Absicht:

Also werde ich einen Event Tracker von Grund auf neu erstellen und ein paar Ideen dazu haben, aber ich bin mir nicht sicher, wie ich am besten mit der Datenbank umgehen soll. Eine Sache, an der ich interessiert bin, ist es, dass diese Ereignisse vollständig dynamisch sind, gleichzeitig aber auch Berichte zu relationalen Ereigniszählern möglich sind.

Zum Beispiel alle Länder, aufgeschlüsselt nach Betriebssystemen. Der gewünschte Effekt wäre:

US Anzahl der EreignisseiOS - Anzahl der Ereignisse, die in den USA aufgetreten sindAndroid - Anzahl der Ereignisse in den USACA Anzahl der EreignisseiOS - Anzahl der Ereignisse, die in CA aufgetreten sindAndroid - Anzahl der Ereignisse, die in CA aufgetreten sindusw.

Meine Absicht ist es, in der Lage zu sein, diese Ereignisnamen wie folgt zu akzeptieren:

/?country=US&os=iOS&device=iPhone&color=blue&carrier=Sprint&city=orlando&state=FL&randomParam=123&randomParam2=456&randomParam3=789

Das heißt, um die relationalen Zähler für etwas wie das oben Genannte zu erstellen, würde ich möglicherweise mehr als 100 Zähler pro Anforderung inkrementieren.

Angenommen, es werden mehr als 10 Millionen der oben genannten Anfragen pro Tag eingehen.

Ich möchte die Dinge in Bezug auf die erfassten Ereignisnamen vollständig dynamisch halten und dies auch so, dass die Suche in den Daten superschnell bleibt. Als solches habe ich versucht, dafür Redis oder Mongodb zu verwenden.

Fragen:

Gibt es eine bessere Möglichkeit, dies zu tun, als die Felder dynamisch zu halten?

Wenn dies alles in einem Dokument enthalten ist (strukturiert wie ein Baum), kann der Operator $ inc in mongodb verwendet werden, um mehr als 100 Zähler gleichzeitig in einer Operation zu erhöhen. Der Vorteil hierbei ist, dass ich alle Statistiken für eine "Kampagne" schnell in einer einzigen Abfrage abrufen kann.

Wäre dies besser geeignet, um alle zutreffenden Leistungsindikatoren für das Ereignis zu wiederholen und ein Zincry zu erstellen?

Vielen Dank

Antworten auf die Frage(4)

Ihre Antwort auf die Frage