作者wix3000 (癢,好吃)
看板GameDesign
標題[程式] 資料庫設計
時間Sun Nov 19 21:10:39 2017
嗯... 雖然感覺用noSQL可以很輕鬆解決
不過暫時還是只有MySQL可以用
想請問一下,假設做一款網路手遊
每個玩家都會有很多的資料,比如說擁有的卡片、編隊、某某任務的進度,道具數量等等
這些資料通常也是一筆一筆的
那這樣通常會以怎樣的型式儲存在資料庫中呢?
我目前想到的做法
1. 另外開一個表存這些資料,用ID關聯
不過這樣每個玩家的資料就全部擠在一起,搜索起來效率應該相當不妙
2. 直接轉JSON塞進欄位
感覺比較可行,不過每次讀寫都要裝包拆包感覺不太靈活
可讀性應該也很悽慘
3. 為每個玩家開不同的表
比如說一個wix3000就有wix3000_units、wix3000_items之類的表
這樣在query的時候就可以簡單的隔開其他使用者了
嗯... 不過這方法看起來挺蠢的
不知道版友們有沒有更專業一點的作法
可以討論一下
--
███ ︵︵︵︵ █◤ ◢█◤ ちから
██ /\|||█ ◢█◤ 「ひとりでは耐え切れぬ 雷 でもきっと、
▄█│‵╯︶︶| ██◤ # ふたりなら大丈夫私は信じる!」
▔█ ╲ ) ∕█████◣ +
+ █ ╮ - │██◣ ◥◥█◣ ◢ 第四巻 27ページ…
▂▄▆█│ │██◤* ◢████◣ 雷神の系譜 ψWix
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.226.219.237
※ 文章網址: https://webptt.com/m.aspx?n=bbs/GameDesign/M.1511097043.A.7F8.html
1F:推 damody: 就是1的方法 叫資料庫正規化 11/19 23:32
2F:→ damody: 不用3 現代資料庫優化的很好了 不要自作聰明 不會比較快 11/19 23:33
3F:→ damody: 一般vps可以每秒300到3000個query 寫個測試程式實際測比較 11/19 23:35
4F:→ damody: 快 11/19 23:35
5F:→ wix3000: 居然是阿D師 有神快拜 11/20 04:36
6F:推 Morshues: 當然是1阿! 11/20 10:41
7F:→ Morshues: 2的風險很大,你的資料格式一改變就有可能讓舊資料壞掉 11/20 10:42
8F:→ Morshues: 3的話沒聽過這種用法,你會幾乎沒辦法做資料統計 11/20 10:43
9F:推 damody: 另外nosql不一定比rds快 可以的話還是要測過 11/20 14:10
10F:→ b81314: 我不懂這有啥考慮 不就只有1嗎 11/21 09:11
11F:→ b81314: 資料結構的觀點來看 2和3明顯是大忌 11/21 09:15
12F:→ wix3000: 就... 覺得撈個資料要跑整張表感覺很慢 (? 11/21 21:48
13F:推 cjcat2266: 光靠感覺不準,凡事profile最準,再者資料庫一定會用 11/21 23:19
14F:→ cjcat2266: 資料結構加速,不可能去跑整張表 11/21 23:19
15F:推 hodsala: 就是1 SQL就是在做你說感覺很慢的這件事 11/23 06:32
16F:→ hodsala: DB不是一筆一筆找的 覺得看表不好看就寫個view就好啦 11/23 06:34
17F:→ hodsala: 要到你覺得慢的話可能要到百萬筆 那時備份或換表就好了 11/23 06:35
18F:→ LayerZ: 2跟3用index作? 11/24 15:36
19F:→ LayerZ: 不過遊戲的話存必要資料就好,其他放記憶體,DB讀寫很慢 11/24 15:37
20F:→ LayerZ: 像血量這種一直在變動的存DB會出人命 11/24 15:37
21F:推 adcmhack: 當然是1,搜尋慢就要優化囉 12/19 02:18