【发布时间】:2017-03-27 03:49:02
【问题描述】:
您能否向我推荐一种在 Azure 云上存储游戏分数的替代解决方案?我正在寻找一种托管、运行成本低且易于上下扩展的存储选项。
输入数据:{ "player": 1, "score": 10 }(分数可能已经计算过了,不需要总结。)
应该可以选择进行 2 种类型的查询:
1. 获取玩家在计分板上的位置。
2. 获取位置 X 和 Y 之间的位置(球员和得分)。
应用程序无法在写入期间告知玩家在记分牌中的位置 - 后端数据库解决方案应提供该信息,或者数据布局应允许快速计算所有玩家之间的位置。 非实时精度是可以接受的。
当前的后端技术选择:Azure Web App (.NET Core)、存储(表、Blob、队列)。
使用 SQL Server 很明显如何做到这一点,但我想避免将 SQL Server 带入技术堆栈。由于有多个 Web 服务器,因此也不能选择保留在内存中。
您知道如何使用任何其他 Azure 服务存储和检索此类数据吗? DocumentDB、Data Lake 还是其他?
【问题讨论】:
-
Azure 表存储似乎适合你
-
使用单个分区键?
-
(1) 你预计有多少玩家?数百?数千?百万? (2) 您想跟踪所有玩家的位置还是只跟踪前 10 名? (3)
X和Y是固定段(如 1-10、11-20、..)还是它们的开始/范围?像 (1-next10, next10, ...)。请注意,使用固定分段时,某些分段可能会显示为空。 -
实际上数以万计,但让我们假装数以百万计,因为我想了解在这种情况下解决方案会有多么不同。需要 1. 跟踪 top100 玩家 2. 提供玩家 (player1) 与他的直接竞争对手的位置:#3010 player5 score; #3009 player1得分; #3008 player7得分。为了简单起见,我们可以忽略 #10000 以下的所有内容并显示“您的位置是 #10000+”
标签: database azure storage azure-storage azure-data-lake