用Python设计日志存储系统

假设我们有一些日志,每个日志包含唯一的ID和时间戳。Timestamp是具有以下格式的字符串:Year:Month:Day:Hour:Minute:Second,例如,2019:01:01:23:59:59。所有域都是零填充的十进制数字。

我们必须设计一个日志存储系统来实现以下功能-

  • void Put(int id,string timestamp):这将获取日志的唯一ID和时间戳,并将日志存储在存储系统中。

  • int [] Retrieve(字符串开始,字符串结束,字符串粒度):这将返回其时间戳在从开始到结束参数范围内的日志的ID。粒度参数指示要考虑的时间级别。例如,开始=“ 2019:01:01:23:59:59”,结束=“ 2019:01:02:23:59:59”,粒度=“天”,这意味着我们需要找到日志的范围为2019年1月1日至2019年1月2日。

所以,如果输入像

  • put(1,“ 2019:01:01:23:59:59”);

  • put(2,“ 2019:01:01:22:59:59”);

  • put(3,“ 2018:01:01:00:00:00”);

  • 检索(“ 2018:01:01:01:01:01”,“ 2019:01:01:23:00:00”,“年份”);

  • 检索(“ 2018:01:01:01:01:01”,“ 2019:01:01:23:00:00”,“小时”);

那么输出将为[1,2,3],因为我们需要返回2018和2019范围内的所有日志,而[1,2],因为我们需要返回所有从2018:01:01:01到2019开始的日志: 01:01:23,其中日志3超出了范围。

为了解决这个问题,我们将遵循以下步骤-

  • 定义初始化程序。

  • 日志:=一个新列表

  • 定义一个功能put()。这将需要id,时间戳

  • 在日志末尾插入id,时间戳

  • 定义一个功能retrieve()。这需要s,e,gra

  • index:=像{'Year':5,'Month':8,'Day':11,'Hour':14,'Minute':17,'Second':20} [gra]的映射

  • 开始:= s [从索引0到索引]

  • 结束:= e [从索引0到索引]

  • 返回(每个tid的tid,如果开始<=时间戳[从索引0到索引] <=结束,则为日志中的时间戳)

示例

让我们看下面的实现以更好地理解-

class LogSystem(object):

   def __init__(self):

      self.logs = []

   def put(self, id, timestamp):

      self.logs.append((id, timestamp))

   def retrieve(self, s, e, gra):

      index = {'Year':5, 'Month' : 8, 'Day' : 11, 'Hour' : 14, 'Minute' : 17, 'Second' :20}[gra]

      start = s[:index]

      end = e[:index]

      return (tid for tid, timestamp in self.logs if start <= timestamp[:index] <= end)

ob = LogSystem()ob.put(1, "2019:01:01:23:59:59")

ob.put(2, "2019:01:01:22:59:59")

ob.put(3, "2018:01:01:00:00:00")

print(list(ob.retrieve("2018:01:01:01:01:01","2019:01:01:23:00:00","Year")))

print(list(ob.retrieve("2018:01:01:01:01:01","2019:01:01:23:00:00","Hour")))

输入值

ob.put(1, "2019:01:01:23:59:59")

ob.put(2, "2019:01:01:22:59:59")

ob.put(3, "2018:01:01:00:00:00")

ob.retrieve("2018:01:01:01:01:01","2019:01:01:23:00:00","Year")

ob.retrieve("2018:01:01:01:01:01","2019:01:01:23:00:00","Hour")

输出结果

[1, 2, 3]

[1, 2]

以上是 用Python设计日志存储系统 的全部内容, 来源链接: utcz.com/z/338014.html

回到顶部