我會說兩件事。
首先我回答你的問題。其次,我認爲你應該做的。
1.答:
SQL,它很容易開發和測試+生產一段時間。 用於玩家的表格,帶有INT或其他某個uniq值,不是字符串。 (我知道你說過它是一個樣本,但是爲了「長字」整數應該給你足夠的唯一ID's 同樣適用於Game。現在讓高分保持在一起的東西就是在兩者之間建立關係
得分(表關係):
[Player ID][Game_ID][Score]
其中得分是數值......我不知道您的每場比賽的最高分,讓你找出什麼類型就足夠了。
現在,這應該很容易實現一開始,讓它工作,但不要讓每一個直接調用數據庫。
建立一個3-TIER架構。製作數據圖層和商業圖層,然後製作「遊戲」圖層。 所以每場比賽都要求有自己的「遊戲ID」之類的businesslayer:
PlayerSaveScore(int gameID, int playerID, int score)
的Businesslayer然後檢查的「參數」是正確的大小,而且有效身份證件的,或許驗證了這個播放器實際已經在會話過去5分鐘等
驗證後,那麼Businesslayer卡列斯的「更新表」,如果記錄存在,其中數據層首先查找數據層。如果不是,那就插入它。
層設計 一旦你是「在線」(在空氣中)和遊戲變得流行,那麼你就可以開始「升級」,但你仍然可以得到一個「未來編擴展的解決方案」現在要去。請記住,每個遊戲都必須調用業務對象/圖層,而不是直接 - 永遠不要!
我一直在同「思想嚯這麼多次」但我一直陷入一個叫準備簡單的循環,而是變成現實的解決辦法那是快速啓動和運行幾乎從來沒有得到我。
所以先獲得100000名玩家!然後開始擔心,當它超出。
第2部分爲...如何...規模建議:
因此,這裏是我的原因爲建設「businesslayer/web服務」 ...... 的一切煩惱和所有最好的,您的速度問題現在可以很好地解決。
你可以很簡單地實現「緩存」。
您做出額外的表,如果你只有15場比賽,你不需要一臺PR。遊戲,但你決定。那隻能保持每場比賽的前100名。每次從玩家發佈新記錄時,都會在此「前100名」中進行選擇,並檢查發佈的值是否列入列表中。如果是這樣,那麼通過更新排名前100的表格並加速來達到這個目的。
構建Top 100的抽象爲靜態數據列表,例如。 XML或類似的靜態數據。根據您的平臺,您可以爲您選擇正確的「靜態格式」。
你甚至可以進一步提高速度。只需保持每場比賽前100名所需的最小值即可。這將是一個記錄公關。遊戲。
然後將玩家得分與遊戲的「最高分100分」進行比較......如果上面有,那麼你有一些「緩存/索引」來做,然後你稱之爲「巨型排序」:o)
明白了嗎?我知道它是一個很長的答案,但我想發佈一個「完整的」解決方案。
希望你將標誌着這是你的答案:O)
嗯,謝謝,但(總是有「but」,不是嗎?): 1.我不想那樣構建。我不擔心成長。這是我的要求。我知道該期待什麼,並有我的理由。所以我只需要把這個看作是給定的;不是因爲我確信我是那些在一夜之間如此受歡迎的「特殊」人羣中的一員 - 但它只是它需要完成的方式,並且存在客觀要求,討論哪些問題真的超出了我的問題。抱歉。 2.您的解決方案中無需進行任何調整:經常和多次寫入;改變每個球員的位置。 不幸的是;-( – alexeypro 2010-03-26 04:31:18
@alexeypro - 當有人給你寫這樣一個很長的答案,很詳細,有趣和正確的時候,即使你不想使用它,請至少給它豎起大拇指! - ) – 2010-03-26 19:59:55
@Etamar L,謝謝。 – BerggreenDK 2010-04-09 02:10:25