4

我正在开发一个需要查询一个非常大的人口密度数据库的 Web 应用程序。数据基本上是纬度、经度和人口数量(您可以将其抽象为lat, lon, pop)。

我将为此使用 MySQL 和 PHP。数据非常精细,因此点的总数非常大——大约数十亿。(老实说,我现在还不知道它有多大;我还没有完整的数据,只是可以玩的样本。)服务器只是一个廉价的服务器农场机器(例如 Bluehost)。

该应用程序将尝试聚合以特定纬度和经度坐标为中心的任意半径圆圈的人口数据。所以基本上我会说,“告诉我一个以lat, lon为中心的半径为x的圆的总人口。” 这可能只涉及编写一个非常简单的求和函数。

鉴于上述所有情况,以及希望尽可能快速和高效的愿望,我的问题是:最好的数据库模式是什么?我看过这里并学习了一些关于这种数据存储的很好的基础知识(浮点数适用于纬度/经度数据,BETWEEN 语句比 < 和 > 运算符快),但我想知道,如果对于大量数据,有一个比拥有数十亿行和三个字段(例如lat、lon、pop)的表更好的方法。

我想到的可能的想法是将所有主要的经度标题分开到单独的表格中,但我不知道这是否真的会加快速度。(除了索引之外,我对 MySQL 优化了解不多。)另一个相关的想法是为各种数据“块”(例如特定的lat x lon正方形)存储超长的十六进制数据字符串。另一种选择是本质上使用大的二进制位图并动态解码它们(但是,这让我觉得我的相对便宜的服务器管理起来不切实际)。

但我不是 DBA,甚至不是真正的程序员(我不是初学者,但我不是专业人士),所以我很想听听有关如何做到这一点的任何其他建议,并且考虑到当前的服务器处理能力,这是否是一个疯狂的想法。

4

0 回答 0