https://bright-landscape.tistory.com/48
DBMS - 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합
SQL - 관계형 데이터베이스 관리시스템의 데이터를 관리하기 위해 설계된 프로그래밍 언어
이전에 DBMS와 SQL에 대해서 포스팅을 한적이 있었다.
그렇다면, NoSQL과의 차이는 어떻게 될까?
NoSQL ( Not Only SQL) 란?
다양한 데이터 모델로, RDBMS와 달리 테이블간 관계를 정의하지 않는다. 하나의 테이블이며, 관계를 정의하지 않기 때문에 테이블간 Join이 불가능하다.
용도
대규모 데이터, 웹 응용프로그램, 소셜 미디어, 로그 및 이벤트 데이터와 같이 비정형 또는 반정형 데이터를 다루는 경우 사용된다. 대용량 및 빠른 속도의 데이터 처리에 적합하며, 분산 환경에서 쉽게 확장될 수 있다.
유형
문서 지향 ( Document_oriented), 키-값 (Key-Value), 열 지향(Column-family), 그래프(Graph) 등
그 중 문서 지향(Document_oriented)으로 사용되는 것이 MongoDB이다.
몽고DB는 눈으로 데이터를 받아보면 모두 JSON형태로 보여주고 저장되는것처럼 보이지만, 정확히 말하자면 BSON형태로 저장되어 사용하고 있다.
BSON 이란?
Binary JSON형태로, JSON과 동일한 구조이지만, Binary형태로 변경된 구조를 말한다. JSON에 대한 몇가지 문제점을 통해 등장하게 되었는데, 그 문제점을 살펴보자.
- JSON은 텍스트 기반으로 구문 분석이 매우 느리다.
- JSON은 공간 효율성과 거리가 멀다. (데이터 베이스 문제)
이 문제점을 통해 JSON의 좋은 점은 가져가고, 단점을 보안하여 기계가 빠르게 읽을 수 있는 binary 형태로 변경하여 저장한 것이다.
즉, 몽고DB는 내부적으로 BSON을 사용한다. 우리 눈에만 JSON 형태로 보일 뿐, 네트워크로 전송할 때에는 BSON 형태로 만들어 저장또는 전송한다.
RDBMS와 NoSQL의 장단점
RDBMS
장점
- 정해진 스키마에 따라데이터를 저장해야 하므로 명확한 데이터 구조를 보장한다.
- 데이터를 중복 없이한 번만 저장할 수 있다.
단점
- 테이블간 관계를 맺기 때문에 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있다.
- 성능 향상을 위해 서버의 성능을 향상시켜야 하는 Scale-up만 지원한다. 따라서 비용이 아주 커질 수 있다.
- 스키마로 인해 데이터가 유연하지 못한다. 스키마가 변경될 경우 번거롭다.
NoSQL
장점
- 스키마가 없기 때문에 유연하며 자유로운 데이터 구조를 가진다. 언제든 저장된 데이터를 조정하고 새로운 필드를 추가할 수 있다.
- 데이터 분산이 용이하며 성능향상을 위한 Scale-up 뿐만 아니라 Scale-out도 가능하다.
- 수직적 확장(크고 비싼서버)를 사용하는 RDB와는 달리 수평적 확장이 가능하다.
단점
- 데이터 중복이 발생할 수 있고, 중복된 데이터가 변경될 경우 수정을 모든 컬렉션에서 수행해야한다.
- 스키마가 존재하지 않기 때문에 명확한 데이터 구조를 보장하지 않으며 데이터 구조 결정이 어려울 수 있다.
- * ACID 트랜잭션 지원 안함
RDBMS | NoSQL | |
데이터모델 | 고정 행, 열이 있는 테이블 | document-Json, key value , Graph 등 |
예시 | Oracle, MySQL, PostgreSQL, MSSQL | MongoDB, Hbase, Redis 등 |
목적 | 범용 | 대량의 데이터 추출, 관계분석, 탐색 등 |
스키마 | 엄격함 | 유연함 |
확장성 | 수직 | 수평 |
ACID 트랜잭션 | 지원 O | 지원 X |
ORM | 필요 O | 필요 X |
'✨ DBMS > etc' 카테고리의 다른 글
[DB] MyBatis와 JPA의 차이와 장점, 단점 (0) | 2023.12.24 |
---|---|
[DB] ORM 이란? (0) | 2023.12.24 |
[DB] 정규화(Normalization) (0) | 2023.08.03 |
[DB] 데이터베이스의 특징, 키(Key), 이상 현상, 함수 종속 (0) | 2023.08.02 |
[SQL] 분석함수(윈도함수) OVER( ), PARTITION BY, ORDER BY (0) | 2023.08.02 |
댓글