在MYSQL表

时间:2017-07-10 18:11:39

标签: mysql

为了尝试简化,让我看看这是否更容易。我已经创建了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 ++。

0 个答案:

没有答案