[請益] 資料庫設計

看板GameDesign (遊戲設計)作者 (癢,好吃)時間7年前 (2017/11/19 21:10), 編輯推噓6(6015)
留言21則, 8人參與, 7年前最新討論串1/1
嗯... 雖然感覺用noSQL可以很輕鬆解決 不過暫時還是只有MySQL可以用 想請問一下,假設做一款網路手遊 每個玩家都會有很多的資料,比如說擁有的卡片、編隊、某某任務的進度,道具數量等等 這些資料通常也是一筆一筆的 那這樣通常會以怎樣的型式儲存在資料庫中呢? 我目前想到的做法 1. 另外開一個表存這些資料,用ID關聯 不過這樣每個玩家的資料就全部擠在一起,搜索起來效率應該相當不妙 2. 直接轉JSON塞進欄位 感覺比較可行,不過每次讀寫都要裝包拆包感覺不太靈活 可讀性應該也很悽慘 3. 為每個玩家開不同的表 比如說一個wix3000就有wix3000_units、wix3000_items之類的表 這樣在query的時候就可以簡單的隔開其他使用者了 嗯... 不過這方法看起來挺蠢的 不知道版友們有沒有更專業一點的作法 可以討論一下 -- ██ ︵︵︵︵ ◢█◤ ちから /\||| ◢█◤ ひとりでは耐え切れぬ でもきっと、 │‵╯︶︶| ██◤ # ふたりなら大丈夫私は信じる!」 ╲ ) ∕█████ + + ╮ - │█◣ ◥◥█◣ 第四巻 27ページ… ▂▄▆│ │█◤* ◢████◣ 雷神の系譜    ψWix -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.226.219.237 ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1511097043.A.7F8.html

11/19 23:32, 7年前 , 1F
就是1的方法 叫資料庫正規化
11/19 23:32, 1F

11/19 23:33, 7年前 , 2F
不用3 現代資料庫優化的很好了 不要自作聰明 不會比較快
11/19 23:33, 2F

11/19 23:35, 7年前 , 3F
一般vps可以每秒300到3000個query 寫個測試程式實際測比較
11/19 23:35, 3F

11/19 23:35, 7年前 , 4F
11/19 23:35, 4F

11/20 04:36, 7年前 , 5F
居然是阿D師 有神快拜
11/20 04:36, 5F

11/20 10:41, 7年前 , 6F
當然是1阿!
11/20 10:41, 6F

11/20 10:42, 7年前 , 7F
2的風險很大,你的資料格式一改變就有可能讓舊資料壞掉
11/20 10:42, 7F

11/20 10:43, 7年前 , 8F
3的話沒聽過這種用法,你會幾乎沒辦法做資料統計
11/20 10:43, 8F

11/20 14:10, 7年前 , 9F
另外nosql不一定比rds快 可以的話還是要測過
11/20 14:10, 9F

11/21 09:11, 7年前 , 10F
我不懂這有啥考慮 不就只有1嗎
11/21 09:11, 10F

11/21 09:15, 7年前 , 11F
資料結構的觀點來看 2和3明顯是大忌
11/21 09:15, 11F

11/21 21:48, 7年前 , 12F
就... 覺得撈個資料要跑整張表感覺很慢 (?
11/21 21:48, 12F

11/21 23:19, 7年前 , 13F
光靠感覺不準,凡事profile最準,再者資料庫一定會用
11/21 23:19, 13F

11/21 23:19, 7年前 , 14F
資料結構加速,不可能去跑整張表
11/21 23:19, 14F

11/23 06:32, 7年前 , 15F
就是1 SQL就是在做你說感覺很慢的這件事
11/23 06:32, 15F

11/23 06:34, 7年前 , 16F
DB不是一筆一筆找的 覺得看表不好看就寫個view就好啦
11/23 06:34, 16F

11/23 06:35, 7年前 , 17F
要到你覺得慢的話可能要到百萬筆 那時備份或換表就好了
11/23 06:35, 17F

11/24 15:36, 7年前 , 18F
2跟3用index作?
11/24 15:36, 18F

11/24 15:37, 7年前 , 19F
不過遊戲的話存必要資料就好,其他放記憶體,DB讀寫很慢
11/24 15:37, 19F

11/24 15:37, 7年前 , 20F
像血量這種一直在變動的存DB會出人命
11/24 15:37, 20F

12/19 02:18, 7年前 , 21F
當然是1,搜尋慢就要優化囉
12/19 02:18, 21F
文章代碼(AID): #1Q4OBJVu (GameDesign)
文章代碼(AID): #1Q4OBJVu (GameDesign)