与在数据库中拥有5000万行相关的问题

时间:2015-01-28 18:44:06

标签: database postgresql heroku

我正在寻找购买拥有5000万条记录的位置数据集。使用这么多条目的数据库,我将面临哪些问题?我打算在heroku上使用Postgres。我是否会遇到使用lat lng运行附近位置等查询的问题?如何让这些查询运行得非常快?在heroku上有什么与此相关的成本?

1 个答案:

答案 0 :(得分:1)

问题有不同的风格。这是一个非常广泛的问题。 首先,您需要很好地定义应用程序支持的访问模式。您需要在where子句中使用的字段上构建索引以支持这些情况。没有索引,并发查询,甚至只有几十个,可能会破坏你的机器。

对于PostGIS中的地理空间查询,您还需要使用每条记录的纬度来创建该数据的空间索引,以构建点几何以填充几何字段。使用具有空间索引的几何字段将使空间查询非常快。

另一种帮助提高访问速度的方法是使用表分区,并将每个表的数据文件放在不同的挂载点上,其中分区基于某个位置(如geohash前缀范围或其他内容)。这是非常先进的东西,除非你有很多dba / geo经验,否则你需要做很多阅读来实现它。

无论如何,如果你期望非常高的并发性,你将需要一个非常强大的盒子。 或者,如果您的用例基本上是只读的,则可以使用Apache SOLR Cloud或ElasticSearch等方法来支持查询,包括点几何查询,BBox和多边形查询。 ElasticSearch是集群的,因此它将通过分片等方式帮助分发查询.SOLR Cloud将执行相同的操作(基本上)。我现在针对一个10节点的ElasticSearch集群开发了7.5亿条记录,每条记录都是一个地理点加上一堆其他字段。如果您的用例不是具有高并发性和同时大量写入负载的用例,则这些是重载替代方案。此外,如果您需要使用所有postGis分析函数,st_ *函数,那么您可能还需要坚持使用PostGIS。

我对heroku一无所知

HTH