관계형 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 수준의 안전성을 얻기 위해선 속도를 희생해야 함
'Redis' 카테고리의 다른 글
Redis 리더보드 만들기 (0) | 2023.12.11 |
---|---|
서비스 속도를 높이는 캐시 레이어 (0) | 2023.12.11 |
분산 환경에서 세션 스토어 만들기 (2) | 2023.12.11 |
Redis 설치 및 문법 (1) | 2023.12.11 |
Redis 소개와 특징 (0) | 2023.12.11 |