在数据库中存储大量标记的最佳方法是啥?

Posted

技术标签:

【中文标题】在数据库中存储大量标记的最佳方法是啥?【英文标题】:what is the best way to store a lot of markers in database?在数据库中存储大量标记的最佳方法是什么? 【发布时间】:2012-04-25 15:48:57 【问题描述】:

我想使用谷歌地图、phpmysqljavascript 创建一个网站,用户可以在其中留下带有消息的地图上的标记,以便其他用户能够在他们的地图上看到这个标记。所有这些都是实时进行的。

我想标记的数量会很大,所以我决定使用图块将标记存储在数据库中:

你可以在这里看到解释这个的图片

http://kunuk.wordpress.com/2011/11/05/google-map-server-side-clustering-with-asp-net/

http://www.soak.co.uk/blog/server-side-map-marker-clustering/

例如,首先确定客户端视口的坐标并计算要从服务器加载的图块,然后服务器确定所请求图块中的标记并将它们发送给客户端。

我的问题是组织将按图块存储标记的数据库的最佳方法是什么?

smn 可以举个例子吗?或者这个问题已经有标准的解决方案了?

【问题讨论】:

【参考方案1】:

我认为你过于复杂了。如果您要存储的唯一内容是标记(纬度和经度),那么单个数据库表就可以了。

类似:

身份证 user_id tile_id 纬度 隆 留言

【讨论】:

但是客户端向服务器请求了特定的瓦片,因此需要使用瓦片存储标记。 这就是为什么他建议将tile_id 作为一个字段,不是吗?因此,您可以按显示的图块请求标记。 soak.com 链接上的文字提到只有一张桌子在使用。您必须使用 PHP 计算每个缩放级别上每个图块的 ID,而不是在数据库中。 是的,我看到了 title_id 但想象一下我有 100 000 个标记,并且用户请求了某些图块 - 要找到这些标记(来自某些图块),我需要遍历所有这 100 000 个标记.为每个图块设置一个表格是个好主意吗? 您不必循环每个标记,一个简单的SELECT * FROM markers WHERE tile_id = x 不会花费太长时间,将它们分布在表格中不会使事情变得更快。【参考方案2】:

如果您打算使用大量标记,请务必查看 google fusion tables:

https://developers.google.com/fusiontables/

您可以在此处阅读更多相关信息:

https://developers.google.com/maps/articles/toomanymarkers

【讨论】:

是的,我试过了。但我不想用它,它有局限性。

以上是关于在数据库中存储大量标记的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

将样式应用于大量项目的最佳方法是啥?

存储元标记的最佳方式是啥?

构建具有大量数据通信的系统的最佳方法是啥?

在 MATLAB 中存储 16 × (2^20) 矩阵的最佳方法是啥?

在进程之间发送大量数据的最佳方法是啥?

使用 Datatables 在 Laravel 中处理大量行的最佳方法是啥?