OpenStreetMap verilerini verimli bir şekilde ölçeklendirme


9

Bir yıldan uzun bir süredir, hem Mapnik tabanlı karo üretimi hem de Nominatim tabanlı coğrafi kodlama için kullanılan, günlük kopyalarla güncellenen OSM verileriyle dolu bir şirket içi PostGIS sunucusu kullanıyorum. Bu gayet iyi çalışıyor.

Ancak, kullanım katlanarak arttığından, ek PostgreSQL sunucuları ekleyerek daha iyi güvenilirlik ve performans elde etmek istiyorum. Ve ben biraz kayboldum.

PostgreSQL, çoğaltmayı tek başına işlemediğinden, sunucuları senkronize tutmak için PgPool-II gibi bir ara katman yazılımı kullanmayı düşünürdüm. Ama korkarım ki bu kullanım için gerekli olandan başka bir şey olmayacak: tüm yazmaların her gün aynı saatte yapıldığı çok yüksek okuma-yazma oranı.

Sorularım basit: Bu sunucuları senkronize tutmak için ne yapardınız? Ve bunun için OpenStreetMap Foundation, MapQuest, Mapbox veya CloudMade'de ne yapılır?

Teşekkürler.

Yanıtlar:


13

İlk olarak, Postgres 9 ve sonraki sürümler yerleşik çoğaltma desteğine sahiptir ve biz de (OpenStreetMap operasyon ekibi) ana veritabanı için Postgres 9.1 üzerinde çalıştığımız (yaklaşık 90 dakika önce) kullanmaya bakmayı umuyoruz.

OSM'nin ne yaptığına dair sorunuzu cevaplamak için, bugüne kadar herhangi bir çoğaltma yapmıyoruz - web sitesinin arkasında ana veritabanı olarak hareket eden ve ham verileri tutan büyük bir Postgres veritabanı var. Ardından, her ikisi de gezegen dökümü ve güncelleme için diffs kullanılarak doldurulmuş ikincil Postgres + Postgis veritabanları vardır.


Postgres yerleşik çoğaltma hakkında bilmiyordum. Bu büyük olasılıkla işi yapacak. Teşekkürler!
Pierre

1
Ayrıca , Postgres'in akış çoğaltma yeteneklerini kullanan ve bir köleyi otomatik olarak bir efendiye yedeklemeye izin veren işlevselliği genişleten REPMGR'ye ( repmgr.org ) bakın.
Shyam Sundar CS

4

Burada iki seçenek görebiliyorum:

  1. Veritabanı havuzlama - çoğaltma http://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling , senkronize olduğu ve yük dengelemesine izin verdiği için PG kümesini yaparım. Master-slaves mimarisi ile de gidebilirsiniz, ancak bağlantı havuzu oluşturma ve senkronize olmayan, her şey elde etmek istediğiniz mimariye ve çoğaltma hızına bağlıdır. Pgpoll-2 hakkında daha fazla bilgi - küçük SSS ( http: //www.dalibo .org / _media / pgpool.pdf )
  2. WebOptimisation - Mapquest ve OSF için bildiğim kadarıyla sunucu düzeyinde + bağlantı havuzu web önbellekleme kullandıklarını. Bu, bazı verileri önbelleğe aldığından Postgres / Postgis'ten pek çok istek istemeyeceği anlamına gelir. 3.Postgis optimizasyonları - DB düzeyinde sorgu vaazları, indeksleme ve veritabanı normalizasyonu. Postgis veri türleri hakkında daha fazla bilgi edinmek ve sunucunuzu bunlara uyarlamak için "PostGis çalışırken" ( http://manning.com/obe/ )

1
Teşekkürler. İlk seçenek kesinlikle tercih edilir. İkincisi kısmen, teslimat için bir CDN ve ön sunucularda yerel Nginx / Memcached önbellek kullanılarak yapılır.
Pierre
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.