SQL 데이터베이스(관계형 데이터베이스)
- SQL은 Structured Query Language의 약자로, 관계형 데이터베이스와 상호 작용하기 위해 사용하는 쿼리 언어
- SQL은 쿼리 언어로, SQL 자체는 데이터베이스가 아니지만 관계형 데이터베이스라는 의미로도 사용함
- SQL을 사용하면 RDBMS에 데이터를 저장, 업데이트, 삭제할 수 있고 데이터를 가져올 수도 있음
관계형 데이터베이스의 두 가지 특징
- 엄격한 데이터 스키마(구조)에 따라 데이터베이스 테이블에 데이터를 저장한다.
- 관계로 연결된 여러 테이블에 걸쳐 데이터가 분포되어 있다.
엄격한 스키마
- 데이터는 테이블에 레코드로 저장되고, 각 테이블은 명확히 정의된 구조를 가지고 있음
- 테이블 구조는 데이터 타입, 필드의 이름으로 정의됨
- 스키마를 준수하지 않는 레코드는 추가할 수 없음
관계
- 데이터 중복을 방지하기 위해 여러 테이블에 데이터를 나누어 저장
- 각 테이블은 다른 테이블에는 저장되지 않은 데이터를 저장하여 중복 데이터가 존재하지 않음
- 각각의 테이블들은 서로 관계를 가지고 연결되어 있음
- 하나의 테이블에서 관리하는 데이터는 테이블마다 다르기 때문에 테이블들은 중복 데이터를 갖지 않음
NoSQL 데이터베이스(비관계형 데이터베이스)
- SQL 데이터베이스의 접근법과 반대의 접근법을 가지고 있는 데이터베이스
- SQL 데이터베이스와 달리
스키마, 관계 없음
- SQL 데이터베이스에서의 테이블과 같은 역할을 하는
컬렉션
에 데이터를 저장
- SQL 데이터베이스에서의 레코드를 NoSQL 데이터베이스에서는
도큐먼트
라고 함
- NoSQL 데이터베이스에서는 같은 컬렉션에 다른 구조의 데이터를 넣을 수 있음
- 같은 컬렉션에 연관된 데이터를 넣을 수 있음
- NoSQL 데이터베이스에는
join
개념이 존재하지 않음
- 애플리케이션이 찾고 있는 데이터를 정확히 출력하도록 컬렉션 간에 데이터를 복제할 수 있음
- 만약 컬렉션 A와 컬렉션 B가 중복된 데이터를 가지고 있는 경우, 중복된 데이터가 변경되었을 때 컬렉션 A와 컬렉션 B의 중복된 데이터를 모두 수정해야 함
SQL vs. NoSQL
SQL의 장점
- 스키마를 사용하므로 데이터 무결성 보장
- 테이블 간의 관계를 설정하여 데이터 중복이 없음
NoSQL의 장점
- 스키마를 사용하지 않으므로 유연함
- 애플리케이션이 요구하는 형식으로 데이터가 저장되므로 데이터 읽는 속도가 빨라짐
- 수직 및 수평적 확장이 가능하므로 데이터베이스가 애플리케이션에서 발생하는 읽기, 쓰기 요청을 얼마든지 처리할 수 있음
SQL의 단점
- 스키마를 사용하므로 유연성이 떨어짐
- 테이블 간의 관계를 설정하므로 JOIN문을 많이 사용하는 복잡한 쿼리 사용
- 수평적 확장이 어렵고 수직적 확장만 가능하므로 처리량 성장에 한계가 있음
NoSQL의 단점
- 유연한 구조를 가지기 때문에 데이터 구조 결정이 미뤄질 수 있음
- 여러 컬렉션에서 데이터가 중복되는 경우, 데이터가 변경되면 데이터가 중복되는 모든 컬렉션을 업데이트해야 함
SQL은 언제 사용해야 할까?
- 관계를 맺고 있는 데이터가 자주 수정되는 애플리케이션의 경우
- 스키마가 사용자와 데이터에게 모두 중요한 경우
NoSQL은 언제 사용해야 할까?
- 정확한 데이터 구조를 알 수 없거나 변경될 수 있는 경우
- 읽기 처리를 자주하지만, 데이터가 자주 변경되지 않는 경우
- 데이터베이스를 수평적으로 확장해야 하는 경우
참고