개요
- SQL 을 선택하는것은 단순히 프레임워크에 따라서 결정하는 것이 아님
- 프로젝트를 진행하기에 앞서 적합한 데이터베이스를 선택해야 함
SQL (관계형 DB)
- SQL 을 사용하면 RDBMS 에서 데이터를 저장, 수정, 삭제 및 검색할 수 있음
- 두가지 특징
- 데이터는 정해진 데이터 스키마에 따라 테이블에 저장
- 관계를 통해 여러 테이블에 분산
- 스키마를 준수하지 않은 레코드는 테이블에 추가 할 수 없음
NoSQL (비관계형 DB)
- 스키마도 없고, 관계도 없음
- NoSQL 에서는 레코드를 문서라고 부름
- SQL 은 정해진 스키마를 따르지 않으면, 데이터 추가가 불가능했음, 하지만 NoSQL에서는 다른 구조의 데이터를 같은 컬렉션에 추가 가능함
- 문서 (documents) 는 Json 과 비슷한 형태로 가지고 있음, 관련데이터를 동일한 컬렉션에 넣음
- 테이블을 조인할 필요없이 이미 필요한 것을 문서를 작성한것
- 조인을 잘 사용하지 않고, 자주 변경되지 않는 데이터일 때 NoSQL을 사용함
확장 개념
- 수직적 확장
- 단순히 데이터베이스 서버의 성능을 향상시키는 것 (CPU 업그레이드)
- 수평적 확장
- 더 많은 서버가 추가되고 데이터베이스가 전체적으로 분산됨을 의미 (하나의 데이터베이스에서 작동하지만 여러 호스트에서 작동)
- 데이터 저장 방식으로 인해 SQL 데이터베이스는 일반적으로 수직적 확장만 지원함
둘 중에 뭘 선택?
- 정답은 없음, 어떤 데이터를 다루느냐에 따라 선택을 고려해야함
SQL 장/단점
- 장점
- 명확하게 정의된 스키마, 데이터 무결성 보장
- 관계는 각 데이터를 중복없이 한번만 저장
- 단점
- 덜 유연함, 스키마를 사전에 계획하고 알려야함, 나중에 스키마 수정하기 겁나힘듬
- 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 가능성이 굉장히 큼
- 대체로 수직적 확장만 가능
NoSQL 장/단점
- 장점
- 스키마가 없어서 유연함, 언제든지 저장된 데이터를 조정하고 새로운 필드 추가가능
- 데이터 읽어오는 속도 빠름
- 수평 및 수직 확장이 가능해서 애플리케이션이 발생시키는 모든 읽기/쓰기 요청 처리가능
- 단점
- 유연성으로 인해 데이터 구조 결정을 미루게 됨
- 데이터 중복 가능
- 여러 컬렉션에 중복되어 있어서 수정시 모든 컬렉션에서 수정해야함
SQL 데이터베이스 사용이 더 좋은 경우
- 관계를 맺고 있는 데이터가 자주 변경되는 애플리케이션의 경우
- 변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에게 더 중요한 경우
NoSQL 데이터베이스 사용이 더 좋을 때
- 정확한 데이터 구조를 알 수 없거나 변경/확장 될 수 있는 경우
- 읽기는 자주하지만, 데이터 변경은 자주 없는 경우
- 데이터베이스를 수평으로 확장해야 하는 경우 (막대한 양의 데이터를 다뤄야 하는 경우)
'데이터베이스' 카테고리의 다른 글
[데이터베이스] - DBCP(Database Connection Pool) (0) | 2024.01.10 |
---|---|
[데이터베이스] - 2PL 과 LOCK (0) | 2024.01.04 |
[데이터베이스] - 트랜잭션 동시성 제어 (2) (1) | 2024.01.04 |
[데이터베이스] - 트랜잭션 동시성 제어 (1) (0) | 2024.01.04 |
[데이터베이스] - 최적화 방법 11가지 (1) | 2024.01.02 |