SQL과 NoSQL 차이는?

김승용·2021년 4월 13일
0

개발공부중이라 잘못된 내용이 있을 수 있습니다! 발견시 피드백 해주시면 정말 감사하겠습니다 :)

프로젝트를 하기위해 sql과 nosql에 대해 찾아보았다.
https://devuna.tistory.com/25
이 블로그에 SQL과 NoSQL에 대해서 잘 정리 되어있지만, 나는 아직 어떤경우에 결정해야하는지 헷갈린다 ㅠㅠ

이 블로그의 내용을 가져와서 작성해보았다.

데이터베이스에서의 확장

: 데이터베이스에서 처리 할 수 있는 읽기 및 쓰기 요청 수를 의미.

수직확장
데이터베이스 서버의 성능을 향상시키는 것(CPU 업그레이드)

수평확장
더 많은 데이터베이스 서버가 추가되고 데이터베이스가 전체적으로 분산됨을 의미.
하나의 데이터베이스에서 작동하지만, 여러 호스트에서 사용가능?


SQL

  • 구조화 된 쿼리 언어
  • 데이터는 엄격한 스키마에 따라 데이터베이스 테이블에 저장.
  • RDBMS에서 데이터를 CRUD 할 수 있다.
  • 각각의 테이블에서는 서로의 테이블에 없는 데이터만을 가지고 있다.
  • 미리 알고 계획해야한다. (나중에 수정이 어렵거나 불가능)

테이블에는 명확한 구조가 있기 때문에 들어갈 수 있는 데이터와 없는 데이터가 있다. 그래서 스키마를 고치지 않는 이상은 새로운 필드를 넣을 수 없다. 그만큼 처음에 구조를 잡아놓으면 필드를 추가,삭제,변경 하기가 힘들다.


NoSQL

  • 스키마가 없고, 관계가 없다.
  • 테이블을 컬렉션으로 부르고, 레코드를 도큐먼트라고 부른다.
  • join 개념이 없다.
  • 컬렉션마다 데이터를 복제하여 각 컬렉션 일부분에 속하는 데이터를 생성한다.
  • 필드를 언제든지 추가 제거 할 수 있다.

SQL에서는 관련있는 테이블 사이에 조인테이블을 생성했었지만, NoSQL에서는 관련있는 데이터들을 같은 컬렉션에 넣기 때문에 스키마를 걱정할 필요가 없다. 실수를 방지하기 위해 컬렉션마다 데이터를 복제하여 각 컬렉션에 있는 데이터들을 쪼개어서 데이터를 생성한다. 그래서 데이터 수정작업이 적은 경우에 NoSQL이 좋다.


결론

join에 자신있고, 명확한 데이터구조를 디자인 할 수 있다면 SQL을 사용. (수직확장의 한계는 내가 만들 프로젝트에서 신경쓸 필요는 없는거 같다.)

명확한 데이터구조가 아닌 일단은 만들어보면서 필드를 추가,제거,변경하고 싶고, 읽기/쓰기 처리량이 큰경우에는 NoSQL을 사용. (읽기처리는 자주하지만, 데이터의 값을 자주 변경하지 않는경우에 좋은거같음.)

profile
개발 기록

0개의 댓글