我是一名自由职业者,现在正在开发我的一款游戏,并尝试使用 Azure 表服务将我的用户移动记录在 Azure 表中。游戏以卡牌为基础。
流程是这样的:
许多用户(UserId)将在一张桌子(TableId)上玩。桌上的每个游戏都有一个唯一的 GameId。在每个游戏中,可能有多个具有唯一 DealId 的交易。同一张桌子上可以有多个具有相同 gameId 的交易。此外,每个用户在单个游戏中都将拥有相同的 DealId。
获胜者是在玩家多次机会后决定的。
问题:
我可以将 TableId 设为 PartitionKey,但我不确定为 RowKey 选择什么,因为 TableId 和 RowKey (GameId/UserId/DealId) 的组合在表中应该是唯一的。我可以有这样的条目:
TableId GameId DealId UserId 时间戳 1 201 300 12345 1 201 300 12567
可能我可以做的是创建 4 个 Azure 表,如下所示,但我做了很多重复;我也不能像这里提到的那样触发点查询https://azure.microsoft.com/en-us/documentation/articles/storage-table-design-guide/#guidelines-for-table-design
GameLogsByTableId -- 这将有 TableId 作为 PartitionKey 和 GUID 作为 RowKey GameLogsByGameId -- 这将有 GameId 作为 PartitionKey 和 GUID 作为 RowKey GameLogsByUserId -- 这将有 UserId 作为 PartitionKey 和 GUID 作为 RowKey GameLogsByDealId -- 这将有 DealId 作为 PartitionKey 和 GUID作为 RowKey
请问有什么想法吗?
TableId、GameId、DealId、UserId的格式很长。
我想查询这样的数据
- 从 TableId 中获取所有日志。
- 从 TableId 和特定游戏中获取所有日志(GameId)
- 在这个游戏(GameId)中获取用户(userid)的所有日志
- 获取交易中用户的所有日志(dealId)
- 给我一个日期表中的所有日志;同样对于用户、游戏和交易