วิธีการขยายขนาดข้อมูล OpenStreetMap อย่างมีประสิทธิภาพ


9

เป็นเวลากว่าหนึ่งปีแล้วที่ฉันใช้เซิร์ฟเวอร์ PostGIS ภายในที่เต็มไปด้วยข้อมูล OSM ซึ่งใช้สำหรับการสร้างไทล์บนแผนที่ Mapnik และการเข้ารหัสทางภูมิศาสตร์ที่ใช้ Nominatim อัปเดตด้วยการทำซ้ำวัน มันใช้งานได้ดีทีเดียว

อย่างไรก็ตามในขณะที่การใช้งานเพิ่มขึ้นแบบทวีคูณฉันต้องการบรรลุความน่าเชื่อถือและประสิทธิภาพที่ดีขึ้นโดยการเพิ่มเซิร์ฟเวอร์ PostgreSQL เพิ่มเติม และฉันก็หลงทาง

เนื่องจาก PostgreSQL ดูเหมือนจะไม่จัดการการเรพลิเคทด้วยตัวเองฉันจะคิดถึงการใช้ piede ของมิดเดิลแวร์อย่าง PgPool-II เพื่อทำให้เซิร์ฟเวอร์ซิงค์กัน แต่ฉันเกรงว่ามันจะไม่เป็นอะไรนอกจากจำเป็นสำหรับการใช้งานนี้: อัตราส่วนการอ่าน - เขียนสูงมากซึ่งการเขียนทั้งหมดเสร็จสิ้นในเวลาเดียวกันทุกวัน

คำถามของฉันง่าย: คุณจะทำอย่างไรเพื่อให้เซิร์ฟเวอร์เหล่านี้ซิงค์ และจะทำอย่างไรกับสิ่งนี้ที่มูลนิธิ OpenStreetMap, MapQuest, Mapbox หรือ CloudMade

ขอบคุณ

คำตอบ:


13

ประการแรก Postgres 9 และใหม่กว่ามีการสนับสนุนการจำลองแบบในตัวและนั่นคือสิ่งที่เรา (ทีมปฏิบัติการ OpenStreetMap) คาดหวังที่จะใช้ในขณะนี้ที่เรา (ประมาณ 90 นาทีที่ผ่านมา) ที่ทำงานบน Postgres 9.1 สำหรับฐานข้อมูลหลัก

เพื่อตอบคำถามของคุณเกี่ยวกับสิ่งที่ OSM ทำอยู่ ณ ปัจจุบันเราไม่มีการจำลองแบบใด ๆ - มีฐานข้อมูลขนาดใหญ่หนึ่ง Postgres ซึ่งทำหน้าที่เป็นฐานข้อมูลหลักที่อยู่เบื้องหลังเว็บไซต์และเก็บข้อมูลดิบ จากนั้นจะมีฐานข้อมูล Postgres + Postgis สำรองสำหรับการเรนเดอร์และสำหรับ geocoding ซึ่งทั้งคู่ถูกเติมข้อมูลโดยใช้การทิ้งดาวเคราะห์และ diffs สำหรับการอัปเดต


ไม่ทราบเกี่ยวกับการจำลองแบบในตัวของ Postgres มันอาจจะทำงานได้ดีมาก ขอบคุณ!
ปิแอร์

1
นอกจากนี้การชำระเงิน REPMGR ( repmgr.org ) ซึ่งใช้ความสามารถในการจำลองแบบสตรีมของ Postgres และขยายฟังก์ชันการทำงานเพื่ออนุญาตให้ทาสกลับไปยังต้นแบบโดยอัตโนมัติ
Shyam Sundar CS

4

ฉันเห็นสองตัวเลือกที่นี่:

  1. การรวมฐานข้อมูล - การจำลองแบบhttp://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Poolingฉันจะทำคลัสเตอร์ PG เนื่องจากเป็นแบบซิงโครนัสและอนุญาตให้โหลดบาลานซ์ นอกจากนี้คุณยังสามารถไปกับต้นแบบ - สถาปัตยกรรมทาส แต่ไม่มีการเชื่อมต่อร่วมกันและตรงกันทั้งหมดขึ้นอยู่กับสถาปัตยกรรมและความเร็วในการจำลองแบบที่คุณต้องการเพื่อให้บรรลุ .More อินฟอร์เกี่ยวกับ pgpoll-2 นี่เล็กคำถามที่พบบ่อย ( http: //www.dalibo .org / _media / pgpool.pdf )
  2. WebOptimisation - สำหรับ Mapquest และ OSF เท่าที่ฉันรู้ว่าพวกเขาใช้การแคชเว็บที่ระดับเซิร์ฟเวอร์ + การรวมการเชื่อมต่อ นั่นหมายความว่าจะไม่ขอจาก Postgres / Postgis จำนวนมากดังนั้นเมื่อฉันแคชข้อมูลบางอย่าง การเพิ่มประสิทธิภาพ 3.Postgis - การเทศนาแบบสอบถามในระดับฐานข้อมูลการทำดัชนีและการทำให้เป็นมาตรฐานของฐานข้อมูล ฉันจะไปที่ "PostGis in action" ( http://manning.com/obe/ ) เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับประเภทข้อมูล postgis และปรับเซิร์ฟเวอร์ของคุณให้เข้ากับพวกเขา

1
ขอบคุณ ตัวเลือกแรกเป็นที่ต้องการอย่างแน่นอน ส่วนที่สองจะเสร็จสิ้นโดยใช้ CDN สำหรับการจัดส่งและแคช Nginx / Memcached ในเครื่องบนเซิร์ฟเวอร์ด้านหน้า
ปิแอร์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.