[DB] RDB 와 NoSQLWeb_Backend/DB2023. 5. 26. 14:57
Table of Contents
💬 RDB와 NoSQL의 차이점은 무엇인가요?
✅ 관계형 데이터베이스(RDB)는 사전에 엄격하게 정의된 DB schema를 요구하는 table 기반 데이터를 구조를 갖는데 반해, 비관계형 데이터베이스인 NoSQL은 table 형식이 아닌 비정형 데이터를 저장할 수 있도록 지원합니다.
NoSQL은 애자일 개발 등 확장 가능성이 있거나 정확한 데이터 구조가 정해지지 않아 수정 가능성이 있을 때 유연하게 대처가 가능하다는 장점이 있지만, RDB는 엄격한 Schema로 인해 데이터의 중복이 없기 때문에, update가 많거나 데이터 테이블 간에 상관관계가 복잡할 때 유리합니다. 반면 NoSQL은 데이터 중복으로 인해 update시 모든 컬렉션에서 수정이 필요하기 때문에 update가 적고 조회가 많을 때 유리합니다.
따라서 은행거래 등 고도로 정규화된 데이터를 필요로 하는 등의 시스템에서는 RDB를 이용하고, 빅데이터와 같이 대량의 데이터를 요구로 하는 곳에서는 NoSQL을 이용하는것이 바람직합니다.
RDB - NoSQL
RDB 란?
📌 Relational Database로 관계형 데이터 모델에 기초를 둔 데이터 베이스를 말함.
RDB 데이터베이스에서는 스키마를 사전에 정의해야만 함.
데이터 중복이 없기 때문에 데이터 update가 많을 때 유리
예를 들어 엑셀 시트처럼 2차원으로 데이터를 빈칸에 차곡차곡 담아가며, 각각의 칸에 번호가 매겨져 있고 이 번호를 통해 각각의 데이터를 확인하는 방식을 말한다. 관계형 데이터베이스 관리 시스템(RDBMS)은 구조화된 쿼리 언어(SQL)의 기반이다.
RDB는 과거부터 오랫동안 사용되어왔다.
원하는 내용을 찾고 정렬하기에 좋으며, 미리 예상되는 데이터의 흐름에 맞게 설계해 두기 때문에 안정성도 높은 특징을 가진다. 확장설계를 적용하기 편하다는 장점도 가지고 있다.
Oracle과 mySQL, MS SQL, IMB DB2가 대표적인 RDB이다.
최근에는 RDB에서 No SQL이라는 새로운 방식의 DB가 등장하고 있다. 하지만 No SQL의 경우 단순한 탐색과 입출력이 필요한 서비스에서 사용하기에는 속도나 효율성에 문제가 있어 RDB와 병행하여 사용될 것으로 보인다.
NoSQL이란?
📌 no SQL(Structed Query Language).
no의 해석에 대해서는 no, not olny, non-relational operational 등으로 의견이 갈린다.
NoSQL 데이터베이스에서 데이터는 사전에 스키마를 정의하지 않아도 저장될 수 있음.
update가 적고 조회가 많을 때 유리
대표적인 no SQL로는 mongoDB, Cassandra, HBase가 있으며 noSQL DB의 특징은 아래와 같음
- 실시간 웹 애플리케이션 및 빅데이터에 널리 사용
- 일반적으로 비정규화된 데이터에 의존하며, 상대적으로 적은 수의 데이터(또는 컨테이너)를 사용하는 애플리케이션 유형을 지원
- 참조를 사용해 데이터 관계를 모델링하지 않고, 포함된 기록(또는 문서)으로 모델링하는 애플리케이션을 지원
- 관계형 모델을 사용하지 않으며 테이블 간의 조인 기능이 없음
- 단일 테이블에 대한 쿼리작업에는 아주 잘 작동하나, 쿼리복잡성이 높아지는 경우 RDB선택해야.
- 직접 프로그래밍을 하는 등의 비 SQL 인터페이스를 통한 데이터 액세스
- 대부분 여러 개의 데이터 베이스 서버를 묶어서(클러스터링) 하나의 데이터베이스를 구성
- RDB에서 지원하는 Data 처리 완결성(Transaction ACID) 지원 미보장
- 데이터의 스키마와 속성들을 다양하게 수용 및 동적 정의(Schema-less)
- 데이터베이스의 중단 없는 서비스와 자동 복구 기능 지원
- 다수가 오픈소스로 제공
- 확장성, 가용성, 높은 성능
NoSQL 데이터베이스 유형
- 키 값 : 키 값은 가장 유연한 NoSQL 데이터베이스 유형입니다. 애플리케이션이 값 필드에 저장된 모든 데이터를 제약 없이 완벽하게 제어할 수 있기 때문이죠.
- 문서 : 문서 저장소 또는 문서 지향적 데이터베이스라고도 불리는 이 데이터베이스 유형은 반구조적 데이터의 저장, 검색, 관리에 사용됩니다. 문서에 포함할 필드를 특정할 필요가 없습니다.
- 그래프 : 이 데이터베이스는 데이터를 노드 및 노드 간 연결을 보여주는 관계로 구성합니다. 이 데이터베이스는 더욱 풍부하고 완전한 데이터 표현을 지원합니다. 그래프 데이터베이스는 소셜 네트워크, 예약 시스템, 사기 감지 등에 적용됩니다.
- 넓은 열 : 이 데이터베이스는 테이블, 행, 열 형식으로 데이터를 저장 및 관리합니다. 이 데이터베이스는 열 형식을 사용하는 애플리케이션에 광범위하게 배포되어 스키마 없는 데이터를 수집합니다.
NoSQL DB를 사용하면 좋은 경우
- 빠른 혁신이 필요한 기업 등 유연한 스키마가 필요할 때
- 대량의 데이터를 요구하는 경우
- 낮은 대기시간 또는 응답시간을 요구하는 애플리케이션
No SQL을 사용하면 안 좋은 경우
- 대다수의 금융, 회계, 기업 리소스 계획을 위한 고전적인 백오피스 비즈니스 애플리케이션
- 데이터의 변형 및 중복을 방지하기 위해 고도로 정규화된 데이터에 의존하는 분야이기 때문
- 쿼리의 복잡성이 높아지는 경우
- NoSQL 데이터베이스는 보통 복잡한 조인, 하위 쿼리 및 WHERE 절에서의 중첩 질의를 제공하지 않기 때문.
참고자료
https://www.oracle.com/kr/database/nosql/what-is-nosql/
'Web_Backend > DB' 카테고리의 다른 글
[DB, SQL] 데이터베이스, PostgreSQL설치, SQL구문(SELECT, WHERE, BETWEEN, IN, LIKE, ILIKE, ORDER BY, DISTINCT, COUNT, DATE) (2) | 2024.01.02 |
---|---|
[mysqlDump] DB 합치기.. 그거 어떻게 하는건데.....? feat.. mysqldump (0) | 2023.09.06 |
[DB] Primary Key란? (0) | 2023.05.26 |
[DB] ORM(Oject-Relational-Mapping) Framework 이란? (0) | 2023.05.26 |
db 연결용 컨트롤러 패키지 생성 (0) | 2022.03.08 |
@Yanako :: Yana's coding story였는데요, 우당탕탕 개발일지가 맞는것같
야나의 코딩 일기장 :) #코딩블로그 #기술블로그 #코딩 #조금씩,꾸준히
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!