개념: 데이터베이스 관리 시스템(DBMS)은 데이터베이스를 생성, 관리, 조작할 수 있도록 하는 소프트웨어입니다.
주요 기능: 데이터를 저장, 검색, 수정, 삭제하고 데이터 무결성과 보안을 유지합니다.
예시: MySQL, PostgreSQL, Oracle, MongoDB, SQLite 등.
특징:
데이터의 효율적인 관리와 데이터 무결성을 유지하며, 동시성 제어와 백업 기능을 제공합니다.
데이터 중복을 줄이고, 데이터의 일관성을 보장하여 애플리케이션 성능을 최적화합니다.
- 개념: 관계형 데이터베이스 관리 시스템(RDBMS)은 관계형 모델을 기반으로 데이터 간의 관계를 테이블 형태로 관리하는 DBMS입니다.
테이블 구조: 데이터를 행(Row)과 열(Column)로 구성된 테이블에 저장합니다.
SQL 사용: 데이터를 정의, 조회, 조작하는 데 SQL(Structured Query Language)을 사용합니다.
관계 설정: 테이블 간의 관계를 설정하여 중복 데이터를 줄이고 데이터 일관성을 높입니다.
ACID 지원: 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)이라는 트랜잭션 특성을 보장하여 데이터 무결성을 유지합니다.
- 개념: SQL은 관계형 데이터베이스에서 데이터를 정의, 관리, 조작하기 위한 표준 언어입니다.
추후 구체적인 내용은 다른 포스트에서 확인가능
직관적이고 강력한 쿼리: SQL은 데이터 검색, 집계, 필터링을 직관적이고 간단하게 표현할 수 있습니다.
표준화된 언어: 대부분의 RDBMS가 SQL을 지원하며, SQL 표준을 따릅니다.
- 개념: NoSQL은 비관계형 데이터베이스로, 관계형 모델을 사용하지 않고, 데이터를 다양한 구조로 관리하는 DBMS입니다.
유연한 데이터 모델: 테이블, 행, 열 구조가 아닌 유연한 데이터 모델을 지원합니다. 문서(Document), 키-값(Key-Value), 열(Column), 그
래프(Graph) 등 여러 데이터 모델을 사용할 수 있습니다.
스키마리스(Schema-less): 사전에 정의된 스키마가 없어 데이터를 유연하게 추가 및 수정할 수 있습니다.
수평적 확장: 분산 아키텍처를 통해 수평적으로 확장할 수 있어, 대량의 데이터를 처리하는 데 용이합니다.
ACID 대신 CAP 이론: 일부 NoSQL 데이터베이스는 데이터 일관성 대신 가용성이나 파티션 허용성을 중시하며, CAP 이론(일관성, 가용성, 파티션 허용성)을 따릅니다.
Consistency (일관성), Availability (가용성), Partition Tolerance (파티션 허용성) 중 3가지 모두 동시에 만족 불가, 2가지만 선택 가능
| 시스템 | 선택된 속성 | 비고 |
|---|---|---|
| RDBMS (일반적) | C + A | 분산 시스템이 아니므로 Partition Tolerance 미지원 |
| MongoDB | C + P | 일관성과 파티션 허용성에 초점 |
| Cassandra | A + P | 높은 가용성과 확장성 중심, 일관성은 약하게 유지 |
| 용어 | 설명 | 예시 |
|---|---|---|
| DBMS | 데이터베이스를 관리하는 소프트웨어로, 데이터의 저장, 관리, 무결성 유지 | MySQL, MongoDB, Oracle |
| RDBMS | 관계형 모델을 기반으로 테이블 형태로 데이터를 관리하는 DBMS | MySQL, PostgreSQL, SQL Server |
| SQL | RDBMS에서 데이터를 정의하고 조작하기 위한 표준 언어 | SELECT, INSERT, UPDATE |
| NoSQL | 비관계형 데이터베이스로, 다양한 데이터 모델과 유연한 스키마를 제공 | MongoDB, Redis, Cassandra |
| 상황 | 사용 추천 | 이유 및 도구 |
|---|---|---|
| 은행 시스템 | RDBMS | 계좌 이체, 거래 기록 등 ACID 보장 필수 → Oracle, PostgreSQL |
| 전자상거래 | RDBMS | 주문-결제-재고 간 데이터 정합성 중요 → MySQL, SQL Server |
| 정형화된 데이터 + 복잡한 JOIN | RDBMS | 관계형 데이터 모델에 적합 |
| SNS 타임라인 | NoSQL | 빠른 읽기/쓰기 + 스키마 유연성 → MongoDB |
| 실시간 채팅 | NoSQL | 빠른 응답 속도, 메모리 기반 저장 → Redis |
| 로그 수집/분석 | NoSQL | 대용량 데이터 처리, 수평 확장 → Cassandra |
| 추천 시스템 | NoSQL | 사용자-상품 관계 분석 필요 → Neo4j |
RDBMS와 NoSQL 비교가 개념적으로만 되어 있고,
실제 언제 뭘 써야 하는지 구체적인 사례가 없음.
RDBMS 사용
NoSQL 사용
이런 식으로 구체적인 상황별 선택 기준 제시해야
어떤 프로젝트에 뭘 써야 하는지 판단 가능함.
CAP 이론도 언급만 하고 설명 없음.
Consistency, Availability, Partition Tolerance 중 2개만 선택 가능하다는 것,
RDBMS는 CA, MongoDB는 CP, Cassandra는 AP 선택한다는 식