2012-04-25 30 views
6

我目前正在製作一個在線多人國際象棋遊戲。我想知道是否適合用戶觸發器登錄每一個動作。Mysql:何時使用觸發器

然後,使用nodejs我將重複檢查觸發器表並更新觀察者的兩個球員&的視覺效果。

由於我只需要在數據庫中進行更改,視覺方面會自動跟進(使用循環函數檢查數據庫中更改的數據)。這樣做的目標是將遊戲的邏輯與視覺邏輯分離開來。

你們會推薦這種技術嗎?

回答

6

你描述了你的任務可能的技術解決方案。但我強烈建議不要這樣做。

這不會很好地擴展 - 它會爲數據庫和應用程序服務器增加很多開銷和負載。

有跡象表明,比例好得多其它輕質可能性:

  • 使用像(例如)redis消息隊列與node_redis客戶端。它內置了pubsub語義。
  • 抽象數據庫調用並將所有數據庫更新推送到消息隊列。
  • 例如,您可以使用HTTP流式傳輸器(例如jquery-streamjquery-socket),而不是使用「循環」功能(AJAX輪詢)來獲取狀態更新。這可以避免爲每個客戶端更新打開新的HTTP連接的開銷。
  • 使用服務器端的nodejs的事件驅動功能將新事件推送到客戶端連接。
+0

我忘記提及我正在使用nowJS(套接字庫)。通過使用它,唯一發生的池將是服務器每秒執行兩次以檢查更新。一旦找到更新,它將通過套接字請求推送給所有用戶。即使最終有一千個用戶,數據庫仍然會以相同的速率彙集,只能由服務器彙集。 這會對您的建議產生影響嗎?感謝您的幫助。 – Louis 2012-04-25 06:57:02

+0

@Louis您仍然會在數據庫服務器和文件系統上具有(可避免的)負載。 – Kaii 2012-04-25 07:21:31

+0

對於不使用Node.js而是PHP的人,你會推薦什麼解決方案? – 2014-04-17 01:44:23