Cách mở rộng dữ liệu OpenStreetMap hiệu quả


9

Trong hơn một năm nay, tôi đang chạy một máy chủ PostGIS nội bộ chứa đầy dữ liệu OSM, được sử dụng cho cả thế hệ gạch dựa trên Mapnik và mã hóa địa lý dựa trên Nominatim, được cập nhật với các bản sao ngày. Điều này hoạt động khá tốt.

Tuy nhiên, khi việc sử dụng đang tăng theo cấp số nhân, tôi muốn đạt được độ tin cậy và hiệu suất tốt hơn bằng cách thêm các máy chủ PostgreQuery bổ sung. Và tôi bị lạc.

Vì PostgreSQL dường như không tự xử lý sao chép, nên tôi sẽ nghĩ về việc sử dụng một phần mềm trung gian như PGPool-II để giữ cho các máy chủ được đồng bộ hóa. Nhưng tôi e rằng sẽ không có gì ngoài việc sử dụng này: tỷ lệ đọc / ghi rất cao, trong đó tất cả các lần ghi được thực hiện vào cùng một thời điểm chính xác mỗi ngày.

Câu hỏi của tôi rất đơn giản: Bạn sẽ làm gì để giữ cho các máy chủ này đồng bộ? Và, những gì đã được thực hiện cho điều này tại OpenStreetMap Foundation, MapQuest, Mapbox hoặc CloudMade?

Cảm ơn.

Câu trả lời:


13

Đầu tiên, Postgres 9 trở lên có hỗ trợ sao chép dựng sẵn và đó là những gì chúng tôi (nhóm vận hành OpenStreetMap) mong đợi để xem xét bằng cách sử dụng ngay bây giờ (khoảng 90 phút trước) chạy trên Postgres 9.1 cho cơ sở dữ liệu chính.

Để trả lời câu hỏi của bạn về việc OSM làm gì, cho đến nay chúng tôi không thực hiện bất kỳ loại sao chép nào - có một cơ sở dữ liệu Postgres lớn đóng vai trò là cơ sở dữ liệu chính đằng sau trang web và giữ dữ liệu thô. Sau đó, có các cơ sở dữ liệu Postgres + Postgis thứ cấp để kết xuất và mã hóa địa lý, cả hai đều được sử dụng bằng cách sử dụng các bãi chứa hành tinh và khác biệt để cập nhật.


Không biết về sao chép tích hợp Postgres. Điều này rất có thể sẽ làm công việc. Cảm ơn!
Pierre

1
Đồng thời kiểm tra REPMGR ( repmgr.org ) sử dụng khả năng sao chép phát trực tuyến của Postgres và mở rộng chức năng để cho phép tự động chuyển một nô lệ sang chủ.
Shyam Sundar CS

4

Tôi có thể thấy hai lựa chọn ở đây:

  1. Nhóm cơ sở dữ liệu - sao chép http://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling , tôi sẽ PG cụm vì nó đồng bộ và cho phép cân bằng tải. Bạn cũng có thể đi với kiến ​​trúc chính - nô lệ nhưng không có kết nối và không đồng bộ, tất cả phụ thuộc vào kiến ​​trúc và tốc độ sao chép mà bạn muốn đạt được. Thông tin thêm về pgpoll-2 tại đây - Câu hỏi thường gặp ( http: //www.dalibo .org / _media / pgpool.pdf )
  2. WebOptimisation - cho Mapquest và OSF theo như tôi biết họ sử dụng bộ đệm web ở cấp độ máy chủ + nhóm kết nối. Điều đó có nghĩa là nó sẽ không yêu cầu từ Postgres / Postgis rất nhiều yêu cầu khi tôi lưu trữ một số dữ liệu. Tối ưu hóa 3.Postgis - rao giảng truy vấn ở cấp độ DB, lập chỉ mục và chuẩn hóa cơ sở dữ liệu. Tôi sẽ dùng "PostGis in action" ( http://manning.com/obe/ ) để tìm hiểu thêm về các loại dữ liệu postgis và điều chỉnh máy chủ của bạn với chúng

1
Cảm ơn. Tùy chọn đầu tiên chắc chắn được ưa thích. Việc thứ hai được thực hiện một phần, sử dụng CDN để phân phối và bộ đệm Nginx / Memcached cục bộ trên các máy chủ phía trước.
Pierre
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.