2012-10-20 72 views
2

我想要构建一个简单的游戏。它会有一个2D格子的游戏板,并且玩家将被允许在网格中的节点上放置令牌。什么是存储简单空间数据的最佳方式

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

元组渲染时,显示我预计需要空间查询收集数据网格的一部分的UI。滚动时,我期望类似的查询。根据玩家数量的不同,网格可能会变得很庞大,但实际上我并不期望它超出关系数据库可以轻松处理的范围。

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

+0

我对(地理)空间数据库没有经验,但从性能的角度看它们看起来很合适。特别的查询,比如'x之间的a和b和y之间的c和d'被认为是非常有效的。 –

+0

@Tomasz是的,这就是为什么我问。这里有很多,我很想知道从哪里开始寻找这个相对简单的问题。 – iwein

+0

我认为你应该保持简单,并使用你熟悉的东西,直到(或* IF *)证明不足。就像Tomasz说的那样,你可以在X和Y上进行简单的范围查询,那就很好了。 –

回答

2

与传统的(1维)索引相比,空间索引为您带来巨大的收益。像

x BETWEEN a AND b AND y BETWEEN c AND d 

查询将只能够使用索引无论是xy。这意味着DBMS将能够排除a-b条带(列)以外的记录,但其中的所有记录必须通过y值进行研究。 (无论您是否有xy的复合索引都没有关系,因为x可能具有无限的基数)。

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

相关问题