관계형 데이터베이스와 비관계형 데이터베이스

728x90

관계형 데이터베이스(RDBMS)

 

관계형 데이터베이스는 테이블(표) 기반으로 데이터를 구조화하여 저장한다. 데이터를 행(row)열(column)의 형태로 관리하며 데이터 간 관계를 명확히 정의한다. SQL(Structured Query Language)을 사용하여 데이터를 조회, 삽입, 수정, 삭제할 수 있다.

 

관계형 데이터베이스는 데이터 구조가 엄격하게 정의되어 있어 테이블에 저장된 데이터들의 일관성을 유지할 수 있다. 또한 테이블 간의 관계를 정의하여 데이터 중복을 줄이고 데이터 무결성을 유지한다. (RDBMS의 고정된 스키마와 테이블 관계 특징)

 

대표적인 관계형 데이터베이스는 MySQL, Oracle Database, Microsoft SQL Server, PostgreSQL이 있다.

 

관계형 데이터베이스의 주요 특징

 

고신뢰성 (High Reliability)

  • 데이터 무결성(Data Integrity)강력한 일관성(Guaranteed Consistency)을 보장한다.
  • 데이터베이스는 내부적으로 비관적 잠금(Pessimistic Lock)과 같은 빌트인 잠금 메커니즘을 사용하여 데이터의 비일관성(Inconsistency)을 방지한다.
  • 개발자는 데이터 일관성을 유지하기 위한 로직에 신경 쓸 필요가 적다.

 

트랜잭션(Transaction) 지원

  • 데이터 조작의 원자성과 독립성을 보장하여 작업 중 실패 시 롤백(Rollback)을 통해 안전하게 데이터를 복구한다.
  • 예시 :
    1. 패키지 여행 예약 시스템에서 여러 항목(항공권, 기차표, 숙소 예약)이 모두 성공해야 최종 구매가 완료된다.
    2. 중간에 실패 시 전체 작업이 되돌아가는(Rollback) 방식으로 데이터의 무결성을 유지한다.

 

ACID 특성

관계형 데이터베이스는 트랜잭션의 안전한 수행을 위해 ACID 특성을 준수한다.

  1. 원자성(Atomicity)
    • 트랜잭션은 모두 완료되거나 모두 실패한다. (부분 성공 없음)
  2. 일관성(Consistency)
    • 데이터는 조작 후에도 항상 데이터 무결성 제약 조건을 만족한다.
  3. 격리성(Isolation)
    • 트랜잭션은 독립적으로 실행되며 서로 간섭하지 않는다.
    • 격리 수준(Isolation Level): 데이터 읽기 시 발생 가능한 에러(Dirty Read, Non-Repeatable Read, Phantom Read)를 방지하기 위해 단계적으로 정의된다.
      • Read Uncommitted, Read Committed, Repeatable Read, Serializable
  4. 지속성(Durability)
    • 트랜잭션 완료 후에도 데이터는 손실되지 않는다. (로그 및 백업으로 보장)

 

스키마 기반 구조

  • 데이터는 정해진 스키마에 따라 관리되며, 모든 테이블은 사전에 정의된 데이터 구조를 따른다.
  • 2차원 행렬 구조로 데이터를 표현하며 정렬과 탐색 속도가 빠르다.
  • 스키마 변경은 어렵고 이는 유연성이 중요한 애플리케이션에서는 단점으로 작용할 수 있다.

 

비관계형 데이터베이스(Non-Relational Database, NoSQL)

비관계형 데이터베이스는 테이블이 아닌 문서, 키-값, 그래프, 컬럼 패밀리 등의 형태로 데이터를 저장한다. 고정된 스키마가 없으며 데이터 구조를 유연하게 관리할 수 있다. SQL 대신 데이터베이스마다 특화된 쿼리 언어 또는 API를 사용한다.

 

데이터 구조가 동적으로 변경될 수 있어 다양한 형식의 데이터를 쉽게 저장할 수 있고 수평적 확장(샤딩)을 통해 대량의 데이터를 처리할 수 있다. 주로 간단한 조회 및 쓰기 작업에서 높은 성능을 제공한다.

 

유형과 예시

  1. 문서(Document) 기반
    • 데이터를 JSON 또는 BSON 형식으로 저장.
    • 예: MongoDB, CouchDB
  2. 키-값(Key-Value) 기반
    • 간단한 키와 값 쌍으로 데이터 저장.
    • 예: Redis, DynamoDB
  3. 컬럼(Column) 기반
    • 열 단위로 데이터를 저장하여 대규모 데이터 분석에 적합.
    • 예: Cassandra, HBase
  4. 그래프(Graph) 기반
    • 데이터를 노드와 엣지의 형태로 저장하여 관계를 모델링.
    • 예: Neo4j, ArangoDB

 

비관계형 데이터베이스 주요 특징

 

확장성(Scalability)가용성(Availability)

 

  • NoSQL 데이터베이스는 수평적 확장성(horizontal scalability)을 지원하여 노드 추가를 통해 데이터 저장 및 처리 능력을 확장할 수 있다.
  • 가용성(Availability): 분산 시스템 특성상 일부 노드에 장애가 발생하더라도 나머지 노드가 계속 작동 가능하다.

 

 

Eventual Consistency (최종적 일관성)

NoSQL은 데이터의 일관성이 즉각적으로 보장되지 않을 수 있다.

 

  • 데이터는 분산된 여러 노드에 저장되며, 일정 시간이 지나면 최종적으로 일관된 상태가 된다.
  • 이를 "Eventually Consistent(최종적으로 일관됨)" 상태라고 한다.
  • 일관성 처리 책임:
    • 데이터 일관성 문제는 애플리케이션 레벨에서 해결해야 할 수 있다.

 

트랜잭션(Transaction) 미지원

대부분의 NoSQL은 ACID 트랜잭션 대신 BASE 원칙을 따른다.

  • BASE:
    1. Basically Available: 기본적인 가용성 보장한다.
    2. Soft State: 데이터는 일시적으로 불안정할 수 있다.
    3. Eventual Consistency: 최종적으로 일관성이 보장된다.
  • 이유:
    • 분산 환경에서 데이터베이스 노드 간 트랜잭션 잠금을 사용하면 성능 저하확장성 감소가 발생한다.

 

스키마리스(Schema-less)

NoSQL은 고정된 스키마 없이 데이터 저장이 가능하다.

  • JSON, XML 등 비정형 데이터도 저장 가능하다.
  • 스키마 설계 변경이 자유로워 유연한 데이터 모델링을 지원한다.

 

데이터 구조

  • NoSQL은 다양한 데이터 구조를 지원한다.
    • Key-Value: 빠른 읽기/쓰기 (예: Redis)
    • 문서형(Document): JSON 데이터 저장 (예: MongoDB)
    • 열 기반(Column-Family): 대규모 데이터 분석에 적합 (예: Cassandra)
    • 그래프(Graph): 데이터 관계 저장 및 분석 (예: Neo4j)

 

참고문헌

 

https://cloud.google.com/learn/what-is-a-relational-database?hl=ko

 

cloud.google.com

 

RDBMS와 NoSQL의 차이 > 블로그 | WhaTap

개발에 있어 필수인 데이터베이스를 이해하기 위해서는 기본적인 개념부터 알아야 합니다. 오늘은 비개발자도 쉽게 이해할 수 있는 데이터베이스의 개념…,

whatap.io

 

728x90

'DB' 카테고리의 다른 글

[DB] Normalization 정규화 이해하기  (1) 2024.11.20
[DB] 트랜잭션의 격리 레벨 Isolation Level  (2) 2024.11.19