Q. SQL과 NoSQL의 차이점은 무엇인가요?
-> SQL은 테이블 구조를 갖고, 스키마를 준수하며, 수직적 확장만 가능하지만, NoSQL은 Document구조로서 테이블을 유연하게 변경할 수 있으며, 수직적, 수평적 확장이 모두 가능합니다. 대표적인 SQL은 MySQL이 존재하고 NoSQL은 MongoDB가 존재합니다.
-> 꼬리 질문
- SQL과 NoSQ의 장점은 무엇인가요?
- SQL과 NoSQL의 단점은 무엇인가요?
- SQL과 NoSQL 중에 어떤 것이 더 좋나요?
- 수직적, 수평적 확장이 무엇인가요?
더 자세히 알아보자.
SQL ( 관계형 데이터베이스 )
- SQL(Structured Query Language : 구조화된 쿼리 언어)
- 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 저장, 수정, 삭제 및 검색할 수 있습니다.
- 데이터는 정해진 데이터 스키마에 따라 테이블에 저장됩니다.
- 데이터는 관계를 통해서 여러 테이블에 분산됩니다.
- 수직적 확장만 지원
NoSQL ( 비관계형 데이터베이스 )
- 스키마도 없고, 관계도 없습니다.
- 레코드를 문서(documnets)라고 부르고 JSON 데이터와 비슷한 형태를 가지고 있습니다.
- 수직적, 수평적 확장 가능
+ NoSQL에는 조인이라는 개념이 존재하지 않는다. 그러면 조인하고 싶을 때 NoSQL은 어떻게 할까?
-> 컬렉션을 통해 데이터를 복제하여 각 컬렉션 일부분에 속하는 데이터를 산출하도록 합니다. 하지만 이러면 데이터가 중복되어 서로 영향을 줄 위험이 있습니다. 따라서 조인을 잘 사용하지 않고 자주 변경되지 않는 데이터일 때 NoSQL을 사용하면 효율적입니다.
수직적(Vertical) vs 수평적(Horizontal) 확장(Scaling) -> 데이터베이스의 서버의 확장성
- 수직적(Vertical) 확장 : 데이터베이스 서버의 성능 향상 ex) CPU 업그레이드
- 수평적(Horizontal) 확장 : 더 많은 서버가 추가되고 데이터베이스가 전체적으로 분산됨 (하나의 데이터베이스에서 작동하지만 여러 호스트에서 작동)
Q. SQL과 NoSQL의 장점
- SQL 장점
- 명확하게 정의된 스키마, 데이터 무결성 보장
- 관계는 각 데이터를 중복없이 한 번만 저장
- NoSQL 장점
- 스키마가 없기 때문에 유연함. 언제든지 저장된 데이터를 조정하고 새로운 필드를 추가 가능
- 데이터는 애플리케이션이 필요로 하는 형식으로 저장됨. 데이터를 읽어오는 속도가 빨라짐
- 수직 및 수평 확장이 가능하므로 애플리케이션에서 발생시키는 모든 읽기/쓰기 요청을 처리 가능
Q. SQL과 NoSQL의 단점
- SQL 단점
- 상대적으로 덜 유연함. 데이터 스키마를 사전에 계획하고 알려야 함. (수정이 번거롭거나 불가능할 수 있음)
- 관계를 맺고 있기 때문에, JOIN문이 많은 복잡한 쿼리가 만들어질 수 있음
- 수평적 확장이 어렵고, 대체로 수직적 확장만 가능함
- NoSQL 단점
- 유연성 때문에 데이터 구조 결정을 하지 못하고 미루게 될 수 있음
- 데이터 중복은 여러 컬렉션과 문서가 여러 개의 레코드가 변경된 경우 업데이트해야 함.
- 데이터가 여러 컬렉션에 중복되어 있기 때문에, 수정 시 모든 컬렉션에서 수행해야 함 (SQL은 중복된 데이터가 없기 때문에 한 번만 수행하면 됨.)
Q. SQL과 NoSQL 중에 어떤것이 더 좋나요?
-> 어떤 데이터를 다루는지에 따라 선택해야 합니다.
- SQL의 경우 관계를 맺고 데이터가 자주 변경되는 애플리케이션의 경우, 변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에게 중요한 경우에 사용하는 것이 좋습니다.
- NoSQL의 경우 정확한 데이터 구조를 알 수 없거나 변경/확장될 수 있는 경우, 읽기(read) 처리를 자주 하지만, 데이터를 자주 변경(update) 하지 않는 경우, 데이터를 수평적으로 확장해야 하는 경우(즉, 막대한 양의 데이터를 다뤄야 하는 경우)에 사용하는 것이 좋습니다.
반응형
'cs지식 > Database' 카테고리의 다른 글
[ Database ] 조인(JOIN)의 종류 - INNER, OUTER, SELF (0) | 2021.04.15 |
---|---|
[ Database ] 키(Key)의 개념과 종류 (후보키, 기본키, 대체키, 슈퍼키, 외래키) (0) | 2021.04.15 |