PostgreSQL을 공부하다 보면 PostGIS라는 단어를 한 번쯤 보게 된다.
처음에는 “GIS? 공간 데이터?” 같은 말들이 나오는데,
막상 정확히 어떤 역할을 하는지 감이 잘 안 왔다.
그래서 PostGIS가 무엇인지,
어디에 쓰이는지 간단하게 정리해보려고 한다.
PostGIS는 PostgreSQL에서 공간 데이터를 다룰 수 있게 해주는 확장 기능이다.
PostgreSQL은 기본적으로 숫자나 문자열 같은 일반적인 데이터는 잘 다룬다.
하지만 좌표, 거리, 위치 같은 공간 정보를 처리하기에는 한계가 있다.
이때 사용하는 것이 PostGIS다.
예를 들어 이런 상황을 생각해볼 수 있다.
이런 작업을 일반 SQL로 처리하려면 쿼리가 굉장히 복잡해진다.
PostGIS는 이런 공간 연산을 함수 형태로 쉽게 제공해준다.
지도 서비스에서 가장 기본이 되는 정보는 위치 좌표다.
보통 위도(latitude)와 경도(longitude) 형태로 표현된다.
PostGIS는 이런 좌표를 단순한 숫자가 아니라
공간 객체(Geometry)로 저장하고 처리한다.
예를 들면:
PointLinePolygon같은 형태로 표현된다.
이렇게 저장된 공간 데이터는
“거리”, “포함 여부”, “겹침 여부” 같은 공간 연산이 가능해진다.
SELECT ST_Distance(
ST_Point(127.0, 37.5),
ST_Point(127.1, 37.6)
);
두 좌표 사이의 거리를 계산할 수 있다.
배달 서비스에서 “가장 가까운 가게 찾기” 같은 기능에 사용된다.
이런 기능들도 PostGIS의 공간 함수로 처리할 수 있다.
PostGIS를 사용하면 다음과 같은 공간 데이터를 다룰 수 있다.
그래서 보통 아래와 같은 서비스에서 많이 사용된다.
중요한 점은 PostGIS는 PostgreSQL의 기본 기능이 아니라 확장(extension)이라는 것이다.
즉,
일반적인 CRUD 위주의 서비스라면
굳이 PostGIS를 사용할 필요는 없다.
PostGIS는 다음과 같은 경우에 적합하다.
반대로,
단순한 게시판이나 회원 관리 서비스라면
굳이 사용할 이유는 없다.
PostGIS는 PostgreSQL에서
좌표, 거리, 위치 같은 공간 데이터를 효율적으로 다룰 수 있게 해주는 확장 기능이다.
지도 서비스에서 사용하는
“거리 계산”, “반경 검색”, “영역 포함 여부” 같은 기능을
DB 레벨에서 처리할 수 있다는 점이 가장 큰 특징이다.