Scenariusz: mam usługę, która rejestruje zdarzenia, jak w tym przykładzie csv:sprowadzają się do wydarzeń odstępach czasowych
#TimeStamp, Name, ColorOfPullover
TimeStamp01, Peter, Green
TimeStamp02, Bob, Blue
TimeStamp03, Peter, Green
TimeStamp04, Peter, Red
TimeStamp05, Peter, Green
wydarzeń, które na przykład Peter nosi Zielony pojawi się bardzo często z rzędu.
Mam dwa cele:
- przechowuje dane jak najmniejsza
- Zachowaj wszystkie istotne dane z
ze środkami: Muszę wiedzieć, w którym czas przęsła osoba była w jakim kolorze. Np:
#StartTime, EndTime, Name, ColorOfPullover
TimeStamp01, TimeStamp03, Peter, Green
TimeStamp02, TimeStamp02, Bob, Blue
TimeStamp03, TimeStamp03, Peter, Green
TimeStamp04, TimeStamp04, Peter, Red
TimeStamp05, TimeStamp05, Peter, Green
W tym formacie, mogę odpowiedzieć na pytania: Który kolor był Peter noszenia w czasie TimeStamp02? (Można bezpiecznie założyć, że każda osoba ma ten sam kolor pomiędzy dwoma rejestrowane zdarzenia dla tego samego koloru).
główne pytanie: Czy mogę korzystać z już istniejących technologii, aby to osiągnąć? To znaczy. Mogę dostarczyć mu ciągły strumień wydarzeń i wyodrębnia i przechowuje odpowiednie dane?
Dokładniej, muszę zaimplementować taki algorytm (pseudokod). Metoda OnNewEvent
jest wywoływana dla każdej linii przykładu CSV. Gdzie parametr event
zawiera już dane z linii jako zmienne składowe.
def OnNewEvent(even)
entry = Database.getLatestEntryFor(event.personName)
if (entry.pulloverColor == event.pulloverColor)
entry.setIntervalEndDate(event.date)
Database.store(entry)
else
newEntry = new Entry
newEntry.setIntervalStartDate(event.date)
newEntry.setIntervalEndDate(event.date)
newEntry.setPulloverColor(event.pulloverColor))
newEntry.setName(event.personName)
Database.createNewEntry(newEntry)
end
end
Powinno być możliwe, aby to zrobić z logstash, ale problemem jest to, że będziesz musiał zrobić żądania elasticsearch dla każdej linii, aby pobrać najnowszy wpis, który sprawi, że proces bardzo powolny. Dlatego nie uważam, że logstash jest odpowiednim narzędziem do tego. – baudsp
Jakie są ilości danych i jak szybko należy reagować w przypadku wystąpienia nowego zdarzenia? Czy jest OK, jeśli niektóre wydarzenia zostaną utracone? – ffeast
Reakcja na zdarzenia może być powolna. Na przykład. Dopuszczalne jest 1-dniowe opóźnienie. Tak więc jedna z codziennych pracy crona może być opcją. Wydarzenia nie mogą zostać utracone, to jest krytyczne dla misji. – fex