0

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

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

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

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

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

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

谢谢

4

1 回答 1

0

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

于 2016-02-25T03:23:46.913 回答