2010-08-27 17 views
0

我有一個高流量的網站,記錄在一個表中點擊網絡點擊。有邏輯,以便丟棄重複的命中(在本例中,將命中定義爲重複的定義是任意的)。如何強制Rails跨連接同步事務到MySQL表?

問題:運行多個Web服務器(針對同一個數據庫),兩個或更多點擊可以同時到達不同的Web服務器,並且從每個服務器的角度來看,它們都不是重複的(而是通過串行化除了第一臺服務器之外的一臺服務器應該被丟棄)。因此,它們全部被寫入Hits表。

如果不更改數據庫模式以強制Hits表中的字段唯一性,我該如何強制Rails將事務同步到數據庫以確保沒有重複項被寫入?根據文檔,ActiveRecord事務僅在每個連接的基礎上執行,這不夠好(據我所知)。

回答

0

在MySQL中的事務總是每個連接,沒有其他方式可以告訴什麼是原子操作。

我認爲要做到這一點的唯一方法是,方法是將一個鎖全表或執行上的架構級別的完整性。

+0

我最終通過修改事物來允許一個唯一的字段/索引進行模式路由。謝謝。 – 2010-09-01 18:50:38