Abstract

데이터에는 다양한 종류가 있다. 옛날에 ADsP를 준비하며 공부했던 기억을 돌이켜보면 데이터를 정형(csv 등), 반정형(xml, json 등), 비정형(이미지 텍스트) 크게 3가지로 분류를 했었던 것 같다. 그중 csv, json 형태의 데이터는 각각 SQL, NoSQL을 이용해 파일이 아닌 서버로 데이터를 관리할 수 있다.
나도 종종 SQL, NoSQL서버를 사용해 데이터 관리를 한 적이 있지만, 필요에 의해 사용했다기 보다는 이런것을 경험해보고, 공부하기위해 사용했었다. SQL사용이 어색했기도 했고, 데이터를 서버를 통해 관리하는 것의 장점을 크게 못느꼈기 때문이다.
그러던 중 최근 웹 관련 프로젝트를 하며 MySQL 서버를 사용해야할 일이 생겼고, AWS EC2를 이용해 MySQL서버를 구축해 외부에서 DB에 접근하는 것을 경험하며 로컬에서 파일로 데이터를 관리하는것 대비 SQL서버의 장점을 많이 느꼈다. 그래서 이번 포스트에서는 SQL 서버 vs Excel file을 주제로 택했다.

1. 처음 느낀 DB 서버의 필요성 - 대용량 처리

작년 데이터분석 관련 인턴을 하며 게임 관련 데이터를 수집하는 과정에서 그냥 하나의 JSON파일에 수기가의 데이터를 몰아넣어 저장한 적이 있었다. 그리고 이 데이터를 분석하려고 jupyter notebook에서 데이터를 불러오려고 시도했지만, 너무 큰 용량이라 jupyter 서버가 다운 되는 상황이 발생했다(아마 메모리의 문제일 것으로 생각된다). 그래서 어쩔 수 없이 데이터를 관리하는 다른 방법을 찾아야했고(JSON파일을 분할해서 저장하는 등), MongoDB라는 NoSQL이라는것을 알게되었다. 리스트에 담긴 수많은 JSON데이터를 분리해서 저장할 수 있었고, jupyter 에서도 필요한 부분만 불러와 사용할 수 있었기 때문에 메모리 측면에서도 효율적이었다. 그래서 기가바이트 단위의 비교적 대용량 데이터를 관리할때의 DB 서버의 장점을 경험했었다.

2. 데이터 접근

로컬에 데이터를 csv, json 등의 파일형태로 저장하게되면 해당 데이터는 당연하게도 해당 컴퓨터에서만 사용할 수 있다. 심지어 나처럼 하나의 컴퓨터에 윈도우와 리눅스 운영체제를 나누어 사용하는 경우 하드디스크가 파티션이 되어있어서 다른 운영체제의 데이터에 접근할 수 없다. 그리고 웹 서버를 함께 개발할 때에도 공유된 DB를 이용하는것이 바람직할 것이다. 그래서 데이터를 DB 서버에 저장할 경우 데이터에 접근이 용이하다는 큰 장점을 가질 수 있다.

3. 저장공간

이부분은 사실 DB 서버의 장점이라기보다는 클라우드 환경의 장점에 더 가깝다고 생각이되지만, 클라우드에 데이터를 저장할 때 파일 형태보다는 DB 서버를 구축해 저장하는것이 훨씬 효율적이므로 3번째 장점에 넣게 되었다.
데이터 분석을 위해 데이터를 수집하거나, kaggle 등의 대회에서 데이터를 다운받다보면 기가바이트 단위의 데이터를 관리해야할 일이 생긴다. 따로 하드디스크를 추가해 저장공간에 무리가 없으면 로컬 컴퓨터에서 파일형태로 데이터를 관리해도 되지만, 나처럼 128GB의 SSD를 사용하는 경우 몇백메가바이트의 파일이라도 저장공간에 큰 부담이 생긴다. 이럴때 AWS 등의 클라우드 서비스를 이용해 DB 서버를 구축해 데이터를 관리한다면 이러한 문제를 해결할 수 있을 것이다.