DBMS는 데이터를 효율적으로 저장,관리, 조회하는 프로그램으로 크게 RDBMS와 NoSQL로 나뉘게 됩니다.
RDBMS는 데이터 간의 관계와 효율적인 관리에 중점을 두었고, NoSql은 분산된 대량의 데이터를 저장하고 조회하는데 특화되어 있습니다.
이제 이 두가지 DBMS의 장단점과 용도에 대해 자세히 살펴보도록 하겠습니다.
1. RDBMS
RDBMS(Relational DataBase Management System)는 관계형 데이터 베이스(RDB, Relational DataBase)를 관리하는 시스템입니다. 모든 데이터를 테이블 단위로 저장하며, 각 테이블은 속성과 튜플로 구성됩니다.
관계형 데이터 베이스에서는 현실 세계의 복잡한 사건이나 사물의 특성을 관계(relationship)으로 표현하며,
테이블 간의 관계는 일대일 관계, 일대다 관계, 다대다 관계로 구분됩니다.
- 일대일(1:1) 관계 : 한 튜플이 다른 테이블의 한 튜플과 연결된 관계입니다.
ex) '결혼'은 '남자'와 '여자가' 일대일 관계를 맺고 있는 경우 - 일대다(1:N) 관계 : 한 튜플이 다른 테이블의 여러 튜플과 연결된 관계입니다.
ex) '가족'은 '부모'와 '자식'이 일대다 관계를 맺고 있는 경우 - 다대다(N:M) 관계 : 여러 튜플이 다른 테이블의 여러 튜플과 연결된 관계입니다.
ex) '주문'은 '회원'과 '상품'이 다대다 관계를 맺고 있는 경우
1-1. SQL
RDBMS에서 데이터를 관리하는데 사용하는 언어는 SQL(Structured Query Language) 입니다. 개발자가 SQL을 이용해 RDBMS에 명령을 내리게 되고, RDBMS는 그 명령에 따라 작업을 수행하고 결과를 반환합니다.
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 |
1-3. RDBMS의 종류
잘 알려진 RDBMS는 Oracle(오라클), MySQL(마이에스큐엘), PostgreSQL(포스트그레에스큐엘), MariaDB(마리아디비) 등입니다. 각 RDBMS는 조금씩 차이가 있는만 관계형 데이터 베이스의 기본적인 개념과 SQL을 사용한다는 점은 모두 같습니다.
2. NOSQL
NoSQL(Not only SQL)은 이름 그대로 Sql을 사용하지 않는 DBMS입니다. 인터넷의 발전과 함께 SNS와 같은 서비스가 등장하면서 RDBMS로 관리하기에는 적합하지 않은 데이터가 생겨났습니다. NoSQL은 이처럼 저장 형식이 일정하지 않은 비정형 데이터를 효율적으로 관리하기 위해 개발 됐습니다. 앞서 살펴본 RDBMS는 데이터 자장 유형이 테이블 뿐 이지만 NoSQL은 데이터 저장 유형이 다양하며, 대표적으로 도큐먼트 데이터베이스, 키-값 데이터 베이스, 그래프 데이터 베이스가 있습니다.
2-1. 도큐먼트 데이터 베이스
도큐먼트 데이터베이스(document DB)는 JSON(제이슨) 또는 XML 형식의 도큐먼트로 데이터를 저장합니다.
- JSON : 'JavaScript Object Notation'의 약자로, 네트워크 통신망에서 데이터 저장 및 전송시에 사용하는 데이터 교환 형식입니다. XML보다 용량이 작고 가독성이 좋아 최근에 많이 사용되고 있다고 합니다.
- XML : 'eXtensible Markup Language'의 약자로 HTML처럼 태그 형식으로 데이터를 교환합니다.
JSON 데이터의 예
{
"name" : "Alice",
"age" : 35,,
"city" : "Seoul"
}
XML 데이터의 예
<data>
<name>Alice</name>
<age>35</age>
<city>Seoul</city>
</data>
도큐먼트 데이터베이스를 사용하는 대표적인 프로그램은 MongoDB(몽고디비)입니다.
MongoDB는 데이터를 JSON 도큐먼트 형태로 저장됩니다.
예를 들어, 사용자 정보를 저장하는 경우
{
"_id": ObjectId("60a1f147b896461b148335fd"),
"username": "john_doe",
"email": "john.doe@example.com",
"age": 30,
"address": {
"city": "New York",
"state": "NY",
"country": "USA"
},
"is_active": true,
"created_at": ISODate("2022-05-16T08:30:00Z"),
"friends": [
{"name": "Alice", "age": 28},
{"name": "Bob", "age": 32}
]
}
관계형 데이터베이스와 달리 도큐먼트 데이터베이스에는 행과 열이라는 개념이 없습니다. 도큐먼트 형식만 맞추면 되고, 데이터마다 구성이 같을 필요도 없기 때문에 원하는 형태의 데이터를 자유롭게 저장할 수 있습니다.
2-2. 키 - 값 데이터 베이스
키-값 데이터베이스(key-value DB)는 읽고 쓰는 속도가 매우 빠른 데이터베이스입니다.
키-값 데이터 베이스를 사용하는 대표적인 프로그램은 CassandraDB(카산드라디비)와 DynamoDB(다이나모디비)입니다.
키-값 데이터 베이스에서 데이터는 고유한 식별자인 '키'와 해당 데이터의 '값'으로 구성됩니다. 데이터가 단순하기 때문에 분산 시스템에서 데이터 저장과 접근이 쉽고, 대용량 데이터 처리와 병렬 처리도 용이합니다.
하지만 키-값 데이터 베이스는 관계형 데이터베이스보다 데이터 처리의 유연성이 떨어지기 때문에 데이터간의 관계를 표현하는 것이 불가능 하고, 복잡한 쿼리 작업이 어려울 수 잇습니다. 따라서 키-값 데이터베이스는 간단한 데이터 처리에 적합하며, 데이터 간이 관계가 중요하지 않은 경우에 사용됩니다.
2-3. 그래프 데이터 베이스
그래프 데이터베읏(graph DB)는 4개 이상의 테이블을 이용하는 복잡한 쿼리를 수행할 때 강점을 발휘하는 데이터 베이스입니다. 그래프 데이터베이스를 사용하는 대표적인 프로그램은 Neo4j(네오포제이)입니다.
그래프 데이터베이스는 노드와 간선(edge)으로 이뤄진 그래프 형태의 데이터 모델을 사용합니다. 노드는 엔티티를 나타내고 간선은 노드간의 관계를 나타내는데, 이는 복잡한 데이터 간의 관계를 표현하는데 유용합니다.
ex) 소셜미디어의 친구관계는 다른 데이터 베이스 유형보다 그래프 데이터베이스로 구현하는 것이 좋습니다. 그래프 데이터베이스는 복잡한 데이터간의 연결을 효율적으로 관리하고 , 경로 탐색과 같은 복잡한 쿼리를 지원합니다.
하지만 그래프 데이터베이스는 데이터 모델의 복잡성 때문에 상대적으로 구현이 어려울 수 있습니다.
또한 분산 시스템에서의 확장성이 상대적으로 떨어지므로 대용량 데이터 처리에 제한적 일 수 있습니다.
'코딩자율학습 > 아는 만큼 보이는 백엔드 개발' 카테고리의 다른 글
아는 만큼 보이는 백엔드 로드맵 - 도서 후기 (0) | 2024.03.11 |
---|---|
Chapter08 : 컨테이너 플랫폼, 도커 (0) | 2024.03.10 |
Chapter08 : 가상화와 컨테이너의 개요 (0) | 2024.03.10 |