COCO World
[CS] SQL과 noSQL의 특징과 차이점을 알아보자 본문
🍉 개요
SQL과 noSQL은 데이터베이스를 선택할 때 고려해야하는 사항으로서 데이터 구조이며, 프로그래밍 언어이다.
SQL을 알아야하는 이유는 대량의 데이터를 효율적으로 다루기 위해선 어떻게 관리하고, 데이터를 가공하고 구조화하는 방법을 위해서이다.
스키마란?
Schema는 데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것이다.
개체의 특징을 나타내는 속성(Attribute), 속성들의 집합으로 이루어진 개체(Entity), 개체 간 존재하는 관계(Relationship)에 대한 정의와 이들이 유지해야할 제약조건들을 기술한 것이다.
🍉 SQL(Structured Query Language) : 관계형 데이터베이스
관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 조작하며 쿼리를 관리하기 위해 사용되는 표준화된 프로그래밍 언어이다.
특징
- 수직적 확장이며 단순히 데이터베이스 서버의 성능을 향상하는 것을 의미한다
- 데이터를 저장하기 위해서 스키마가 먼저 정의되어야 한다
- 엄격한 스키마구조를 가지고 있다
- 테이블에 데이터가 저장된다
- 복잡한 쿼리에 적합하다
- 모든 데이터는 동일한 구조를 따라야 한다
- 데이터는 관계를 통해 여러 테이블에 분산된다
- 데이터의 중복을 피하기 위해 '관계'를 이용한다
장점
1. 간편하고 명확한 스키마로 쉬운 데이터 관리
표준화된 데이터베이스 언어로서 다양한 DBMS에서 사용할 수 있다. 데이터를 쿼리하는 것이 표준화되어있어 간단하고 사용하기 편리하다
2. 일관성과 무결성
관계형을 기반으로 데이터를 구조화하고 관계를 정의하는데 테이블과 열을 사용하여 데이터를 구조화하고, 관계를 설정하여 데이터간 일관성과 무결성을 유지할 수 있다.
3. 트랜잭션과 제약조건 지원
트랜잭션을 사용하여 데이터의 원자성과 일관성을 보장하며, 제약조건을 설정하여 데이터의 유효성을 유지할 수 있다.
단점
1. 스키마 변경이 어렵다
2. 대용량 데이터 처리의 한계가 있고 확장이 어렵다
SQL 데이터베이스 관리 시스템
1. MySQL
- 무료 및 오픈 소스
- 대규모 커뮤니티, 광범위한 테스트, 강화된 안정성을 갖춘 확립된 DB
- 모든 주요 플랫폼에서 사용 가능
- 복제 및 샤딩 사용 가능
- 광범위한 사용 사례 지원
2. Oracle
- 가장 비용이 많이 드는 솔루션 중 하나
- 빈번한 업데이트, 전문적인 관리 및 우수한 고객 지원이 포함된 사용 DB
- 대규모 데이터베이스에서 사용 가능
- 간단한 업그레이드
- 트랜잭션 제어
- 모든 운영 체제와 호환
- 워크로드가 까다로운 기업 및 조직에 적합
- SQL 언어가 사용되는 Procedural Language/SQL
3. Microsoft SQL Server
- 마이크로소프트에서 개발 및 관리하는 DB
4. PostgreSQL
🍉 noSQL(Not Only SQL) : 비관계형 데이터베이스
관계형 데이터베이스가 아닌 다른 형태의 데이터베이스 모델을 지칭하는 용어로서, 대량의 비정형 데이터를 저장하고 처리하기 위해 설계되었으며 확장성고 유연성에 초점을 둔다.
특징
- 수평적 확장으로서 더 많은 서버가 추가되고 DB가 전체적으로 분산된다
- 특별한 구조(스키마)도 없고, 관계를 통해 서로 연결되지도 않는다
- key-value 구조로 스키마 없는 방식으로 데이터를 저장한다
- 행 대신 열에 데이터를 저장한다
- 여러 테이블을 관계할 필요없이 이미 필요한 모든 것을 갖춘 문서로서 작성된다
장점
1. 확장성과 성능
분산 아키텍처와 데이터를 작은 단위로 나누어 저장하는 데이터 샤딩으로 인해 확장성과 성능을 향상 시키며, 대량을 데이터 처리에 용이하다.
2. 유연성
SQL보다 스키마의 제약이 적고, 데이터 모델을 유연하게 조정할 수 있어 요구사항 변화에 더 적응하기 용이하다.
3. 다양한 데이터 형식 지원
비정형 데이터나 다양한 데이터 형식을 다루는데 적합하다. 텍스트, 이미지, 동영상 등 다양한 데이터를 효과적으로 저장하고 처리할 수 있다.
단점
1. 제한된 쿼리 기능
noSQL의 목적인 유연성과 확장성을 위해 특정 쿼리 기능을 제한하는 경우가 있다. 간단한 조회 및 필터링은 가능하지만, 복잡한 쿼리 작업과 다양한 조인 작업은 제한적이다.
2. 일관성 및 무결성 문제
noSQL은 데이터 중복을 허용하므로 데이터 일관성, 무결성을 유지하기 위해 개발자의 추가적인 작업이 필요하다.
3. 복잡한 데이터 모델링
스키마가 없거나 유연한 스키마를 가질 수 있어 개발자가 데이터 모델을 직접 설계해야하며, 이는 잘못된 모델링을 초래할 경우 성능저하를 야기할 수 있다.
4. 적은 커뮤니티 및 도구
SQL보다 상대적으로 적은 커뮤니티와 도구 생태계를 가지고 있다. 따라서 지원 및 문제해결에 어려움을 겪을 수 있다.
noSQL 데이터베이스 관리 시스템
1. MongoDB
- 가장 대중화된 noSQL 중 하나
- 텍스트, 오디오와 같은 풍부한 콘텐츠 제공
- 대규모 확장 및 동적 데이터 구조와 쿼리
- 빠르게 변경해야하는 스키마에 유용
- 글로벌 클라우드 DB 서비스에서 사용 가능
2. Redis
- 동급 최고의 캐싱 성능 제공
- 유연하고, 복잡한 데이터 저장
- 웹/모바일 애플리케이션을 위한 세션 저장,관리에 적합
- 실시간 처리에 용이함
- 실시간 채팅 및 소셜 미디어 피드 지원
3. Firebase의 실시간 데이터베이스와 Cloud Firestore
🍉 SQL과 noSQL 비교해보기
- 특정방식으로 데이터에 접근해야하는 경우에는 관계형으로 이루어져 있는 SQL이 더 유용하다
- 다양한 데이터 구조와 관계가 깊지 않은 데이터를 다루는데에는 noSQL이 더 적합하다
- SQL은 noSQL보다 유지 관리 비용이 더 많이 소요되며, 인덱스 및 뷰 생성과 같은 추가관리가 필요하다
- SQL은 데이터베이스가 더 복잡하다. ACID 규칙을 따라야 하므로 속도가 느려지고, 복잡해질 수 있기 때문이다
- 변경될 여지가 적고, 명확한 데이터 구조설계가 필요한 조건일 경우 SQL이 더 적합하다
- 데이터 변경이 적고, 읽기의 권한이 많이 요구되는 경우엔 noSQL이 적합하다
- 막대한 양의 데이터를 다뤄야하는 수평적 확장이 요구되는 경우에는 noSQL이 더 적합하다
'CS Store' 카테고리의 다른 글
[CS] ERP 관련 용어 개념 및 의미 정리 (0) | 2023.08.02 |
---|---|
[Front/리액트] 프론트엔드 리액트부문 면접 질문 리스트 (0) | 2023.06.21 |
[CS] 서버사이드 렌더링(SSR)과 클라이언트사이드 렌더링(CSR) (0) | 2023.05.29 |
[CS] HTTP와 HTTPS를 비교해보자 (0) | 2023.05.28 |
[CS] 쿠키(Cookie)와 세션(Session)의 개념 및 특징, 차이점 (0) | 2023.05.28 |