2

我有一个想法来构建一个简单的游戏。它将有一个 2D 网格的棋盘,玩家可以在网格的节点上放置代币。

基本上我可以像这样存储元组{x, y, token}

在渲染显示部分网格的 UI 时,我希望需要空间查询来收集数据。滚动时,我希望有类似的查询。根据玩家的数量,网格可能会变得很大,但实际上我不希望它的增长超出关系数据库可以轻松处理的范围。

我正在研究Spatial Databases,但我不知道这是否会增加比它解决的问题更多的问题。解决这个问题的方法是什么?我应该使用空间数据库吗?如果是,哪一个最适合这个(简单)问题?

4

1 回答 1

2

与传统(一维)索引相比,空间索引为您带来了巨大的好处。像这样的查询

x BETWEEN a AND b AND y BETWEEN c AND d

将只能使用索引 forxy. 这意味着 DBMS 将能够排除 ab 条带(列)之外的记录,但对于其中的所有记录,它必须通过y值进行筛选。(如果你有一个复合索引并不重要xy因为 x 可能有无限的基数)。

空间索引可以同时处理两个维度,因此它将排除大部分数据库,它只需要测试与您的区间相交的几个网格单元中的单个值。

于 2013-12-05T09:39:36.163 回答