当前位置: 首页 > 面试题库 >

寻找与数据库设计相关的方式

万楷
2023-03-14
问题内容

我正在为一个日志分析器系统工作,该系统读取tomcat的日志并通过网页中的图表/表格显示它们。(我知道有一些现成的日志分析器系统,我正在重新创建轮子。但这是我的工作,我的老板想要。)

我们的tomcat日志按天保存。例如:

2011-01-01.txt
2011-01-02.txt
......

以下是我将日志导出到db并读取它们的方式:

1数据库结构

我有三个表:1)log_current:保存今天生成的日志。

2)log_past:保存今天之前生成的日志。

上面两个表拥有SAME模式。

+-------+-----------+----------+----------+--------+-----+----------+----------+--------+---------------------+---------+----------+-------+
| Id    | hostip    | username | datasend | method | uri | queryStr | protocol | status | time                | browser | platform | refer |
+-------+-----------+----------+----------+--------+-----+----------+----------+--------+---------------------+---------+----------+-------+
| 44359 | 127.0.0.1 | -        |        0 | GET    | /   |          | HTTP/1.1 |    404 | 2011-02-17 08:08:25 | Unknown | Unknown  | -     |
+-------+-----------+----------+----------+--------+-----+----------+----------+--------+---------------------+---------+----------+-------+

3)log_record:保存log_past的信息,记录日志已导出到log_past表中的日期。

+-----+------------+
| Id  | savedDate  |
+-----+------------+
| 127 | 2011-02-15 |
| 128 | 2011-02-14 |
..................
+-----+------------+

下表显示了2011-02-15的日志已导出。

2导出到数据

我有两个时间表工作。

1)日间工作。

在00:05:00,检查tomcat日志目录(/ tomcat / logs)以查找所有最近30天的日志文件(当然,其中包括昨天的日志。

检查log_record表以查看是否导出了一天的日志,例如,在 log_record中* 找不到 2011-02-16
,因此我将读取2011-02-16.txt并将其导出到log_past。
*

昨天导出日志之后,无论是否存在,我都将启动今天日志的文件监视器(2011-02-17.txt)。

2)文件监控

监视器启动后,它将每小时读取文件。读取的每个日志将保存在log_current表中。

3.tomcat服务器重启。

有时我们必须重启tomcat,所以一旦tomcat启动,我将删除所有log_current日志,然后进行 日常工作

4我的问题

1)两个表(log_current和log_past)。

因为如果将今天的日志保存到log_past,则无法确保所有日志文件(xxxx-xx-
xx.txt)都已导出到db。由于我每天都会在00:05:00进行检查,因此请确保必须导出今天之前的日志。

但是,这使得查询日志更困难了。

例如, 从2011-02-14 00:00:00到2011-02-15 00:00:00的 查询,这些日志必须位于log_past。

但如何 从2011-02-14 00:00:00至08:00:00 2011-02-17 ?(假设它2011-02-17 09:00:00
现在 )。

跨表查询很复杂。

另外,我一直认为我对表格和工作方式(导出/读取的计划工作)的要求不理想,因此任何人都可以提出好的建议?

我只需要导出和读取日志,就可以进行几乎实时的分析,其中实时意味着我必须通过图表/表格等显示当天的日志。


问题答案:

首先,IMO不需要2个不同的表log_currentlog_past。您可以在同一张表中插入所有行,logs然后使用进行说和检索。
select * from logs where id = (select id from log_record where savedDate = 'YOUR_DATE') 这将为您提供特定日期的所有日志。

现在,一旦您能够使用上述方法消除表格之间的当前和过去区别,我认为您在此处提出的问题将得到解决。:)



 类似资料:
  • 问题内容: 我想设计一个数据库,描述如下:每个产品在一个时间点只有一个状态。但是,产品的状态可能会在其生命周期内发生变化。如何设计产品和状态之间的关系,以便在当前时间轻松查询所有具有特定状态的产品?另外,有人可以给我一些与设计时间有关的设计数据库的详细信息吗?谢谢你的帮助 问题答案: 这是一个满足您指定要求的模型。 链接到时间序列数据模型 对于不熟悉关系建模标准的人,请 链接到IDEF1X符号 。

  • 问题内容: 我知道有几个答案类似于我所问的几个问题。但是他们的方法看起来并不令人信服。 我的问题是我如何为可以拥有书籍的类别和也可以拥有书籍的子类别构建数据库? 我已经设计了一个数据库,但是不相信这种方法。因此,如果有经验的家伙给我一些建议,改进或完全不同的方法,我将不胜感激。 这就是我的表格的样子(请记住,这不是实际的代码) 本书的桌子采用相同的设计。 问题答案: 无论是顶级类别还是子类别,都没

  • 我想验证我写的多线程应用程序的设计,并在几点上得到澄清/再保证。我提前为这么长的帖子道歉——我想把它分成几个问题,但是我必须引用相同的代码,它们似乎都是相互关联的,所以我选择把所有的东西放在一个帖子里。如果这是不合适的-请让我知道,我会打破这成多个职位。 这是我所拥有的: BatchService(Spring Singleton bean):接受上传指定目录或zip存档的请求。为此,它拥有Exe

  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想要改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 2年前关闭。 改善这个问题 我正在寻找有关关系数据库设计,性能调整等最佳实践的书/站点/教程。有很多“这里是归一化,这是ER图,”,但在实际示例中却没有太多。有人有想法么? 问题答案: 图书:仅凡人的数据库设计

  • 需求描述 有一个项目,面向学校德育评价,打算留一个发布通知的模块,现在拿不准如何设计数据库 个人方案 我个人有预想两种方案去解决 在mysql中建一个系统通知表 直接存redis中 第一种方案的优点是可以实现数据的持久化,但是对于一些时效性较强的通知【例如系统维护通知等】需要进行额外处理【因为基本上过了时效以后这条记录几乎不会再用到了】 第二种方案的优点是可以比较轻松的处理时效性问题,但是需要考虑

  • 我在研究一个问题,给我一个数字n,我必须找到下一个更大的元素,有相同的设置位数。当我在网上搜索时,我发现了一段有趣的代码,它在这里用了几行代码(有点神奇): 有人能用简单的步骤解释一下逻辑吗? 谢谢