본문 바로가기
Redis

RDBMS & NoSQL & Redis

by 이상한나라의개발자 2023. 12. 11.

관계형 DB의 이해

 

관계형 DB ( RDB, Relational Database ) 는 데이터를 테이블 형태로 저장하고 관리하는 데이터베이스 시스템 입니다.

이 테이블은 서로 관계르 맺고 있어, 여러 테이블 간의 연결을 통해 복잡한 질의와 연산을 수행할 수 있습니다.

 

  • 관계 ( Relation ) : 속성 ( Attribute ) 들로 이루어진 집합, DB에서 테이블로 부르는 것.
  • 속성 ( Attritute ) : DB에서 컬럼을 나타냅
  • 튜플 ( Tuple ) : DB에서 레코드( record ) 또는 로우( row ) 로 표현 , 가로방향을 튜플 레코드, 세로 방향을 row

 

사번 ( ID ) 이름 ( username )
1 Anthony
2 Henry

 

SELECT *
  FROM EMPLOYEE
  WHERE ID = 1

 

관계형 DB 는 안정적이고 여전히 가장 일반적으로 사용되는 DB 모델 입니다.

 

관계형 DB의 장점

  • 데이터 무결성 유지에 용이함 ( 정규화를 통해 중복을 제거 )
  • SQL을 통해 복잡한 질의를 수행 가능

관계형 DB의 단점

  • 고정된 스키마를 정의해야 함
  • Join으로 인한 성능 문제 
  • 데이터들이 복잡한 관계를 맺고 있기 때문에 수평적 확장성이 떨어짐 ( 스케일 아웃에 어려움 )

 

NoSQL 이란?

 

전통적인 RDBMS와 달리 테이블 간의 고정된 관계나 고정된 스키마 없이 데이터를 저장하고 관리하는 데이터베이스 시스템을 지칭합니다.

NoSQL 데이터베이스는 대량의 분산 데이터 처리, 수평적 확장, 빠른 읽기/쓰기 작업 등에 적합하게 설계되어 있다.

 

  • Not Only SQL 또는 No SQL 
  • 관계형 DB에서 사용하는 SQL을 사용하지 않는다는 의미
  • 비 관계형 데이터베이스를 지칭할 때 사용
  • 대부분의 NoSQL 데이터베이스는 고정된 스키마 없이 데이터를 저장
  • NoSQL 데이터베이스는 대체로클러스터링, 분산 저장, 복제 등의 기능을 활용해 대량의 데이터와 트래픽 처리에 특화 되어 있음
  • 다양한 데이터 모델을 지원
    • 문서기반 : MongoDB, CouchDB
    • 키-값 저장소 : Redis. Riak, DynamoDB, Memcached
    • 컬럼 기반 : Cassandra, HBase, Google BigTable
    • 그래프 기반 : Neo4j, OrientDB, AgensGraph
  • 특히 읽기와 쓰기 작업에 있어 높은 성능을 나타낼 수 있으며, 이는 NoSQL 데이터베이스가 수평적 확장과 분산 환경에 최적화 되어 있기 때문이다.

NoSQL 데이터베이스는 대용량의 데이터를 처리하거나, 빠른 읽기/쓰기 작업이 필요한 경우, 그리고 유연한 스키마가 필요한 어플리케이션에 특히 유용합니다. 이를 통해 관계형 데이터베이스와 NoSQL 데이터베이스 중 어느것이 적합한지 고려 해야 합니다.

 

 

NoSQL로서의 Redis

 

Redis는 기술적으로 데이터베이스 관리 시스템(DBMS)의 정의에는 부합하지 않습니다. 그러나 Redis는 사람들 사이에서 데이터베이스로 널리 알려져 있으며, 실제로 많은 시스템 및 어플리케이션에서 데이터 저장 및 관리 용도로 사용합니다.

 

  • 데이터를 다루는 인터페이스를 제공하므로 DBMS의 성격이 있다고 볼 수 있음
  • 기본적으로 영속성을 위한 DB는 아님
  • 영속성을 지원 (백업)
  • DBMS 보다는 빠른 캐시의 성격으로 대표됨
  • 영속성이란?
    • 영속성은 데이터 관리 측면에서 데이터의 지속성을 의미합니다. 특히, 프로그램이 종료되거나 시스템이 다운될 경우에도 데이터가 지속적으로 저장되어 유지되는 특성을 가르킵니다.
    • DBMS : 데이터베이스는 주로 데이터가 비휘발성 저장 매체( 디스크 )에 저장 되기 때문에 영속성을 달성 합니다, 또한 데이터의 영속성을 보장하기 위해 특정한 메커니즘 ( 백업 및 복구 기능 ) 을 제공합니다.
    • Redis : 주로 메모리에 저장하지만, 필요에 따라 데이터를 디스크에 기록하여 영속성을 제공할 수 있습니다. ( 백업 )
  • 기본적으로 NoSQL DB로 분류되는 key-value 로 저장 된다.
  • 다양한 자료구조를 지원 한다 ( String, Hash, Set, List )
  • External Heap(외부 메모리) 로서의 Redis -> Ram에 저장한다고 보면 된다.
    • Application이 장애가 나도 Redis의 데이터는 보존 (단기)
    • Application이 여러 머신에서 돌아도 같은 데이터를 접근 가능

 

 

  • DBMS 로서의 Redis
    • Redis의 영속화 수단을 이용해 DBMS처럼 이용
    • 일반 RDB 수준의 안전성을 얻기 위해선 속도를 희생해야 함

 

DBMS로서의 Redis

 

'Redis' 카테고리의 다른 글

Redis 리더보드 만들기  (0) 2023.12.11
서비스 속도를 높이는 캐시 레이어  (0) 2023.12.11
분산 환경에서 세션 스토어 만들기  (2) 2023.12.11
Redis 설치 및 문법  (1) 2023.12.11
Redis 소개와 특징  (0) 2023.12.11