DBMS는 데이터를 효율적으로 저장, 관리, 조회하는 프로그램으로, 크게 2가지로 나눈다.
- 데이터 간의 관계와 효율적인 관리에 중점을 둔 RDBMS
- 분산된 대량의 데이터를 저장하고 조회하는데 특화된 NoSQL
1. RDBMS (Relational Database Management System)
RDBMS는 관계형 데이터베이스 (RDB : Relational DataBase)를 관리하는 시스템이다.
관계형 데이터베이스는 모든 데이터를 테이블 단위로 저장하며, 각 테이블은 속성과 튜플로 구성된다.
관계형 데이터베이스에서는 현실 세계의 복잡한 사건이나 사물의 특성을 관계(Relationship)로 표현하며, 테이블 간의 관계는 일대일, 일대다, 다대다 관계로 구분된다.
- 일대일(1:1) 관계 : 한 튜플이 다른 테이블의 한 튜플과 연결된 관계
- 일대다(1:N) 관계 : 한 튜플이 다른 테이블의 여러 튜플과 연결된 관계
- 다대다(N:M) 관계 : 여러 튜플이 다른 테이블의 여러 튜플과 연결된 관계
(1) SQL
RDBMS에서 데이터를 관리하는 데 사용하는 언어는 SQL (Structured Query Language) 이다.
SQL의 문법은 크게 세 가지로 나뉜다.
데이터 정의어인 DDL(Data Definition Language), 데이터 조작어인 DML(Data Manipulation Language), 데이터 제어어인 DCL(Data Control Language)가 있다.
유형 | 설명 | 종류 |
DDL | 테이블이나 관계의 구조를 생성하고 관리하기 위해 사용 | CREATE, DROP, ALTER, TRUNCATE |
DML | 테이블의 데이터를 생성, 조회, 수정, 삭제하기 위해 사용 | SELECT, INSERT, UPDATE, DELETE |
DCL | 데이터의 사용 권한을 관리하기 위해 사용 | GRANT, REVOKE |
(2) RDBMS의 종류
잘 알려진 RDBMS는 Oracle, MySQL, PostgreSQL, MariaDB 등이 있다.
2. NoSQL (Not only SQL)
NoSQL은 이름 그대로 SQL을 사용하지 않는 DBMS이다.
인터넷이 발전하면서 RDBMS로 관리하기에는 적합하지 않은 데이터가 생겨났다. NoSQL은 이처럼 저장 형식이 일정하지 않은 비정형 데이터를 효율적으로 관리하기 위해 개발되었다.
RDBMS는 데이터 저장 유형이 테이블뿐이지만, 이와 달리 NoSQL은 데이터 저장 유형이 다양하다.
특징
- 실시간 응답
- 확장성
- 서비스의 업그레이드로 인한 계획적인 확장뿐만 아니라 새해 첫날의 트래픽, 세일 기간의 이벤트 등 예상치 못한 이벤트로 인한 트랜잭션의 증가에 유연하게 확장될 수 있다.
- 고가용성
- 대부분의 애플리케이션에서 데이터 저장소는 굉장히 중요하다. 데이터 저장소를 사용할 수 없는 상황은 곧 서비스의 장애로 이어진다. 따라서 데이터 저장소는 장애 상황에서 신속하게 복구돼 항상 사용할 수 있는 상태를 유지해야 한다.
- 클라우드 네이티브
- 클라우드 제공 업체에서 제공하는 DBaas(DataBase-as-a-service)를 사용하면 직접 설치, 운영할 필요 없이, 설치된 상품을 바로 사용할 수 있게 된다. 운영을 위한 모니터링과 알람 또한 제공되기 대문에 데이터베이스를 사용하기 위해 드는 번거로움은 간소화됐다.
- 단순성
- 유연성
- 관계형 데이터베이스보다 다양한 방식으로 비정형 데이터를 저장할 수 있는 방법을 제공한다.
(1) 데이터 저장 유형
도큐먼트 데이터베이스
도큐먼트 데이터베이스(Document DB)는 Json 또는 XML 형식의 도큐먼트로 데이터를 저장한다.
- JSON : 'JavaScript Object Notation'의 약자로, 네트워크 통신망에서 데이터 저장 및 전송시에 사용하는 데이터 교환 형식이다.
- XML : 'eXtensible Markup Language'의 약자로, HTML처럼 태그 형식으로 데이터를 교환한다.
도큐먼트 데이터베이스를 사용하는 대표적인 프로그램은 MongoDB 이다.
MongoDB는 데이터를 JSON 도큐먼트 형태로 저장한다.
키-값 데이터베이스
키-값 데이터베이스(key-value DB)는 읽고 쓰는 속도가 매우 빠른 데이터베이스이다.
대표적인 프로그램은 Redis, CassandraDB와 AWS의 DynamoDB가 있다.
키-값 데이터베이스에서 데이터는 고유한 식별자인 '키'와 해당 데이터의 '값'으로 구성된다. 키-값 유형에서 키는 관계형 데이터베이스의 PK라고도 생각할 수 있다. 데이터를 정의하는 역할을 하기 때문이다. 모든 값은 키에 연결되어 있으며, 키 자체도 유의미한 데이터다. 키를 사용해 값을 검색할 수 있으며, 키를 삭제하면 값도 삭제된다. 데이터가 단순하기 때문에 분산 시스템에서 데이터 저장과 접근이 쉽고, 대용량 데이터 처리와 병렬 처리도 용이하다.
하지만 키-값 데이터베이스는 관계형 데이터베이스보다 데이터 처리의 유연성이 떨어지기 때문에 데이터 간의 관계를 표현하는 것이 불가능하고, 복잡한 쿼리 작업이 어려울 수 있다. 따라서 키-값 데이터 베이스는 간단한 데이터 처리에 적합하며, 데이터 간의 관계가 중요하지 않은 경우에 사용된다.
그래프 데이터베이스
그래프 데이터베이스(graph DB)는 4개 이상의 테이블을 이용하는 복잡한 쿼리를 수행할 때 강점을 발휘하는 데이터 베이스이다. 대표적인 프로그램에는 Neo4j 가 있다.
그래프 데이터베이스는 노드와 간선(edge)로 이루어진 그래프 형태의 데이터 모델을 사용한다.
노드는 엔티티를 나타내고 간선은 노드 간의 관계를 나타내는데, 이는 복잡한 데이터 간의 관계를 표현하는 데 유용하다.
그래프 데이터베이스는 복잡한 데이터 간의 연결을 효율적으로 관리하고, 경로 탐색과 같은 복잡한 쿼리를 지원한다.
하지만 그래프 데이터베이스는 데이터 모델의 복잡성 때문에 상대적으로 구현이 어려울 수 잇다. 또한 분산 시스템에서의 확장성이 상대적으로 떨어지므로 대용량 데이터 처리에 제한적일 수 있다.
'Knowledge > 이론' 카테고리의 다른 글
클라우드 컴퓨팅 (0) | 2024.06.12 |
---|---|
API (0) | 2024.06.12 |
callback VS fallback (0) | 2024.05.02 |
쓰레드 풀 (Thread Pool) (0) | 2024.03.23 |
동기 / 비동기 (0) | 2024.03.23 |