MYSQL:存储事件日志的最佳方法

时间:2016-02-25 03:07:08

标签: mysql relational-database document-oriented-db

我们都知道MYSQL是一个关系数据库;在我要编写的应用程序中,我需要使用关系数据库,主要是因为实体和表连接之间共享信息。

但我也有一个非常特殊的情况,我需要跟踪应用程序中发生的一些事件。例如,假设我有一个'User'表,其中包含一个名为'XP'的字段,现在我想保留所有事件,导致该用户更改'XP'。

嗯,最简单的解决方案是创建一个新表并使用指向负责用户的字段存储事件。但是这些表格变得非常大,并且填充了不必要的行,从而减慢了整个应用程序的速度。

如果我在面向文档的数据库上,当然这不是问题,但是使用MYSQL这会使一切变得缓慢。

我想在此了解您的意见,以寻找解决问题的可能方法,并将性能保持在合理的范围内。我没有在网上找到任何相关的研究或文章。

PS,我有这个想法,将更改保存为字段('User'表)中的JSON数组,但是然后读取字段,将其从文本转换,添加项目并再次保存它是非常不切实际的。

由于

1 个答案:

答案 0 :(得分:0)

您要跟踪哪些事件?使用触发器创建事件可能更实际(因此您不必在插入/更新/等上手动执行)。我还考虑尝试将基于您正在处理的数据的事件分离为以事件为中心的表,以减少您在给定关系上处理的数据量(例如,与USER相关的LOGIN_EVENT表)表上有一个USER_ID键,然后是一个单独的与相同键上的USER相关的REPORT_REQUEST_EVENT表。通过分离问题,您可以创建更高效​​的结构。