2012-07-08 112 views
1

我需要保留服务器上所有用户活动的历史记录。 活动涉及用户提交数据或一个过程。 该应用程序需要为约5万个并发用户设计。在数据库中保留用户历史记录

什么是最好的方法。如果我创建一个新的历史表,它会不会填充行考虑最坏情况下的庞大数字?

这样做的最佳方法是什么?

只是一个比喻;考虑一个拥有50k并发用户的图书馆,我必须保持每个用户的图书入住登记结帐的历史记录。考虑到用户的数量,它会不会失控吗?

回答

0

我想有一些遗漏的细节,你会怎么处理这些数据?你可以拿着它没有索引?或者你可以存档旧数据(旧的可以在一个小时前)。编写SQLDB的速度非常快,但是你设计了一个50K的并发用户活动,我建议你在内存中执行一些活动,并在用户活动中将其刷新到db中。

+0

SQL的写入时间有争议,但SQL能处理多少? 数据需要保存,索引不重要。只有在具体查询用户的历史记录时才会使用此数据。 – 2012-07-08 06:52:44

+0

建立你最糟糕的情况,并试一试。 – 2012-07-08 08:28:56

+0

每秒增加50000行...会耗尽桌子吗?那么select语句怎么样 – 2012-07-08 12:25:12

0

性能最佳,最安全的方法是在源表上使用触发器实施历史记录表。这是在一个封装对象(表)中实现安全性和实际业务规则的最佳方式。但是,如果您目前还没有编写服务器端例程的实践,或者您没有可以为您生成代码的数据字典系统,那么将服务器端转换为单一功能可能并不实际。

在代码中实现历史记录表具有将您保留在最熟悉的语言和习惯中的常见好处,但这意味着除了通过应用程序之外,您不能访问数据库。我当然不能在这里制定一个通用规则,这个决定最好由设计团队根据当前的情况和预期的未来需求作出。

+0

如果你是设计团队呢? – 2012-07-08 06:54:01

相关问题