SQL과 NOSQL을 알기 위해선 "스키마"라는 단어를 알아야 이해하기 편할 것 같다.
DB의 구조와 제약 조건에 관한 전반적인 명세를 정의한 메타데이터의 집합입니다.
메타데이터(meta data) : 데이터에 대한 데이터로, 어떤 목적을 가지고 만들어진 데이터로 정의됨.
개체의 특성을 나타내는 속성(Attribute)과, 속성들의 집합으로 이루어진 개체(Entity), 개체 사이에 존재하는 관계(Relation)에 대한 정의와 이들이 유지해야 할 제약 조건을 기술한 것입니다.
개체(Entity) : 데이터로 표현하려고 하는 객체(여러 속성들로 구성) / ER 다이어그램에서 네모로 표현
속성(Attribute) : 개체가 갖는 속성 / ER 다이어그램에서 원으로 표현
관계(Relation): 개체와 개체 사이의 연관성 / ER 다이어그램에서 마름모로 표현
쉽게 말해 DB 내에 데이터가 어떤 구조로 저장되는가를 나타내는 데이터베이스 구조를 스키마라고 한다.
SQL을 사용하면 RDBMS에서 데이터를 저장, 수정, 삭제 및 검색 할 수 있음
SQL 장점
명확하게 정의된 스키마, 데이터 무결성 보장
관계는 각 데이터를 중복없이 한번만 저장
#SQL 단점
덜 유연함. 데이터 스키마를 사전에 계획하고 알려야 함. (나중에 수정하기 힘듬)
관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있음
대체로 수직적 확장만 가능함
스키마도 없고, 관계도 없다.
여러 테이블에 조인할 필요없이 이미 필요한 모든 것을 갖춘 문서를 작성하는 것이 NoSQL이다.
하지만 이러면 데이터가 중복되어 서로 영향을 줄 위험이 있다. 따라서 조인을 잘 사용하지 않고 자주 변경되지 않는 데이터일 때 NoSQL을 쓰면 상당히 효율적이다.
NOSQL 장점
스키마가 없어서 유연함. 언제든지 저장된 데이터를 조정하고 새로운 필드 추가 가능
데이터는 애플리케이션이 필요로 하는 형식으로 저장됨. 데이터 읽어오는 속도 빨라짐
수직 및 수평 확장이 가능해서 애플리케이션이 발생시키는 모든 읽기/쓰기 요청 처리 가능
NOSQL 단점
유연성으로 인해 데이터 구조 결정을 미루게 될 수 있음
데이터 중복을 계속 업데이트 해야 함
데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수행해야 함 (SQL에서는 중복 데이터가 없으므로 한번만 수행이 가능)
참고 자료 :
https://code-lab1.tistory.com/114
https://iingang.github.io/posts/DB-schema/
https://coding-factory.tistory.com/216
https://gyoogle.dev/blog/computer-science/data-base/SQL%20&%20NOSQL.html