如何有效地扩展OpenStreetMap数据


9

一年多以来,我一直在运行内部装有OSM数据的PostGIS服务器,该服务器既用于基于Mapnik的图块生成,又用于基于Nominatim的地理编码,并按日重复进行更新。效果很好。

但是,随着使用量成倍增长,我想通过添加其他PostgreSQL服务器来获得更好的可靠性和性能。我有点迷路了。

由于PostgreSQL似乎并不自行处理复制,因此我会考虑使用诸如PgPool-II之类的中间件来保持服务器同步。但是,恐怕这种用法只不过是必要的:很高的读写比率,其中所有写入每天都在相同的确切时间完成。

我的问题很简单:您将如何使这些服务器保持同步?而且,OpenStreetMap Foundation,MapQuest,Mapbox或CloudMade对此做了什么?

谢谢。

Answers:


13

首先,Postgres 9和更高版本确实具有内置的复制支持,这是我们(OpenStreetMap操作团队)希望在现在(大约90分钟前)在Postgres 9.1上运行的主数据库上使用的东西。

为了回答有关OSM的问题,到目前为止,我们还没有进行任何类型的复制-在网站后面有一个大型的Postgres数据库充当主数据库并保存原始数据。然后有二级Postgres + Postgis数据库进行渲染和地理编码,这两个数据库都使用行星转储和差异进行填充以进行更新。


不了解Postgres内置复制。这很可能会完成这项工作。谢谢!
皮埃尔

1
还要签出REPMGR(repmgr.org),它使用Postgres的流复制功能并扩展了功能,以允许从站自动回退到主站。
Shyam Sundar CS

4

我可以在这里看到两个选项:

  1. 数据库池-复制http://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling,我会选择PG集群,因为它是同步的并允许负载平衡。您还可以使用主从结构,但没有连接池和异步,这全都取决于要实现的体系结构和复制速度。有关pgpoll-2的更多信息,请点击此处-small FAQ(http://www.dalibo .org / _media / pgpool.pdf
  2. WebOptimisation-就Mapquest和OSF而言,据我所知,它们在服务器级别+连接池中使用Web缓存。这意味着它不会从Postgres / Postgis请求太多,因为我缓存了一些数据。3.Postgis优化-在数据库级别宣讲查询,建立索引和数据库规范化。我将参加“ PostGis in action”(http://manning.com/obe/),以了解有关postgis数据类型的更多信息,并使您的服务器适应这些数据类型。

1
谢谢。绝对首选第一个选项。第二部分完成,使用CDN进行交付,并在前端服务器上使用本地Nginx / Memcached缓存。
Pierre
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.