以前没怎么写过后端的东西 最近打算搞点东西玩玩,开始自己写后端,各种坑啊,先问个数据库的问题。。。

2012-06-06 01:51:34 +08:00
 tokki
一个LBS约炮的东西, 你的位置坐标为 XY 你要找在你附近的1000米内的人
那么就是要查找所有坐标 在 X-1000 到X+1000 跟Y-1000 Y+1000的人

这种情况 如果应该怎么去设计表啊-。-

如果高访问量 应该如何去做呢

还有据说REDIS这种东西 很高级很强大 能否对这种场景起到帮助呢

谢谢啦
3214 次点击
所在节点    问与答
5 条回复
Livid
2012-06-06 01:53:37 +08:00
4sq 的这类数据是用 MongoDB 来存储和提供服务的。你可以 Google 一下 MongoDB Geo。
catfan
2012-06-06 02:25:12 +08:00
XY的值分开保存,查询的时候按条件筛选便可以。

WHERE 1000 < X < 2000 AND 1300 < Y < 2300
ling0322
2012-06-06 02:42:47 +08:00
我的建议是(X区域号,Y区域号,X,Y)这样建。其中对(X区域号,Y区域号)建一个联合的索引。区域号的意思就是, 每隔1000米编号-> 0~999:0#; 1000~1999:1#; 2000~2999:3#...

然后查找的时候根据你所处在的地点(X,Y)算出(X区域号,Y区域号)寻找到你所在的相关的区域(以及邻近的8个区域,因为有索引所以可以在O(1)时间中取得),再和这个区域中的人比较X和Y,最终得出人数。
coldear
2012-06-06 03:30:11 +08:00
用NoSQL的话,看这篇文章第6条 http://coolshell.cn/articles/7270.html
Geohash技术,具体我也没搞过
tokki
2012-06-06 09:34:33 +08:00
@Livid
@catfan
@ling0322
@coldear
谢谢你们

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/38521

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX