SQL 강의를 수강하며 데이터 조회 및 전처리에 대한 관심이 생기기 시작했다.
이왕이면 평소에 접해봤었던 데이터로 실습을 하고 싶었는데, 실습을 위해 다운 받은 데이터가 남한 내 출현한 동물에 대한 데이터였다. 출현종에 관련된 종명, 조사시기 등이 적혀 있었으나 문제는 좌표였다.
전국에서 가장 많이 출현한 종, 충청북도에서 가장 많이 확인된 종, 전체 출현종수 대비 종별 출현수 비율 등 간단한 실습을 진행하는 것에는 어려움이 없었다.
그러나 좌표는 sum, avg 등의 연산자를 이용해서 계산한다 하더라도 유의미한 결과를 얻을 수 없다.
좌표 간의 거리를 구하거나, 기존 테이블에 명시되어 있는 시/도 수준이 아니라 특정 지역 내에서 특정한 종이 몇 번 출현하였는가 등의 계산을 진행하기 위해서는 공간에 대한 분석이 필요했다.
또한 동일 위도 상에 우연히 두 종이 출현하였다 하더라도 단순히 경도에서 경도를 뺀 절댓값은 의미를 가지기가 어려웠다. 두 좌표 간의 거리를 구한 계산식을 써볼까 고민도 해보았지만 이 역시 지도상에서나 할 수 있는 이야기일 뿐, 지구는 구면이기 때문에 결국 많은 요소를 고려해야만 하는 상황이다.
강사님께 해당 건으로 질문을 드렸고, 우선 현재 강의에서 실습하고 있는 oracle 11g에서 공간정보를 다루기엔 적절치 않은 것으로 판단되어 다음과 같은 실습용 환경이 최선임을 확인하였다. :
| PostgreSQL | PostGIS | 데이터 저장 + 공간 연산 엔진 |
| ↕ | ||
| DBeaver | 데이터 조회 / 전처리 등 | |
| ↕ | ||
| QGIS | 시각화 / 공간정보 분석 등 | |
1) PostgreSQL + PostGIS (기본 데이터베이스 + 확장)
- 강의를 수강한 첫 날 postgresql이 정형, 반정형 데이터 위주를 다룬다고 배웠다.
- 행과 열로 표시할 수 있는 테이블, JSON 등을 포함하며 SQL로 데이터 조회 및 처리를 진행한다.
- 1995년 최초로 출시된 오픈 소스 RDBMS로 앞서 말한 것처럼 정형, 반정형 데이터를 처리하나 내가 사용하고자 하는 것은 지오매트리(Geometry), postgresql 만으로는 공간 데이터 처리에 한계가 존재한다.
- 따라서 postgis라는 확장 기능을 사용함으로써 postgresql 에서 점, 선, 면과 같은 공간 정보를 사용 가능하게 해주고, 공간에 대한 정보 처리 및 분석 기능을 가능케 해준다.
2) DBeaver (IDE)
- postgresql 접속, 데이터베이스 관리, sql 작성 및 실행 등을 진행한다.
- 나는 무료버젼인 community 버젼을 사용하였으며 일반적인 실습에 사용할만한 기능들을 충분히 포함하고 있다.
- 협업, NoSQL 등의 확장 기능이 필요할 시 DBeaver PRO를 결제해야 하며 상황에 따라 다양한 금액의 옵션을 선택할 수 있다.

3) QGIS (공간 데이터 시각화 + 공간 데이터 분석)
- 분석한 공간 데이터의 시각화, 버퍼, 클립, 오버레이 등의 분석이 가능하다.
- 또한 PostGIS와 연결 가능하여 postgis를 통해 만든 테이블을 qgis에서 레이어로 바로 사용 가능하다.
- 이 역시 매우 감사하게도 오픈 소스이다.
따라서 집과 학원에서 실습할 시에도 환경 세팅이 간편하며, 공간 정보에 대한 분석도 가능하며, 비용적인 측면에서도 압도적인 이점이 있는 해당 구성으로 실습을 진행하기로 결정했다.