개발공부중이라 잘못된 내용이 있을 수 있습니다! 발견시 피드백 해주시면 정말 감사하겠습니다 :)
프로젝트를 하기위해 sql과 nosql에 대해 찾아보았다.
https://devuna.tistory.com/25
이 블로그에 SQL과 NoSQL에 대해서 잘 정리 되어있지만, 나는 아직 어떤경우에 결정해야하는지 헷갈린다 ㅠㅠ
이 블로그의 내용을 가져와서 작성해보았다.
: 데이터베이스에서 처리 할 수 있는 읽기 및 쓰기 요청 수를 의미.
수직확장
데이터베이스 서버의 성능을 향상시키는 것(CPU 업그레이드)
수평확장
더 많은 데이터베이스 서버가 추가되고 데이터베이스가 전체적으로 분산됨을 의미.
하나의 데이터베이스에서 작동하지만, 여러 호스트에서 사용가능?
테이블에는 명확한 구조가 있기 때문에 들어갈 수 있는 데이터와 없는 데이터가 있다. 그래서 스키마를 고치지 않는 이상은 새로운 필드를 넣을 수 없다. 그만큼 처음에 구조를 잡아놓으면 필드를 추가,삭제,변경 하기가 힘들다.
SQL에서는 관련있는 테이블 사이에 조인테이블을 생성했었지만, NoSQL에서는 관련있는 데이터들을 같은 컬렉션에 넣기 때문에 스키마를 걱정할 필요가 없다. 실수를 방지하기 위해 컬렉션마다 데이터를 복제하여 각 컬렉션에 있는 데이터들을 쪼개어서 데이터를 생성한다. 그래서 데이터 수정작업이 적은 경우에 NoSQL이 좋다.
join에 자신있고, 명확한 데이터구조를 디자인 할 수 있다면 SQL을 사용. (수직확장의 한계는 내가 만들 프로젝트에서 신경쓸 필요는 없는거 같다.)
명확한 데이터구조가 아닌 일단은 만들어보면서 필드를 추가,제거,변경하고 싶고, 읽기/쓰기 처리량이 큰경우에는 NoSQL을 사용. (읽기처리는 자주하지만, 데이터의 값을 자주 변경하지 않는경우에 좋은거같음.)