본문 바로가기
책벌레와 벌레 그 사이 어딘가/개념쌓기

[개념쌓기] RDBMS & NoSQL

by veganwithbacon 2022. 12. 30.
반응형

오늘은 RDBMS와 NOSQL을 정확히 알기 위해 RDB, RDBMS, SQL, NOSQL에 대해 모두 정리할 것이다. 

 

 

✅한국의 코리안을 위한 짧은 쇼츠 요약 서머리

RDB(관계형 데이터베이스)RDBMS(데이터베이스를 관리한다)로 생성하고 수정하고 관리한다.

SQL은 RDBMS를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이고,

NOSQL(비관계형 데이터베이스)는 RDB 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 방식이다.

 

RDBMS가 클라이언트/서버 환경에 맞는 데이터 저장기술이라면, NOSQL은 클라우드 환경에 맞는 저장기술이다.


  RDB(Relational DataBase)

RDB(Relational DataBase)란 관계형 데이터 모델에 기초를 둔 데이터베이스이다.

(구성된 테이블이 다른 테이블들과 관계를 맺고 모여있는 집합체)

관계형 데이터 모델이란 데이터를 구성할 때 필요한 방법 중 하나로 모든 데이터를 2차원 테이블 형태로 표현해준다.

관계형 데이터 모델의 개념은 표현 개체의 외부개념 관례를 적용한 것으로, 데이터 간의 상관관계에서 개체간의 관계를 표현한 것이라고 할 수 있다.

 

  로우(row) : 하나의 항목을 대표하는 데이터

  컬럼(column) : 각 항목의 속성

  테이블(table) : 로우와 컬럼으로 구조화 된 데이터 목록

 

데이터 모델은 컬럼과 로우로 이뤄졌을 때 하나의 테이블이라 할 수 있다.

데이터 항목들은 로우에 저장되고, 항목의 속성은 컬럼이라고 표현한다.

열은 항목의 속성인 만큼 입력되는 데이터의 유형이 정해진다.

 

관계형 데이터베이스에 관계는 테이블 간에 관계를 의미하고 각 테이블 행들이 연결되어 상호작용 할 수 있도록 한다.

이 때 관계는 1:1, 1:N, N:N 으로 구분 가능하다.

 

RDB의 특징은 데이터의 독립성이 높고, 고수준의 데이터 조작언어인 DML(Data Manipulate Language)을 사용해 결합,제약, 투영 등의 관계 조작을 하며, 비약적으로 표현능력을 높일 수 있다. 또한 이들의 관계 조작에 의해 자유롭게 구조를 변경 가능하다는 것이 RDB의 특징이다.

만들거나 이용하기도 쉽지만, 확장이 용이하다는 것이 제일 큰 장점이다.

ER모델에 따라 DB가 만들어지며, 데이터베이스는 하나 이상의 테이블로 구성된다.ER모델에서 엔티티를 기반으로 테이블이 만들어진다.

 


  RDBMS(Relational DataBase Management System)

: 사용자의 요구에 따라 정보를 생성해 관계형 데이터베이스를 생성하고 수정하며 관리할 수 있는 소프트웨어

 

기존 DBMS의 저장 방식은 SQL에 의해 저장되고 있으며 정해진 스키마에 따라 데이터를 저장해야했다.

그러나 RDBMS는 RDB를 관리하는 시스템으로, 테이블이 서로 연관되어 있어 DBMS보다 효율적으로 데이터를 저장, 구성 및 관리할 수 있다. 또한 정규화를 통해 데이터의 중복성을 최소화하며 트랜잭션을 수행하는 것이 쉽다. 

ACID(Atomicity, Consistency, Isolation, Durability)를 위한 무결성을 제약하며(즉,ACID원칙을 기본으로 구성)

RDBMS는 많은 데이터를 처리하는데 유리하다.

(ACID 의미)

더보기

A - Atomocity 원자성

C - Consistency 일관성

I - Isolation 고립성

D - Durability 지속성

 


SQL은 Foreign Key등을 이용해 관계를 정의하고, NoSQL은 데이터 간의 관계를 정의하지 않는다

SQL과 NoSQL의 가장 큰 차이점이라 할 수 있다. RDB는 데이터 관계형으로 결합하며, NoSQL은 각 테이블을 하나의 데이터셋, 그 자체로 간주한다.

 

  SQL(Structed Query Language)

SQL의 의미는 구조화된 쿼리 언어라는 뜻의 약자이다.

SQL을 사용하면 RDBMS에서 데이터를 저장,수정,삭제 및 검색할 수 있다.
- RDB의 데이터는 정해진 데이터 스키마를 따라 DB 테이블에 저장

- 관계를 통해 연결된 여러 개의 테이블에 데이터가 분산된다

 

데이터는 테이블에 레코드로 저장되는데, 각 테이블마다 명확하게 정의된 구조가 있다.

해당 구조는 필드 명과 데이터 유형으로 정의된다.

 

따라서 스키마를 준수하지 않으면 레코드는 테이블에 추가될 수 없다. 스키마를 수정하지 않는 한 정해진 구조에 맞는 레코드만 추가가 가능한 점이 RDB의 특징 중 하나이다.

 

데이터의 중복을 피하기 위해 '관계'를 이용한다. 테이블에서 중복 없이 하나의 데이터만을 관리하기 때문에, 다른 테이블에서, 다른 테이블에서 부정확한 데이터를 다룰 위험이 없는 것이 특징인 것이다.


  NoSQL(No Structure Query Language || Not Only SQL)

관계형 데이터베이스에서 한계점이 명확히 노출되어 이로 인해 새로운 비관계형 데이터베이스가 탄생하게 되었다.

SQL과는 반대되는 접근 방식을 따르며, 단어에서 그대로의 의미이며 SQL(관계형)과 반대되는 접근방식을 따르기 떄문에 다음과 같은 이름이 붙게 되었다.

쉽게 말해 스키마도, 관계도 없다.

 

NoSQL에서는 레코드를 문서(document)라고 부른다.

SQL과 NoSQL에서의 핵심적인 차이는, SQL은 정해진 스키마를 따르지 않으면 데이터 추가가 불가능하다.

그러나 NoSQL에서는 다른 구조의 데이터를 같은 컬렉션에 추가할 수 있다.

 

NoSQL DB의 종류는 키-값 DB, 도큐먼트 DB, 그래프 DB 등으로 나뉜다. 키-값 DB는 키와 값으로 구성된 배열구조의 데이터베이스로 NoSQL DB 중 가장 단순한 구조이다. 도큐먼트 DB는 필드와 값의 형태로 구성된 데이터를 JSON 형태로 관리하는 DB로 NoSQL DB 중 제일 많이 사용한다. 그래프 DB는 노드와 관계로 구성된 DB로 근접한 객체를 모델링할 목적으로 설계되었다.

 

- 유연성 : 스키마 선언 없이 필드의 추가 및 삭제가 자유로운 Schema-less 구조다
- 확장성 : 스케일 아웃에 의한 서버 확장이 용이하다
- 고성능 : 대용량 데이터 처리 능력이 뛰어나다
- 가용성 : 여러 대의 백업 서버 구성으로 인해 장애 발생시에도 무중단 서비스가 가능하다

 

데이터의 저장 방식 때문에 관계형 DB는 일반적으로 수직적 확장만을 지원하는데 반해, NoSQL DB에서는 수평적 확장만을 지원한다. RDB에서는 같은 테이블 스키마를 가진 데이터를 여러 개의 DB에 분산 저장하는 방식인 '샤딩(Sharding)'을 활용해 데이터를 저장해 활용하나 구현하기가 대체로 어렵다. 하지만 NoSQL DB는 이를 기본적으로 지원하여 여러 서버에서의 DB를 쉽게 분리할 수 있다.

 

위 표는 해당 블로그에서 복붙

(https://overcome-the-limits.tistory.com/283 )

 

 

 

참고자료: 

https://khj93.tistory.com/entry/Database-RDBMS%EC%99%80-NOSQL-%EC%B0%A8%EC%9D%B4%EC%A0%90 

https://velog.io/@dat0802/RDBMS%EC%99%80-MySQL%EC%9D%98-%EC%B0%A8%EC%9D%B4 

https://im-designloper.tistory.com/67 

https://jwprogramming.tistory.com/52 

https://runcoding.tistory.com/3 

https://m.blog.naver.com/cjhol2107/221758915414

 

 

반응형

댓글