我有心思建立一个简单的游戏。它将有一个2D网格的游戏板,玩家可以在网格中的节点上放置令牌。
基本上我可以存储像{x, y, token}
当渲染显示网格一部分的UI时,我希望需要空间查询来收集数据。滚动时我会期待类似的查询。根据播放器的数量,网格可能变得庞大,但实际上我并不认为它会超出关系数据库可以轻松处理的范围。
我正在研究Spatial Databases,但我不知道这是否会增加问题而不是解决。这是怎么回事?我应该使用空间数据库,如果是,哪一个最适合这个(简单)问题?
答案 0 :(得分:2)
与传统(1维)索引相比,空间索引为您带来了巨大的好处。查询如
x BETWEEN a AND b AND y BETWEEN c AND d
只能使用x
或y
的索引。这意味着DBMS将能够排除a-b条带(列)之外的记录,但是对于其中的所有记录,必须研究y
值。 (如果您有x
和y
的复合索引,则无关紧要,因为x可能具有无限的基数。
空间索引可以同时处理两个维度,因此它将排除大部分数据库,它只需要测试与您的间隔相交的几个网格单位中的单个值。