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



我正在考虑购买一个包含 5000 万条记录的位置数据集。拥有一个包含这么多条目的数据库,我将面临哪些问题?我计划在 heroku 上使用 Postgres。我是否会在使用 lat lng 运行查询(例如附近位置)时遇到问题?如何让这些查询运行得非常快?在 heroku 上与此相关的费用是多少?

问题有不同的风格。在这一点上,这是一个相当广泛的问题。首先,您需要很好地定义应用将支持的访问模式。您需要在 where 子句中使用的字段上构建索引以支持这些情况。如果没有索引,并发查询,即使只有几十个,也会压垮你的机器。

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

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

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

我对希洛库一无所知

最新更新