Como escalar os dados do OpenStreetMap eficientemente

9

Há mais de um ano, estou executando um servidor PostGIS preenchido com dados OSM, usado para geração de blocos com base no Mapnik e geocodificação baseada em Nominatim, atualizado com replicações diárias. Isso funciona muito bem.

No entanto, como o uso está crescendo exponencialmente, eu gostaria de obter melhor confiabilidade e desempenho adicionando servidores PostgreSQL adicionais. E eu meio que perdi.

Como o PostgreSQL não parece lidar com a replicação por si só, eu pensaria em usar um piede de middleware como o PgPool-II para manter os servidores em sincronia. Mas temo que não seja nada além de necessário para esse uso: taxa de leitura / gravação muito alta, em que todas as gravações são feitas no mesmo horário todos os dias.

Minhas perguntas são simples: o que você faria para manter esses servidores em sincronia? E o que é feito para isso no OpenStreetMap Foundation, MapQuest, Mapbox ou CloudMade?

Obrigado.

    
por Pierre 04.04.2012 / 11:24

2 respostas

13

Primeiramente, o Postgres 9 e posterior têm suporte de replicação embutido e é isso que nós (a equipe de operações do OpenStreetMap) esperamos usar agora que estamos (a cerca de 90 minutos atrás) rodando no Postgres 9.1 para o banco de dados principal .

Para responder à sua pergunta sobre o que é o OSM, bem até hoje não fazemos nenhum tipo de replicação - há um grande banco de dados do Postgres atuando como o banco de dados mestre por trás do site e mantendo os dados brutos. Existem, então, bancos de dados Postgres + Postgis secundários para renderização e para geocodificação, sendo que ambos são preenchidos usando dumps e diffs do planeta para atualização.

    
por 04.04.2012 / 12:24
4

Eu posso ver duas opções aqui:

  1. Pool de banco de dados - replicação link , gostaria que o cluster do PG fosse síncrono e permitisse o balanceamento de carga. Você também pode ir com arquitetura master-slaves, mas sem pool de conexão e assíncrono, tudo depende da arquitetura e da velocidade de replicação que você deseja alcançar. Mais informações sobre o pgpoll-2 aqui -small FAQ ( link )
  2. WebOptimisation - para Mapquest e OSF, até onde eu sei, eles usam o cache da Web no nível do servidor + pool de conexão. Isso significa que não solicitaria ao Postgres / Postgis tantas solicitações quanto eu armazena alguns dados em cache. Otimizações 3.Postgis - pregando consulta no nível de banco de dados, indexação e normalização de banco de dados. Eu iria para "PostGis em ação" ( link ) para aprender mais sobre tipos de dados postgis e adaptar seu servidor para eles
por 04.04.2012 / 12:06