我有一個4億行分區mysql表中的緯度/經度座標。 表增長@ 2000記錄一分鐘,舊數據每隔幾周刷新一次。 我正在探索如何對這些數據進行空間分析。MySQL Postgresql/PostGIS
大多數分析需要找出一個點是否在特定的緯度/經度多邊形或哪些多邊形包含該點。
我看到解決的多邊形(PIP)的問題點的方法如下:
創建MySQL函數,它接受一個點和幾何形狀,並返回一個布爾值。 簡單但不確定如何使用幾何來執行緯度/經度座標的操作,因爲幾何假設爲平面而不是球體。
創建MySQL函數,它的自定義數據結構的一個點和標識符,並返回一個布爾值。 多邊形頂點可以存儲在一個表中,並且函數可以使用球形數學計算PIP。大量的多邊形點可能會導致巨大的表格和較慢的查詢。
在mysql中留下點數據並在PostGIS中存儲多邊形數據,並使用應用服務器通過將點作爲參數來運行PostGIS中的PIP查詢。
端口從MySQL到PostgreSQL/PostGIS的應用。 這將需要很大的努力來重寫查詢和程序。 我仍然可以做到這點,但Postgresql在處理4億行時表現如何。 在google上快速搜索「mysql 10 billion rows」會返回許多結果。同樣的Postgres查詢返回沒有相關的結果。
想聽聽一些想法&意見。
我有親自體驗Postgres運行300M +排桌 - 沒有汗水。 Skype使用Pg來跟蹤連接,用戶,會計等。除通信信道本身之外的所有信息。這是數十億記錄。 – dbenhur 2012-03-14 07:02:58
那麼要達到300M有多容易/困難?它需要多少調整/優化?我曾使用Postgres閱讀過Skype,但大公司可能會投入資源並獲得任何工作。我正在尋找的是像你這樣的投入。 – Dojo 2012-03-14 07:30:15
我們的PostgreSQL數據庫每秒處理約5000筆交易,最近2年每月處理約6億筆記錄。以前的MySQL服務器無法在同一個硬件上處理這個問題。 – 2012-03-14 07:36:57