Search
Duplicate
📦

RDBMS vs NoSQL

글감
BE
DB
작성자
작성 일자
2023/12/18 05:41
상태
완료
공개여부
공개
Date
생성자
작업자

데이터베이스

데이터베이스(DB, Database)는 데이터를 저장해두는 저장소를 말한다. DB에는 계층형(Hierarchial), 망형(Network), 관계형(Relational) 등이 있다.
계층형 DB
계층형 DB는 처음 등장한 DB의 개념으로, 트리(tree) 형태로 구성되어 있는 DB를 말한다. 계층형 DB는 구성 이후 변경이 까다롭고 다른 데이터를 찾아가는 과정이 비효율적이기 때문에 사용되지 않는다.
망형 DB
망형 DB는 계층형 DB의 문제점을 개선하기 위해 나온 DB로, 네트워크처럼 데이터끼리 연결한 유연한 구조를 가지고 있다. 다만 프로그래머가 모든 구조를 이해해야만 프로그램 작성이 가능하기 때문에 계층형과 마찬가지로 거의 사용되지 않는다.
관계형 DB
관계형 DB는 줄여서 RDB라고도 부르며, 테이블과 행, 열의 구조로 데이터를 저장하여 데이터 처리 및 쿼리를 효율적으로 수행한다. 현재의 대부분 데이터베이스가 관계형 DB 형태로 사용되고 있다.

RDBMS(Relational Database Management System)

DBMS는 Database Management System의 약자로, 데이터베이스를 관리하고 운영하는 소프트웨어를 말한다. 다양한 데이터가 저장된 데이터베이스는 여러 사용자나 응용 프로그램에 데이터를 공유하고 동시에 접근할 수 있어야한다. 이러한 처리를 해주는것이 DBMS의 역할이고, 대표적인 RDBMS에는 MySQL, Oracle, MariaDB, PostgreSQL 등이 있다.
관계형 데이터베이스는 고정된 행(row)과 열(column)으로 구성된 테이블에 데이터를 저장한다. 각 열에는 하나의 속성에 대한 정보를 저장하고, 행에는 각 열 데이터 형식에 맞춰 데이터가 저장된다.
RDBMS의 장점
스키마가 명확하게 정의되어 있어, 구조 파악이 용이하다.
데이터 무결성을 보장한다.
데이터를 중복 없이 한 번만 저장할 수 있다.
RDBMS의 단점
데이터 스키마를 사전에 계획 및 구성해야하고, 추후 수정이 어려워 유연성이 떨어진다.
여러 테이블이 관계를 맺고 있어 Join 문을 통한 복잡한 쿼리가 만들어질 수 있다.
대체로 수직적 확장만 가능하다.

NoSQL(Not Only SQL)

NoSQL은 비관계형 데이터베이스라고도 불리며, 관계형 데이터베이스를 제외한 나머지 유형의 DB를 말한다. 최근 웹 애플리케이션이 보편화되고 복잡해지면서 NoSQL 데이터베이스의 사용이 많아지고 있다.
NoSQL 데이터베이스는 테이블 형식이 아니라 다른 형태로 데이터를 저장하는 방식이다. 저장하는 데이터 유형에 따라 문서, 키-값, 와이드 컬럼, 그래프 등 다양한 형태의 NoSQL 데이터베이스가 있고, 유연한 스키마를 제공하며 스키마에 따라 데이터를 읽어온다.
NoSQL의 종류
Key-Value DB
데이터를 Key-Value 쌍으로 저장하는 데이터베이스로, value에는 어떤 형태의 데이터라도 담을 수 있다.
간단한 API로 인해 쿼리의 속도가 굉장히 빠른 편이다.
Redis, Amazon DynamoDB, Riak 등이 있다.
Document DB
데이터를 Key와 Document 형태로 저장하는 데이터베이스로, Key-Value와 다르게 Value가 계층적인 형태의 Document로 저장된다.
객체지향의 객체처럼 문서를 하나의 단위로 취급하여 저장한다.
Key-Value 모델처럼 검색이 굉장히 빠르고, 쿼리의 결과가 JSON이나 xml 형태로 출력된다.
MongoDB, CouthDB 등이 있다.
Wide Column DB
Column-family Model 기반의 데이터베이스이며, Row(Key 값)와 Column-family, Column-name을 가지는 형태이다.
연관된 데이터를 같은 Column-family안에 묶고 각자의 Column-name을 가져, 저장된 데이터를 하나의 커다른 테이블로 표현 가능하다.
쿼리는 Row, Column-family, Column-name으로 수행된다.
HBase, Hypertable 등이 있다.
Graph DB
데이터를 Node와 Edge, Property와 함께 그래프 구조로 표현하고 저장하는 데이터베이스이다.
개체와 관계를 그래프 형태로 표현한 것이므로 관계형 모델이라고 할 수 있다.
데이터 간의 관계를 위주로 탐색할 때 적합하기 때문에 페이스북이나 트위터 같은 소셜 네트워크에 적합하고, 연관된 데이터를 추천해주는 추천 엔진이나 패턴 인식 등의 데이터베이스에도 적합하다.
GraphQL, Neo4J 등이 있다.
NoSQL 장점
스키마가 없기 때문에 저장된 데이터를 조정하거나 새로운 필드를 추가하기에 용이하다.
유연한 스키마를 통해 저장하고 읽어오기 때문에, 데이터의 저장과 읽어오는 속도가 빠르다.
수직 확장 뿐만아니라 분산형 데이터베이스와 같은 수평 확장이 용이하다.
NoSQL 단점
데이터 중복을 별개로 확인해야한다.
데이터 무결성을 보장해주지 않는다.
데이터가 여러 컬렉션에 중복되어 있기 때문에 수정이 필요하다면 모든 컬렉션에서 수정해야한다.

RDBMS와 NoSQL 선택하기

RDBMS가 적합한 경우
데이터베이스의 ACID 성질을 준수해야하는 애플리케이션을 개발하는 경우
관계를 맺고 있는 데이터가 자주 변경되는 경우
변경될 여지가 없고 명확한 스키마를 가지고 있고, 사용자와 데이터에 스키마가 중요한 경우
NoSQL이 적합한 경우
정확한 데이터 구조를 알 수 없거나, 변경이나 확장될 가능성이 있는 경우
읽기는 자주해도 데이터 변경은 자주 없는 경우
막대한 양의 데이터를 다뤄야하고, 데이터베이스를 수평적으로 확장해야할 경우
애플리케이션마다 구조와 적합한 데이터베이스가 다르기 때문에, 시스템의 특성을 파악하고 애플리케이션에 적합한 데이터베이스를 선택해서 사용해야한다.

참고