아파치를 통해 전달되는 데이터 집약적 웹 응용 프로그램을 작성 중입니다. 내 질문은 여러 옵션이있을 때 처리를 가장 잘 준비하는 방법에 관한 것입니다.
OpenLayers / JQuery / Javascript, PostGIS / Postgresql (pgsql 포함), python / psycopg2, php가 있습니다.
데이터베이스에는 약 3 백만 개의 행이 있으며 현재 프로토 타입은 다음과 같이 실행됩니다.
사용자가 OpenLayers 창에서 특정 지점을 클릭
좌표는 서버의 파이썬 함수에 AJAX 요청으로 전송됩니다.
현재 내 응용 프로그램은 상태 비 저장입니다
Python의 psycopg2는 pgsql 저장 프로 시저를 호출하는 데 사용되며 지연된 WKT 값 세트 (및 데이터 필드)가 Python 모듈로 다시 리턴됩니다.
데이터 필드는 다음과 같이 파이썬에서 WKT 레코드를 분류하는 데 사용됩니다. 모든 WKT 값은 5 개 그룹 중 하나로 분류됩니다. WKT 값의 약 1 %가 실제로 수정됩니다.
5 개의 WKT 세트 / 그룹은 5 개의 별개의 다각형을 만들기 위해 버퍼링됩니다. 현재 데이터베이스에서 저장 프로 시저를 호출 하여이 작업을 수행합니다. 차례로 ST_BUFFER 만 사용합니다. (Shapely 사용을 고려했지만 GEOS 라이브러리가 어느 경우 에나 사용되므로 성능상의 이점이 있는지 확실하지 않습니다 ...)
마지막으로 5 개의 WKT 텍스트 값이 JSON 문자열로 래핑되고 OpenLayers로 다시 전송되어 5 개의 레이어로 렌더링됩니다.
병목 현상이 초기 공간 검색 및 최종 버퍼링 단계라는 것을 알았습니다.
나는 질문이 다음과 같다고 생각한다.
물건을 정리하는 더 좋은 방법이 있습니까? 예를 들어, 모든 데이터 처리는 PostgreSQL에서 수행해야합니까 (예 : 커서 사용) 유지 관리 및 성능 측면에서 좋은 것입니까? 긴 WKT 문자열을 웹 클라이언트에 전달하지 않도록 타일 서버를 사용하는 것이 더 좋습니까? 어떻게 해결하겠습니까?