얼마전 nosql을 왜 써야 하냐는 질문을 받았습니다.

nosql은 개발을 빠르고 편하기 위해 사용하지, 운영 업무 담당자의 입장에서는 관리 되지 않는 데이터라고 말씀 주셨습니다.

제 생각은 명확하게 nosql과 sql은 구조, 사용법이 다르다 이야기 했지만 잘 전달 되지는 않았네요.

SQL vs NoSQL의 내용을 보면 수정이 거의 없는 대량 데이터는 sql보다는 nosql이 같는 잇점이 크다고 이야기 합니다.
(물론 sql 만으로도 처리가 가능하지만요.)

NoSQL은 언제 가장 좋은가요?

  • 정확한 데이터 요구 사항 또는 데이터 자체가 알려지지 않았거나 변경/확장될 수 있음
  • 높은(읽기) 처리량이 필요하지만 데이터를 자주 변경하지 않습니다(즉, 한 번의 변경으로 인해 항상 수십 개의 문서를 업데이트할 필요가 없음).
  • 데이터베이스를 수평으로 확장해야 합니다(즉, 엄청난 양의 데이터를 저장하고 엄청난 읽기 및 쓰기 처리량을 가짐)

출처 : SQL vs NoSQL

이전 회사 경험으로 방화벽 로그를 mongodb(nosql)에 담았습니다.

대량의 데이터를 민첩하게 적재 하였고 샤딩을 사용해 조회 성능도 꽤 우수했습니다.

로그는 기본적으로 여러 방화벽 장비로 부터 다양한 형식으로 되어 있습니다. 따라서 모든 형식을 알지 못하고 필요한 데이터만 정재해서 저장합니다.
모든 방화벽 장비가 필요한 데이터를 제공하지는 않았습니다. 또한 꽤 많은 데이터를 저장하였습니다.

만약 이 방화벽 데이터를 sql형식으로 저장한다면, 데이터 정형화 과정을 거치며 여러 테이블로 분산하여 저장해야 합니다.
이는 데이터 조회시 조인으로 복잡한 sql로 작성해야 합니다. 또한 성능 역시 문제가 될 수 있습니다.
물론 설계의 묘미로 하나의 테이블로 관리 할 수 있습니다. 다만 그렇게 sql을 사용한다면, sql을 사용하는 의미가 있을까요?

방화벽 로그와 같이 수정이 없고, 특정기간 동안 빠른 조회가 필요하는 대량의 데이터를 쌓는 경우 nosql이 적합하다고 생각합니다.

참고자료

Posted by lahuman

댓글을 달아 주세요