gimmickbutreal

[CS/DB] SQL과 NoSQL의 차이 본문

CS

[CS/DB] SQL과 NoSQL의 차이

isshosng 2022. 7. 31. 19:49

SQL 

SQL 관계형 데이터베이스에서 사용하기 위해 설계된 언어입니다. 표준적인 SQL 명령어들이 있으며 이것은 모든 관계형 데이터베이스에 의하여 지원됩니다. SQL 명령어들은 두 가지의 카테고리로 나누어집니다.

 

1. 데이터 정의 명령어(Data Definitnion Language)

 테이블을 생성하거나 변경합니다.

대표 명령어 : CREATE, ALTER, DROP, USE

 

2. 데이터 조작 명령어(Data Manipulation Language)

데이터를 추출, 추가, 삭제, 수정합니다. 

대표 명령어 : SELECT, INSERT, DELETE, UPDATE

 

SQL이 사용되는 분야

관계를 맺고 있는 데이터가 자주 변경되는 프로그램이나 변경될 여지가 없으며 명확한 스키마가 더 중요할 때 사용하면 좋다.

NoSQL는 변경될 때마다 여러 컬렉션을 모두 수정해주어야 하기 때문이다. 

 

NoSQL

NoSQL이라는 용어는 비관계형 데이터베이스 유형을 가리키며 이 데이터베이스는 관계형 테이블과는 다른 형식으로 데이터를 저장합니다. 그러나 NoSQL 데이터베이스는 언어마다 관습화된 API, 선언적 구조의 쿼리 언어, 쿼리별 언어를 사용하여 질의할 수 있습니다. 이 데이터베이스가 not only SQL 데이터베이스라고 불리는 이유가 바로 이것입니다. 

 

NoSQL이 사용되는 분야

높은 확장성과 가용성이 주요 장점인 NoSQL 데이터베이스는 실시간 웹 애플리케이션 및 빅데이터에 널리 사용됩니다.

변화하는 요구 사항에 빠르게 적응함으로써 민첩한 개발 패러다임에 자연스럽게 활용되는 이점 때문에 개발자들 역시 NoSQL을 선호합니다. NoSQL 데이터베이스를 사용하면 데이터는 보다 직관적이고 이해하기 쉬운 방식 또는 애플리케이션이 사용하는 것에 가까운 방식으로 저장됩니다. NoSQL 스타일의 API를 사용하면 저장 또는 검색 시 데이터 변환의 필요성이 줄어듭니다. 또한 NoSQL 데이터베이스는 다운타임이 없는 클라우드의 이점을 완전히 누릴 수 있습니다.

 

 

SQL과 NoSQL의 차이

 

SQL 데이터베이스는 관계형인 반면 NoSQL 데이터베이스는 비 관계형입니다. 관계형 데이터베이스 관리 시스템(RDBMS)은 구조화된 쿼리 언어(SQL)의 기반입니다. 이를 통해 사용자는 고도로 구조화된 테이블에서 데이터에 액세스하고 데이터를 조작할 수 있습니다. 이 시스템은 MS SQL Server, IBM DB2, Oracle, MySQL 등 데이터베이스 시스템의 근간이 되는 모델입니다. 하지만 NoSQL 데이터베이스에서는 데이터 액세스 구문이 데이터베이스마다 다를 수 있습니다.

 

만일, SQL과 NoSQL의 차이가 무엇이냐?라는 질문에는 이렇게 말할 수 있겠습니다.

 

SQL과 NoSQL는 크게 5가지의 차이점이 있고 다음과 같습니다.

  1. SQL 데이터베이스는 관계형이고 NoSQL 데이터베이스는 비관계형입니다.
  2. SQL 데이터베이스는 구조화된 쿼리 언어를 사용하며 미리 정의된 스키마를 가지고 있습니다. 
    NoSQL 데이터베이스에는 비정형 데이터에 대한 동적 스키마가 있습니다.
  3. SQL 데이터베이스는 수직 확장이 가능하고 NoSQL 데이터베이스는 수평 확장이 가능합니다.
  4. SQL 데이터베이스는 테이블 기반이고 NoSQL 데이터베이스는 문서, 키-값, 그래프 또는 와이드 컬럼 저장소입니다.
  5. SQL 데이터베이스는 다중 행 트랜잭션에 더 좋고 NoSQL은 문서나 JSON과 같은 비정형 데이터에 더 좋습니다.

 

 

참고 표

  SQL NoSQL
데이터 저장 모델 행과 열이 고정된 테이블 문서: Json
Key-value: key-value pairs
Wide-column: 행과 동적 열이 있는 테이블
그래프: 노드 및 가장자리
개발 이력 데이터 중복 감소에 중점을 두고 1970년대에 개발됨 2000년대 후반에 확장에 중점을 두고 애자일 및 DevOps 방식으로 구동되는 신속한 애플리케이션 변경을 허용하도록 개발됨
Oracle, MySQL, Microsoft SQL Server, PostgreSQL 문서: MongoDB, CouchDB
Key-value: Redis, DynamoDB
Wide-Column: Cassandra, HBase
그래프: Neo4j, Amazon Neptune
주요 목적 범용 문서: 범용
Key-value: 단순 조회 쿼리를 통한 대용량 데이터
Wide-Column: 예측 가능한 쿼리 패턴을 갖는 대용량 데이터
그래프: 연결된 데이터 간의관계 분석 및 탐색
스키마 엄격함 유연함
스케일링 수직(더 큰 서버로 확장) 수평(일반 서버 전반에 걸쳐 확장)
다중레코드 ACID 트랜잭션 지원 대부분은 이를 지원하지 않으나 MongoDB는 예외
조인 일반적으로 필수 일반적으로 필요하지 않음
데이터-객체 매핑 ORM(객체 관계형 매핑)필요 대체로 필요하지 않으며 MongoDB는 프로그래밍 언어의 데이터 구조에 직접 매핑됨

 

작성 중임

'CS' 카테고리의 다른 글

스택과 큐 Stack & Queue  (0) 2023.07.12
연결리스트 LinkedList  (0) 2023.07.12
복잡도  (0) 2023.07.06
[CS/Java] 옵저버 패턴(Observer Pattern)  (0) 2022.07.24
[CS/Java] Collection Framework란 무엇일까?  (0) 2022.07.14