OpenStreetMap 데이터를 효율적으로 확장하는 방법


9

1 년이 넘는 시간 동안 저는 Mapnik 기반 타일 생성과 Nominatim 기반 지오 코딩에 모두 사용되는 OSM 데이터로 채워진 사내 PostGIS 서버를 운영하고 있습니다. 이것은 꽤 잘 작동합니다.

그러나 사용량이 기하 급수적으로 증가함에 따라 PostgreSQL 서버를 추가하여 안정성과 성능을 향상시키고 싶습니다. 그리고 나는 길을 잃었다.

PostgreSQL은 자체적으로 복제를 처리하지 않는 것처럼 보이기 때문에 PgPool-II와 같은 미들웨어를 사용하여 서버를 동기화하는 것에 대해 생각할 것입니다. 그러나 나는이 사용법에 필요한 것이 아니라는 것을 두려워합니다 : 모든 쓰기가 매일 동일한 정확한 시간에 수행되는 매우 높은 읽기-쓰기 비율.

내 질문은 간단합니다.이 서버를 동기화 상태로 유지하려면 어떻게 하시겠습니까? OpenStreetMap Foundation, MapQuest, Mapbox 또는 CloudMade에서이를 위해 무엇을해야합니까?

감사.

답변:


13

첫째, Postgres 9 이상에는 내장 된 복제 지원 기능이 있으며 이것이 바로 우리 (OpenStreetMap 운영 팀)가 기본 데이터베이스에 대해 Postgres 9.1에서 실행중인 것으로 간주합니다 (90 분 전).

OSM이 수행하는 작업에 대한 귀하의 질문에 대답하기 위해 지금까지 어떤 종류의 복제도 수행하지 않았습니다. 웹 사이트 뒤에 마스터 데이터베이스 역할을하고 원시 데이터를 보유하는 하나의 큰 Postgres 데이터베이스가 있습니다. 그런 다음 렌더링 및 지오 코딩을위한 보조 Postgres + Postgis 데이터베이스가 있으며 둘 다 플래닛 덤프 및 업데이트를 위해 diff를 사용하여 채워집니다.


Postgres 내장 복제에 대해 몰랐습니다. 이것은 아마도 일을 할 것입니다. 감사!
Pierre

1
또한 Postgres의 스트리밍 복제 기능을 사용하고 슬레이브를 마스터에 자동으로 폴백 할 수 있도록 기능을 확장하는 REPMGR ( repmgr.org )을 확인하십시오.
Shyam Sundar CS

4

여기에 두 가지 옵션이 있습니다.

  1. 데이터베이스 풀링 복제 http://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling , PG 클러스터는 동기식이며로드 밸런싱을 허용하므로 PG 클러스터를 사용합니다. 또한 마스터-슬레이브 아키텍처를 사용할 수 있지만 연결 풀링 및 비동기없이 모두 달성하려는 아키텍처 및 복제 속도에 따라 다릅니다. pgpoll-2에 대한 자세한 내용은 여기를 클릭하십시오 .-small FAQ ( http : //www.dalibo .org / _media / pgpool.pdf )
  2. WebOptimisation-Mapquest 및 OSF에서 서버 수준 + 연결 풀링에서 웹 캐싱을 사용하는 것으로 알고 있습니다. 즉, 일부 데이터를 캐시 할 때 Postgres / Postgis에서 너무 많은 요청을 요청하지 않습니다. 3. Postgis 최적화-DB 수준의 쿼리, 인덱스 및 데이터베이스 정규화 설교. postgis 데이터 유형에 대한 자세한 내용을보고 "PostGis in action"( http://manning.com/obe/ )으로 이동하여 서버를 해당 유형에 적용하십시오.

1
감사. 첫 번째 옵션은 확실히 선호됩니다. 두 번째는 전달을 위해 CDN을 사용하고 프론트 서버에서 로컬 Nginx / Memcached 캐시를 사용하여 부분적으로 수행됩니다.
Pierre
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.