여정의 시작
- 지도를 예쁘게 꾸며보고 싶었다. "폴리곤"
- 지도 위에 폴리곤을 그리는 API는 Kakao Map API에서 제공한다.
- 폴리곤을 이루는 점들의 좌표를 하나하나 넣어주면, 그걸 이어서 그려주는 방식이다.
- 행정구역 경계 좌표는 통계지리정보서비스에서 API를 제공한다. (제공하는 좌표가 위도/경도가 아니라서 삽질한 것은 또다른 얘기...)
- 데이터는 얻었고, 방법도 알아서 구현을 했는데.. 느리다!
.png)
MySQL vs MongoDB
MySQL과 MongoDB의 장단점
-
MySQL 장점
- 데이터 무결성 보장
- 가장 많이 사용되는 데이터베이스
- 데이터를 중복없이 저장
-
MySQL단점
- 덜 유연함(정형화된 구조)
- join 이 많아질수록 성능이 악화됨
- 수평 확장이 어려움
-
MongoDB 장점
- 대용량 데이터 읽고/쓰기가 빠름
- JSON형태로 node.js와 어울림
- 스키마 관리가 필요없음
- 수평확장이 쉬움
-
MongoDB 단점
- 메모리가 성능에 영향을 줄 수 있음
- join 성능이 관계형 DB 대비해서도 더 좋지 않음
- 정합성이 떨어짐(안정화 되면서 많이 개선되었다고 함)
⇒ 데이터의 무결성이 중요할 때
⇒ 스키마나 테이블 구성이 변경의 여지가 없을 때
⇒ 유연성과 확장성이 필요할 때
⇒ 처리 데이터 양이 많을 경우
MySQL을 선택한 이유
- 가장 익숙하다
- 지도 정보인 위도와 경도를 지원하는 Type이 있다
MongoDB로 변경한 이유
- 지도 경계좌표가 단일화된 구조를 가지고 있지 않아서 유연성 있는 스키마가 필요
- 대용량 데이터 처리
- MongoDB의 샤딩을 통해서 추후에 서비스의 규모가 커졌을 때 수평적 확장을 할 수 있는점
- MongoDB는 객체 기반으로 NodeJS에서 테이블 기반의 MySQL보다 더 적합
데이터 구조