我需要保留服务器上所有用户活动的历史记录。活动涉及用户提交数据或一个过程。该应用程序需要为大约 50k 并发用户设计。
最好的方法是什么。如果我创建一个新的历史表,考虑到最坏的情况,它不会填充大量行吗?
最好的方法是什么?
只是打个比方;考虑一个有 50k 并发用户的图书馆,我必须保留每个用户的图书签入签出历史。考虑到用户数量,它不会失控吗?
我认为有一些细节缺失,你打算如何处理这些数据?你能在没有索引的情况下持有它吗?或者你可以存档旧数据(旧的可以是一个小时前)。
SQLDB 写入速度非常快,但是您设计了 50K 并发用户活动,我建议您对用户活动执行一些内存分桶,并在 X 活动时将其刷新到数据库。
最佳性能和最安全的方法是在源表上实现带有触发器的历史表。这是在一个封装对象(表)中实现安全性和实际业务规则的最佳方式。但是,如果您目前没有对服务器端例程进行编码的实践,或者您没有可以为您生成代码的数据字典系统,那么针对单个功能进入服务器端可能不切实际。
在代码中实现历史表通常有利于保持您最熟悉的语言和习惯,但这意味着您不能允许访问您的数据库,除非通过您的应用程序。我当然不能在这里做出一般规则,这个决定最好由设计团队根据手头的情况和预期的未来需求做出。