作者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/cn.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