我有一个高流量网站,它在表格中记录网络点击量,Hits。有适当的逻辑可以丢弃重复的命中(在此示例中,将命中定义为重复的定义是任意的)。
问题:在运行多个 Web 服务器(针对同一个数据库)的情况下,两个或多个命中可以同时到达不同的 Web 服务器,并且从每个服务器的角度来看,它们都不是重复的(而它们都是通过单个服务器序列化的)但第一个应该被丢弃)。因此,它们都被写入 Hits 表。
在不更改数据库模式以强制 Hits 表中的字段具有唯一性的情况下,我如何强制 Rails 将事务同步到数据库以保证不写入重复项?根据文档,ActiveRecord 事务仅在每个连接的基础上执行,这还不够好(据我所知)。