얼마전 nosql을 왜 써야 하냐는 질문을 받았습니다.
nosql은 개발을 빠르고 편하기 위해 사용하지, 운영 업무 담당자의 입장에서는 관리 되지 않는 데이터라고 말씀 주셨습니다.
제 생각은 명확하게 nosql과 sql은 구조, 사용법이 다르다 이야기 했지만 잘 전달 되지는 않았네요.
SQL vs NoSQL의 내용을 보면 수정이 거의 없는 대량 데이터는 sql보다는 nosql이 같는 잇점이 크다고 이야기 합니다. (물론 sql 만으로도 처리가 가능하지만요.)
NoSQL은 언제 가장 좋은가요?
- 정확한 데이터 요구 사항 또는 데이터 자체가 알려지지 않았거나 변경/확장될 수 있음
- 높은(읽기) 처리량이 필요하지만 데이터를 자주 변경하지 않습니다(즉, 한 번의 변경으로 인해 항상 수십 개의 문서를 업데이트할 필요가 없음).
- 데이터베이스를 수평으로 확장해야 합니다(즉, 엄청난 양의 데이터를 저장하고 엄청난 읽기 및 쓰기 처리량을 가짐)
출처 : SQL vs NoSQL
이전 회사 경험으로 방화벽 로그를 mongodb(nosql)에 담았습니다.
대량의 데이터를 민첩하게 적재 하였고 샤딩을 사용해 조회 성능도 꽤 우수했습니다.
로그는 기본적으로 여러 방화벽 장비로 부터 다양한 형식으로 되어 있습니다. 따라서 모든 형식을 알지 못하고 필요한 데이터만 정재해서 저장합니다. 모든 방화벽 장비가 필요한 데이터를 제공하지는 않았습니다. 또한 꽤 많은 데이터를 저장하였습니다.
만약 이 방화벽 데이터를 sql형식으로 저장한다면, 데이터 정형화 과정을 거치며 여러 테이블로 분산하여 저장해야 합니다. 이는 데이터 조회시 조인으로 복잡한 sql로 작성해야 합니다. 또한 성능 역시 문제가 될 수 있습니다. 물론 설계의 묘미로 하나의 테이블로 관리 할 수 있습니다. 다만 그렇게 sql을 사용한다면, sql을 사용하는 의미가 있을까요?
방화벽 로그와 같이 수정이 없고, 특정기간 동안 빠른 조회가 필요하는 대량의 데이터를 쌓는 경우 nosql
이 적합하다고 생각합니다.