为了尝试简化,让我看看这是否更容易。我已经创建了3个虚构的JSON表示我想要存储在MySQL中的状态。我正在寻找一些关于存储它们的最佳方法的建议。特别是“状态”数据是我不太确定如何处理的部分。
如果有帮助,我会找到每轮创建一个特定的数据库表。
第1轮的用户状态
{
"user": 1,
"round": 0,
"move": 0,
"points": 10,
"state": [
100, 200, 300, 10, 50
]
}
第2轮的用户状态
{
"user": 1,
"round": 1,
"move": 3,
"points": 150,
"state": [
10, 50, 800
]
}
第3轮的用户状态
{
"user": 1,
"round": 2,
"move": 7,
"points": 1175,
"state": [
[ 100, 200, 300 ],
[ 40, 10, 20 ],
[ 800, 1000, 50, 90, 20 ]
]
}
以下原帖
我正在开发一款利用MySQL的游戏。游戏适用于轮次,其中一轮代表一组动作。可能的移动可以由一维数组或多维数组表示。例如:
[ 100, 200, 300, 50, 10 ]
或
[
[ 100, 200, 300, 50, 10 ],
[ 20, 500, 10, 5, 800 ],
[ 5, 1, 4 ]
]
值始终为整数。并且可以看出,在多维情况下,每行可能不是相同的长度。在一维情况下,长度可以是任意的。但是,对于给定的一轮,阵列长度是固定的。每轮定义长度的方差以及是一维还是多维。
可以想到由子轮组成的回合的多维情况。一旦子轮通过,它将进入下一个子轮,直到所有子轮完成为止。
玩一轮的玩家可以退出,但状态将被保存。因此,玩家可以进行多次“保存”回合。
由于播放器可以在不同的设备上播放,我不想将圆形状态存储在设备上。相反,我想按需服务国家。目前,客户端向服务器提交移动,服务器将以更新的状态响应。但是现在,没有持久性,所以如果服务器出现故障,那么状态就会丢失(仍然在开发中,所以现在不是问题)
我正在寻找使用MySQL保存此状态的方法。
我想到的一种方法是每轮都有一个DB表,但这并不能解决一维或多维数组的存储方式。在这里,我想象user_id将是主键。
另一个是DB表,可以处理存储任意数据。在这里,我想主键是user_id和round_id的组合。
当然,桌子需要存储一些额外状态,例如移动次数,轮次中获得的分数等等。
要表示“数组数据”,JSON数据类型或编码字符串或二进制blob中的数据最好吗?我更喜欢在解码时不会花费大量额外时间的东西(例如,一些JSON编码/解码器并不那么快)。试着确定一些好的选择。
服务器代码是C ++。