2016-08-21 25 views
1

我只想要一個關於如何建立一個帶有實時記錄的數據庫的方法,所以不要只是downvote。我不期望任何代碼。建立一個實時數據庫(方法)

目前我有一個擁有大約2千用戶的MySql數據庫,但他們正在獲得更多。每個玩家/用戶都有幾個點,通過某些動作增加或減少。

我的目標是,這個數據庫被刷新大約每秒,並與更多的積分用戶向上移動和其他下移...等等

我的問題是,究竟是什麼「活的最好方法數據庫「,記錄必須每秒更新一次。在MySql中,我可以運行基於時間的操作,這些操作正在執行SQL命令,但這不是我認爲的最大方式。有人可以提出一個好方法來處理這個問題嗎?例如。其他數據庫提供者如MongoDB或其他東西?

編輯

這不起作用客戶端,所以我不能簡單地推/張貼到由於一些基於時間的事件DATABSE。爲了解釋:用戶正在應用程序中訓練他的角色。這次培訓(獲得1級)需要12個小時。時間過後,記錄應該在數據庫AUTOMATICALLY中更新,如果用戶沒有發送他自己的發佈請求(如果用戶沒有登錄),其他用戶應該在他的個人資料中看到更新的數據。

+0

如果發生玩家行爲,則將其存儲在您的表格中。要獲得數據的實時視圖,請在每次刷新GUI時運行特定查詢 –

+0

不,這並不容易,因爲某些任務需要大約1天或更長時間才能完成。如果用戶登錄,我只能將它們推送/發佈到服務器上,而且可能是一個事件需要1天,但他在1周後登錄,此時不會更新記錄。 @juergend – Anokrize

+0

你可以使用jquery ajax來達到這個目的 –

回答

1

您需要接受排名在某種程度上會過時的事實。你的困境與任何其他遊戲平臺(或SO排名)沒有什麼不同。業務決策已經到位,並不斷得到審查的陳舊程度。例如,以標籤上的排行榜爲例。或者最近更新的個人資料頁更新更頻繁,而格林威治標準時間凌晨4點左右。

考慮使用MySQL事件。它是內置功能,可以替代對cron任務的需求。如果感興趣,我有3個事件相關的鏈接關閉我的個人資料頁面。您可以根據定時計劃(您對陳舊度的容忍度)計算排名,並且用戶對它們的請求速度會很快(比Gordon快)。另一方面,它們是陳舊的。

考慮不要保存(寫入)等級信息,而只關注填寫其他數據的插槽。並在飛行中獲得您的排名。舉個例子,看這個排名從戈登回答here。它是動態的,至少在那個時候按照要求運行非陳舊,並且不需要事件。

知道只有你應該決定什麼是可容忍的用戶體驗。

+0

感謝您的詳細解答。所以你會建議我在MySQL中使用事件?就像每10秒計算一次排名或類似的事情?是否有可能計算出數以千計的記錄或這是非常慢?如果是,是否有不同的解決方案? – Anokrize

+0

如果我錯過了一些重要的事實,請參閱我的編輯。 – Anokrize

相關問題