与数据库中 5000 万行相关的问题
Problems associated with having 50 million rows in database
我正在考虑购买包含 5000 万条记录的位置数据集。如果数据库包含这么多条目,我将面临哪些问题?我计划在 heroku 上使用 Postgres。我会遇到 运行ning 使用经纬度查询附近位置的问题吗?我怎样才能真正快速地将这些查询 运行 ?在 heroku 上与此相关的费用是多少?
问题有不同的形式。在这一点上这是一个相当广泛的问题。
首先,您需要很好地定义您的应用程序将支持的访问模式。您将需要在 where 子句中使用的字段上构建索引以支持这些情况。如果没有索引,并发查询,即使只有几十个,也会压垮你的机器。
对于 PostGIS 中的地理空间查询,您还需要使用每条记录的经纬度在该数据上创建空间索引,以构建点几何以填充几何字段。拥有带空间索引的几何字段将使空间查询非常快。
另一种提高访问速度的方法是使用 table 分区,并将每个 table 的数据文件放在单独的挂载点上,其中分区基于某个位置(如 geohash前缀范围之类的)。这是非常高级的东西,除非您有很多 dba/geo 经验,否则您需要大量阅读才能实现它。
无论如何,如果您期望非常高的并发性,您将需要一个非常强大的盒子。
或者,如果您的用例基本上是只读的,您可以使用 Apache SOLR Cloud 或 ElasticSearch 之类的东西来支持您的查询,包括点几何查询、BBox 和多边形查询。 ElasticSearch 是集群的,因此它将有助于通过分片等方式分发查询。SOLR Cloud 将做同样的事情(本质上)。我现在针对一个 10 节点的 ElasticSearch 集群进行开发,该集群有 7.5 亿条记录,每条记录都是一个地理点加上一堆其他字段。如果您的用例不是同时具有高并发性和高写入负载的用例,那么这些是重型替代方案可能不是必需的。此外,如果您需要使用所有 postGis 分析函数,st_* 函数,那么您可能需要坚持使用 PostGIS。
我对heroku一无所知
HTH
我正在考虑购买包含 5000 万条记录的位置数据集。如果数据库包含这么多条目,我将面临哪些问题?我计划在 heroku 上使用 Postgres。我会遇到 运行ning 使用经纬度查询附近位置的问题吗?我怎样才能真正快速地将这些查询 运行 ?在 heroku 上与此相关的费用是多少?
问题有不同的形式。在这一点上这是一个相当广泛的问题。 首先,您需要很好地定义您的应用程序将支持的访问模式。您将需要在 where 子句中使用的字段上构建索引以支持这些情况。如果没有索引,并发查询,即使只有几十个,也会压垮你的机器。
对于 PostGIS 中的地理空间查询,您还需要使用每条记录的经纬度在该数据上创建空间索引,以构建点几何以填充几何字段。拥有带空间索引的几何字段将使空间查询非常快。
另一种提高访问速度的方法是使用 table 分区,并将每个 table 的数据文件放在单独的挂载点上,其中分区基于某个位置(如 geohash前缀范围之类的)。这是非常高级的东西,除非您有很多 dba/geo 经验,否则您需要大量阅读才能实现它。
无论如何,如果您期望非常高的并发性,您将需要一个非常强大的盒子。 或者,如果您的用例基本上是只读的,您可以使用 Apache SOLR Cloud 或 ElasticSearch 之类的东西来支持您的查询,包括点几何查询、BBox 和多边形查询。 ElasticSearch 是集群的,因此它将有助于通过分片等方式分发查询。SOLR Cloud 将做同样的事情(本质上)。我现在针对一个 10 节点的 ElasticSearch 集群进行开发,该集群有 7.5 亿条记录,每条记录都是一个地理点加上一堆其他字段。如果您的用例不是同时具有高并发性和高写入负载的用例,那么这些是重型替代方案可能不是必需的。此外,如果您需要使用所有 postGis 分析函数,st_* 函数,那么您可能需要坚持使用 PostGIS。
我对heroku一无所知
HTH