공부/DB

RDBMS vs NoSQL

son_i 2024. 7. 8. 19:16
728x90

데이터 베이스 종류

- RDB (관계형 데이터베이스)

테이블을 사용하여 데이터를 구성한다.

각 테이블은 관계를 가질 수 있으며, SQL을 사용하여 데이터를 관리한다.

 

- NOSQL (Not only SQL)

전통적인 RDB의 제한을 극복하기 위해 개발된 데이터베이스.

NoSQL DB는 유연성, 확장성, 빠른 쓰기 작업 등을 목적으로 설계 되었다.

예를 들어 MongoDB는 문서 기반 DB로서, 테이블이 아니라 JSON 형식의 문서를 저장한다. 


DBMS(DataBase Managemet System)

  • 데이터를 계층 또는 탐색 형식으로 저장.
    • 파일 시스템을 사용해 저장하며, 테이블 간 아무 관계가 없다.
  • 데이터에 많은 보안을 제공하지 않으며 정규화를 수행할 수 없어 데이터는 높은 중복성을 가질 수있다.
  • 종류 : Sybase, dbase, Microsoft Access

 

RDB(Relational DataBase)

  • 관계형 데이터 모델에 기초를 둔 데이터베이스.
  • 모든 데이터를 2차원 테이블 형태로 표현

* 관계형 모델 ?) 실제 세계의 데이터를 '관계'라는 개념을 사용해 표현한 데이터 모델.

  제일 중요한 개념은 관계

RDBMS(Relational DataBase Managemet System)

  • RDB를 생성, 수정, 관리할 수 있는 SW
  • RDBMS의 테이블은 서로 연관되어 있어 일반 DBMS보다 효율적으로 데이터를 저장하고 구성하고 관리할 수 있다.
  • 정규화를 통해 데이터의 중복성을 최소화하여 트랜잭션을 수행하는 것이 더 쉽다.
  • 데이터의 원자성, 일관성, 격리 및 내구성을 유지하여 데이터 무결성을 높인다.
  • SQL 을 사용하여 데이터를 관리
  • 테이블 간 Join이 가능하다.
  • 종류 : MSSQL, MySQL, Oracle

-> 데이터를 2차원 테이블 형태로 표현한다.

row(record, tuple) - 실질 데이터. 행의 갯수 == 데이터의 갯수

column(field, item) - 데이터 필드. 속성

 

NOSQL (Not only SQL)

  • 기존 RDBMS 같은 관계형 데이터 모델을 지양하며 대량의 분산된 비정형 데이터를 저장하고 조회하는데 특화.
  • 스키마 없이 사용하거나 느슨한 스키마 제공.
  • 주로 빅데이터, 분산 시스템 환경에서 대용량의 데이터를 처리하는데 적합하다. 
  • 데이터 간의 관계를 정의하지 않는다.
  • RDBMS에 비해 대용량의 데이터를 저장할 수 있다.
  • 분산형 구조로 설계 되어 있다.
    • 여러 곳의 서버에 데이터를 분산저장하여 특정 서버에 장애 발생 시에도 데이터 유실/서비스 중지가 발생하재ㅣ 않도록 한다.
  • 고정되어 있지 않은 테이블 스키마를 갖는다.
  • 종류
    • Key-Value DB : Redis, Orable NoSql DB, VoldeMorte
    • Wide-Column DB : Hbase, Cassandra, GoogleBigtable, Vertica
    • Document DB : MongoDB, CouchDB, Riak, Azure Cosmos DB
    • Graph DB : Sones, AllegroGraph, neo4j, BlazeGraph, OrientDB

 

RDBMS VS NoSQL

 

RDBMS는 Consistency와 Availability에 중점.

NoSQL은 Scalability와 Availability에 중점.

 

RDBSMS는 데이터 간의관계를 Foreign Key로 정의하고 Join 연산을 수행할 수 있지만

NoSQL은 Key-Value 형태로 저장되기 때문에 Join연산이 불가

 

RDBMS 고정된 스키마.

NoSQL은 테이블(컬렉션)의 스키마가 유동적이고 데이터를 저장하는컬럼이 각기 다른 이름과 다른 데이터 타입을 갖는 것이 허용된다. 

 

어떤 DB를 쓰는 것이 좋을까 ?

RDBMS는 데이터 구조가 명확하며 변경 될 여지가 없으며 명확한 스키마가 중요한 경우 사용하는 것이 좋다.

또한 중복된 데이터가 없어(데이터 무결성) 변경이 용이하기 때문에 관게를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합

 

NoSQL은 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장이 될 수 있는 경우에 사용하는 것이 좋다.

 데이터 중복이 발생할 수 있으며중복된 데이터가 변경될 시에는 모든 컬렉션에서 수정해야한다.

이러한 특징들을 기반으로 Update가 많이 이루어지지 않는 시스템이 좋으며

  Scale-out이 가능하다는 장점을 이용해 방대한 데이터를 저장하는 DB를 Scale-out하는 시스템에 적합.

 

1. 서비스의 데이터 구조 / 관계를 명확하게 파악하기

2. 서비스 주요 기능에 대해 정리하고 기능을 구조상으로 지원하는 DB 선택.

3. 운영 관점에서도 기술적으로 사전에 체크

728x90