我正在开发一个包含大量事件需要跟踪的 Web 应用程序。我将在大约 10 个 Web 服务器中安装该应用程序,并且需要将跟踪事件保存在数据库中以便进行分析。
我每分钟将收到 10 万个事件 = 每天 1.44 亿个事件,事件行包括(事件类型、用户 ID、对象 ID、上下文 ID、会话 ID、时间戳)
我考虑将它们存储在 MyISAM 表中,然后每天根据日期更改表名(即 log20090826、log20080827 等)。您还有其他/最好的想法吗?如果性能更高,我可以使用其他 RDBMS。
另一个问题:是否有任何方法可以知道某一行的时间戳而无需明确写出(不占用空间)?
谢谢,安德里亚
答案1
对于如此大量的数据,我建议您使用文本日志文件并对其进行解析。 6 个月后,您将拥有 26,000 百万条记录,我确信您将无法使用 SQL 对其进行分析。
此外,如果这很重要,您可以尝试将数据记录在 BigTable 或 Hadoop 中。由于您的数据模型,这些非 SQL 数据库将很好地完成这项工作。
这里是一篇对您有帮助的文章。
答案2
MyISAM 没问题,只要确保使用“INSERT DELAYED”准备查询,这样服务器就可以放松一点:)