Spring 개발을 할 때는 Oracle,MySql을
Node.js 개발을 할 때는 MongoDB를 주로 사용한다고 한다
그럼 프레임워크나 언어에 따라 달라지는 것일까?
SQL과 NoSQL에 대해 알아보자
SQL은 흔히 관계형 DB (RDB)라고 부르며
RDBMS 에서 데이터를 CRUD 할 수 있다
핵심 특징으로 보자면
데이터는 스키마에 따라 테이블에 저장된다?
이말은 즉 테이블의 구조에 따라 저장된다는 것이다
예를 들어 테이블에 존재하지 않는 컬럼에 데이터를 저장 할 수 없다는 것이다
관계형 db?
간략히 설명하자면 테이블과 테이블 사이에 같은 컬럼이 존재한다면
-> pk,fk
user 테이블에서 관계를 통해 (Join) board 테이블의 데이터를 이용 할 수 있다는 것이다
또한 데이터의 중복을 피하기 위해서도 테이블을 나누기도 한다!
말 그대로 SQL의 반대 즉 위에서 설명한 SQL의 핵심특징인
관계 상관없고! 스키마도 상관없다!
SQL과 달리 테이블을 나누어 데이터를 저장하지 않고
모든 관련데이터를 하나의 문서에 저장이 가능하다는 것이다!
(join의 개념이 없음)
SQL을 선택해서 복잡한 JOIN문을 만들지 않도록 설계하여 단점을 없앨 수도 있고
NoSQL을 선택해서 중복 데이터를 줄이는 방법으로 설계해서 단점을 없앨 수도 있지만
정확한 데이터 구조를 알수 없을 때도 많고 변경이 될 때도 많을 것이다
그렇기 때문에 상황에 맞게 적절하게 사용하는 것이 좋은 방법인 것 같다!