Finden Sie Lücken in großen Ereignisströmen?

ch habe ungefähr 1 Million Ereignisse in einer PostgreSQL-Datenbank, die dieses Format habe

id        |   stream_id     |  timestamp
----------+-----------------+-----------------
1         |   7             |  ....
2         |   8             |  ....

s gibt ungefähr 50.000 eindeutige Stream

Ich muss alle Ereignisse finden, bei denen die Zeit zwischen zwei Ereignissen über einen bestimmten Zeitraum liegt. Mit anderen Worten, ich muss Ereignispaare finden, bei denen in einem bestimmten Zeitraum kein Ereignis aufgetreten ist.

Beispielsweise

a b c d   e     f              g         h   i  j k
| | | |   |     |              |         |   |  | | 

                \____2 mins____/

In diesem Szenario würde ich das Paar (f, g) finden wollen, da dies die Ereignisse sind, die unmittelbar eine Lücke umgeben.

Es ist mir egal, ob die Abfrage (so) langsam ist, d. H. Bei 1 Million Datensätzen ist es in Ordnung, wenn es ungefähr eine Stunde dauert. Die Datenmenge wächst jedoch weiter. Wenn sie langsam ist, wird sie hoffentlich normal skaliert.

Ich habe auch die Daten in MongoDB.

Wie kann diese Abfrage am besten durchgeführt werden?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage