냥냠
[SQL] 데이터베이스 기초, RDBMS vs NoSQL 본문
백엔드에서 바라보는 데이터베이스 개론
https://youtu.be/aL0XXc1yGPs?feature=shared
DB : 전자적으로 저장하고 사용되는 관련있는 데이터들의 조직화된 집합
DBMS : 사용자에게 DB를 정의하고 만들고 관리하는 기능을 제공하는 소프트웨어 시스템
-> MySQL, 오라클 등등
DB system : 데이터베이스 + DBMS + 연관된 applications
*메타 데이터 : 데이터를 설명하기 위한 데이터 / 데이터베이스를 정의하거나 기술하는 데이터
data models
: DB의 구조를 기술하는데 사용될 수 있는 개념들이 모인 집합 / 추상화해서 표현할 수 있는 수단 제공
- conceptual data models : 추상화 수준이 가장 높고 일반인들도 이해하기 쉬움
- logical data models : 이해하기 어렵지 않으며 디테일하게 DB 구조화 가능
--> relational data model, object data model, object-relational data model
(mysql, 오라클 등 유명한 데이터베이스가 relational data model를 기반으로 한다)
- physical data models : 실제 데이터베이스와 근접한 형태로 저장, 데이터 검색을 빠르게 함(인덱스)
three-schema architecture
internal schema / conceptual schema / external schema
데이터베이스 언어
DDL (data definition language) - conceptual schema 정의
-> create, drop, alter
SDL (storage definition language)- internal schema 정의
VDL (view definition language) - external schema 정의
DML (data manipulation language) - 데이터 조작 언어
-> select, insert, delete, update
DCL (data control language) - 데이터 제어 언어
-> commit, rollback, grant, revoke
통합된 언어로 존재하며 대표적인 예가 SQL 이다.
RDBMS vs NoSQL
RDBMS : 관계형 데이터베이스 관리 시스템
- 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스 관리 시스템
- 외래 키를 사용하여 테이블 간 조인을 할 수 있다.
-칼럼과 로우의 형태로 저장하며 데이터의 분류, 정렬, 탐색 속도가 비교적 빠르다.
- MySQL, SQLite, PostgreSQL, Oracle 등
NoSQL : not only sql
- 테이블 간의 관계를 정의하지 않음 (조인 불가)
- 데이터와 트래픽이 기하급수적으로 증가함에 따라 RDBMS의 성능문제로 등장함.
- 유연성, 확장성, 고성능, 가용성
- MongoDB
- 다양한 형태의 저장 기술 (document, graph, key-value, wide-column)
1. RDBMS 장단점
- 장점
: 정해진 스키마에 따라 데이터를 저장하기 때문에 명확한 데이터 구조를 보장함
: 데이터의 중복없이 관계를 저장함
- 단점
: 테이블 간 관계를 맺고 있어 시스템이 커질 경우 조인 문이 복잡한 쿼리를 만든다.
: 성능향상을 위해서는 서버의 성능을 향상시켜야만 한다. 비용 증가
: 스키마때문에 데이터가 유연하지 못하여 스키마 변경될 경우 번거롭다.
2. NoSQL 장단점
- 장점
: 스키마가 없기 때문에 데이터 구조가 유연하여 언제든 데이터를 조정하고 추가할 수 있다.
: 데이터 분산이 용이하며 성능향상을 위해서 Scale-up, Scale-out (수평확장)가능하다.
- 단점
: 데이터의 중복이 발생할 수 있어 중복된 데이터 변경 시 번거롭다.
: 스키마가 없기 때문에 데이터 구조를 보장하지 않아 데이터 구조 결정이 어렵다.
'SQL' 카테고리의 다른 글
리텐션 (Retention) (0) | 2025.04.11 |
---|---|
RFM 고객 세분화 분석 (0) | 2025.03.13 |
[SQL] MySQL 기초 - (1) (5) | 2024.07.22 |