场景:我有一个记录事件的服务,例如这个 CSV 示例:
#TimeStamp, Name, ColorOfPullover
TimeStamp01, Peter, Green
TimeStamp02, Bob, Blue
TimeStamp03, Peter, Green
TimeStamp04, Peter, Red
TimeStamp05, Peter, Green
例如彼得穿绿色的事件将经常连续发生。
我有两个目标:
- 保持数据尽可能小
- 保留所有相关数据
相关的意思是:我需要知道,一个人在哪个时间段穿着什么颜色。例如:
#StartTime, EndTime, Name, ColorOfPullover
TimeStamp01, TimeStamp03, Peter, Green
TimeStamp02, TimeStamp02, Bob, Blue
TimeStamp03, TimeStamp03, Peter, Green
TimeStamp04, TimeStamp04, Peter, Red
TimeStamp05, TimeStamp05, Peter, Green
在这种格式中,我可以回答以下问题:Peter 在 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