RDBMS
RDBMS(Relational DataBase Management System)란?
데이터를 테이블의 형태로 정의하고 각 테이블 간의 관계를 정의하여 관리하는 데이터베이스 관리 시스템
RDBMS의 개념
테이블
RDBMS에서 데이터는 표 처럼 행과 열로 이루어진 형태의 테이블로 저장된다.
각 열은 주로 칼럼이라고 부른느데 데이터의 속성을 나타내며, 고유한 이름과 데이터 타입을 가진다.
각 행은 주로 레코드라고 부르는데 하나의 개체에 대한 각 속성 값을 나타낸다.
위 테이블에서 초록색으로 표시한 부분이 칼럼이고 주황색으로 표시한 부분이 레코드이다.
칼럼은 속성 or 필드라고도 하며 레코드는 튜플이라고 부르기도 한다.
관계
RDBMS의 아주 중요한 특징이 테이블 간의 관계를 설정할 수 있다는 것이다. 테이블 간 관계에는 크게 3가지가 있다.
- 1 : 1 관계
- 1 : N 관계
- N : M 관계
각 관계는 PK(Primary Key)와 FK(Foreign Key)를 이용하여 정의한다.
스키마
스키마는 테이블의 설계도를 뜻한다. 스키마에는 주로 테이블의 이름, 각 칼럼의 이름, 데이터 타입, 제약조건, 관계등을 표시한다.
SQL
RDBMS와 상호작용하기 위한 언어이다. SQL의 종류에는 DDL, DML, DCL/TCL이 있다.
- DDL은 데이터베이스의 스키마를 정의할 때 사용하는 언어이다.
- DML은 데이터베이스의 데이터를 조작할때 사용하는 언어이다.
- DCL은 데이터베이스의 접근 권한을 부여하거나 회수하여 데이터의 무결성을 보장하기 위해 사용한다.
- TCL은 DML에 의해서 수행된 변경사항을 하나의 작업 단위로 묶어서 관리하고 변경 사항을 확정하거나 취소하는 데 사용된다.
SQL은 비절차적 언어라는 특징이 있다.
비절차적 언어란?
원하는 결과에 대한 내용만 명세하고 결과를 얻는 내부의 방식에 대한 내용이 없는 언어이다.
SQL은 특정 데이터를 조작하는 것만 명령할 뿐 내부적으로 어떻게 조작하는지에 대한 것은 작성하지 않는다.
RDBMS의 장단점
RDBMS의 아주 큰 장점은 데이터 무결성과 일관성을 보장한다는 것이다.
RDBMS는 트랜잭션을 사용하는데 트랜잭션은 ACID를 통해서 데이터의 신뢰성을 보장한다.
하지만 RDBMS는 하나의 서버에서 동작하는 것을 전제 조건으로 만들어졌기 때문에 수평적 확장이 제한적이다는 단점이 있다.
따라서 대규모 데이터를 처리하려면 수직적 확장만을 할 수 있는데 수직적 확장에도 한계가 있다.
NO SQL
NO SQL(Not Only SQl)이란?
RDBMS와 다르게 관계를 맺지 않는 데이터베이스를 말한다.
등장 배경
NO SQL은 2000년대 후반 대규모 데이터를 저장해야하는 서비스에서 RDBMS의 수평적 확장 한계를 해결하기 위해서 등장했다.
주요 특징
유연한 스키마
NO SQL은 RDBMS와 달리 고정된 스키마가 필요하지 않다. 즉, 데이터를 유연하게 추가, 삭제, 삽입할 수 있다
요구사항이 계속해서 변할 수 있는 상황에서 변경되 요구사항을 빠르게 적용할 수 있다는 장점이 있다.
수평적 확장
NO SQL은 여러대의 노드(서버)로 분산 저장하는 수평적 확장을 적용하기 쉽다. 이를 통해 대용량 데이터를 효율적으로 처리하고 높은 가용성을 제공하는 것이 가능하다.
높은 성능과 가용성
분산 환경에서 설계되었기 때문에 대규모 트래픽과 빠른 응답 속도를 요구하는 실시간 웹 애플리케이션, 빅데이터 분석 등에 적합합니다. 데이터 복제(Replication)를 통해 단일 장애점(Single Point of Failure)을 최소화하고 높은 가용성을 보장합니다.
BASE 속성
대부분의 NO SQL은 RDMBS에서 보장하는 ACID 대신 BASE를 지원한다. BASE는 강력한 일관성 보다 높은 가용성과 파티션 허용성을 우선시하여 분산 시스템의 장점을 극대화한다.
- Basically Available (기본 가용성): 시스템은 항상 사용 가용해야한다.
- Soft state (유동적 상태): 데이터의 상태는 시간이 지나면서 변할 수 있다.
- Eventual consistency (최종 일관성): 데이터가 모든 노드에 즉시 일관될 필요는 없지만, 일정 시간이 지나면 결국 일관된 상태가 되어야 한다.
🧐 CAP 이론
일관성(Consistency), 가용성(Availability), 파티션 허용성(Partition Tolerance) 의 3가지 속성을 한번에 만족하는 것은 불가능 하다라는 이론이다.
- 일관성(Consistency)
- 모든 클라이언트(사용자)가 어떤 노드에 접근하더라도 항상 가장 최신 데이터를 보거나 오류 메시지를 받아야 한다.
- 즉, 데이터가 변경되면 모든 복제본에 즉시 반영되어야 하며, 모든 노드가 동일한 데이터를 보장해야 한다.. 이는 RDBMS의 ACID 속성 중 '일관성(Consistency)'과 유사하지만, 분산 시스템의 맥락에서 더 엄격한 의미를 가진다.
- 가용성(Availability)
- 시스템의 어떤 노드에 대한 요청이든 항상 성공적인 응답을 받아야 한다.
- 즉, 일부 노드에 장애가 발생하더라도 시스템은 멈추지 않고 계속 작동하며, 모든 클라이언트 요청에 대해 오류 없이 응답을 돌려줘야 합니다. 응답은 최신 데이터가 아닐 수도 있다.
- 파티션 허용성(Partition Tolerance)
- 시스템이 네트워크 분할(Partition) 상황에서도 계속 작동해야 한다.
- 네트워크 분할은 분산 시스템의 노드들 간의 통신이 중단되거나 지연되어, 시스템이 여러 개의 독립적인 서브셋으로 나뉘는 상황을 의미합니다. 분산 시스템에서는 이러한 네트워크 장애가 불가피하게 발생할 수 있으므로, P는 거의 필수적으로 고려해야 할 속성이다.
CP 시스템
- 일관성을 보장하기 위해 가용성 포기
- 노드 간 통신이 단절되면, 최신 데이터 일관성을 보장하기 위해 해당 노드들은 더 이상 요청에 응답하지 않거나 쓰기 작업을 거부
즉, 데이터의 일관성을 잃는 것보다는 시스템을 일시적으로 사용 불가능하게 만들어서라도 데이터의 정확성을 지키는 데 중점을 둠 - RDBMS(일반적으로 단일 노드에서는 CA를 지향하나, 분산 환경에서는 CP 경향), MongoDB(강한 일관성 설정 시)
AP 시스템
- 네트워크 분할 상황에서도 가용성을 유지하기 위해 일관성을 포기합니다.
- 노드 간 통신이 단절되어도 각 노드는 계속해서 요청에 응답합니다. 이 경우, 응답되는 데이터가 최신 데이터가 아닐 수 있습니다(즉, 데이터가 일관되지 않을 수 있습니다). 하지만 시스템은 사용자에게 계속 서비스를 제공합니다.
- Cassandra, DynamoDB, CouchDB, Redis (클러스터 모드)
CA 시스템
- 파티션 허용성을 포기하고 일관성과 가용성을 동시에 보장합니다.
- 이는 네트워크 분할이 절대 발생하지 않는다는 가정 하에서만 가능. 하지만 실제 분산 시스템에서는 네트워크 장애가 필연적으로 발생하므로, 이론적으로만 존재하거나 매우 제한적인 환경(예: 단일 데이터센터 내의 완벽한 네트워크 환경)에서만 달성 가능. 분산시스템에서 적용하기 어려움
추가적으로 PACLEC라는 이론도 있다. CAP 이론이 분산 시스템의 '장애 시점'에 초점을 둔 이론이라면 PACLEC 이론은 분산 시스템이 정상적으로 동작하는 상황에서의 이론이다. PACLEC에서는 네트워크 파티션이 없는 평상시에도 지연 시간과 일관성 사이의 트레이드오프가 존재하며, 이는 시스템 설계에 큰 영향을 미친다는 점을 강조한다.
NO SQL의 유형
Key - Value 유형
- 데이터를 키와 값의 형태로 저장하는 유형
- 매우 빠르고 높은 확장성
- Redis, Amazon DynamoDB, Memcached
Document 유형
- 데이터를 문서 형태로 저장하는 유형
- 각 문서는 독립적이며 json, xml 등의 형식으로 데이터 구조화
- RDBMS의 행과 유사하지만 훨씬 유연한 구조
- 문서 간의 복잡한 관계(조인) 처리가 RDBMS보다 어려움
- MongoDB, Couchbase, Firebase Firestore
Wide - Column 유형
- 데이터를 열 패밀리라는 개념으로 구성하고, 각 열 패밀리는 가변적인 열을 가질 수 있음.
- RDBMS의 테이블과 비슷해 보이지만, 행마다 열의 구성이 다를 수 있어 유연함
- 대규모 분산 환경에서 매우 높은 쓰기/읽기 성능을 제공하며, 시계열 데이터나 로그 데이터 처리에 강함
- 복잡한 쿼리가 어렵고, 트랜잭션 지원이 제한적일 수 있음
- Apache Cassandra, HBase, Google Bigtable
Graph 유형
- 데이터와 데이터 간의 관계를 표현하는데 최적화된 유형.
- 데이터는 노드로 데이터 간의 관계는 엣지로 표현됨
- 복잡하게 연결된 데이터를 효율적으로 탐색하고 분석하는 데 매우 강력합니다.
- Neo4j, Amazon Neptune
'Study' 카테고리의 다른 글
네트워크 (2) | 2025.06.24 |
---|---|
데이터베이스 성능 최적화 (0) | 2025.06.20 |
해시 테이블 & 트리 (0) | 2025.06.03 |
컴퓨터 구조 (0) | 2025.05.20 |