場景: 我有記錄的事件一樣在這個CSV如服務:歸結事件的時間間隔
#TimeStamp, Name, ColorOfPullover
TimeStamp01, Peter, Green
TimeStamp02, Bob, Blue
TimeStamp03, Peter, Green
TimeStamp04, Peter, Red
TimeStamp05, Peter, Green
事件例如彼得穿着綠色將連續發生。
我有兩個目標:
- 保持數據儘可能小
- 保留所有相關數據
相關辦法:我想知道,在這種時間跨度一個人是穿着什麼顏色。 E.g:
#StartTime, EndTime, Name, ColorOfPullover
TimeStamp01, TimeStamp03, Peter, Green
TimeStamp02, TimeStamp02, Bob, Blue
TimeStamp03, TimeStamp03, Peter, Green
TimeStamp04, TimeStamp04, Peter, Red
TimeStamp05, TimeStamp05, Peter, Green
在此格式下,我可以回答這樣的問題:哪種顏色彼得穿着在時間TimeStamp02? (我可以安全地假定,每個人穿在之間的兩個記錄了相同顏色的事件相同的顏色。)
主要問題: 我可以使用已經存在的技術來實現這一目標?即我可以提供連續的事件並提取並存儲相關數據?
準確地說,我需要實現一個像這樣的算法(僞代碼)。針對CSV示例的每一行都調用OnNewEvent
方法。其中參數event
已經包含來自該行的數據作爲成員變量。
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
它應該是可能的logstash做到這一點,但問題是,你必須做一個elasticsearch要求每行檢索最新的條目,這將使過程非常緩慢。這就是爲什麼我不認爲logstash是正確的工具。 – baudsp
什麼是數據量,以及發生新事件時需要多快反應?如果有些事件丟失了,可以嗎? – ffeast
對事件的反應可能會很慢。例如。 1天延遲是可以接受的。所以,一天一個定時任務可能是一個選擇。 事件不會丟失,這是關鍵任務。 – fex