2012-10-20 75 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可能具有無限的基數)。

空間索引可以同時處理兩個維度,因此它將排除大部分數據庫,只需要在與您的間隔相交的幾個網格網格中測試單個值。

相關問題