데이터베이스의 역사를 잠깐 되짚어 보자. 처음에는 단순 파일 시스템으로 데이터를 저장했고, 파일 시스템의 문제를 해결하기 위해 이어서 계층형과 네트워크형 DBMS가 나타났다. 이후 오늘날 가장 널리 쓰이는 관계형 DBMS(RDBMS)가 자리 잡았으며, 최근에는 빅데이터 처리나 특수 요구 사항에 대응하기 위해 NoSQL DBMS가 빠르게 발전하고 있다.
참고로 계층형과 네트워크형 DBMS는 시장에서 사장된 지 오래 되었고, 더는 사용되지 않는다. 이 모든 변화의 핵심 질문은 항상 같다. "데이터를 어떻게 하면 더 효과적이고 더 안전하게 관리할 수 있을까?"
관계형 데이터베이스 시스템
RDBMS는 줄여서 보통 RDB라고 부른다. 워낙 많이 사용되기 때문에 통상적으로 DB라고 하면 바로 이 RDBMS를 뜻하기도 한다. 이것이 바로 우리가 집중적으로 배울 대상이다. RDBMS는 데이터를 테이블(Table)이라는 정형화된 구조에 저장한다. 테이블은 행(Row, 레코드라고도 함)과 열(Column, 필드 또는 속성이라고도 함)로 구성되며, 마치 엑셀 시트와 비슷한 모습을 떠올리면 된다. 그리고 이 테이블들 간의 관계를 통해 데이터를 연결하고 관리한다


고객과 주문 두 테이블은customer_id를통해 관계를 맺고 있다. 즉, 주문 테이블의 customer_id 를 보면 어떤 고객이 해당 주문을 했는지 고객 테이블의 customer_id 를 통해 찾아낼 수 있다.
대표적인 RDBMS 종류
- MySQL(우리가 배울 것!)
- MariaDB(MySQL에서 파생)
- Oracle
- Microsoft SQL Server
- PostgreSQL
왜 RDBMS가 기본인가?
- 정형화된 데이터 관리: 데이터 구조가 명확하고, 데이터 타입과 제약조건을 통해 데이터의 무결성을 강력하게 보장한다. 우리 쇼핑몰의 고객 정보, 상품 정보, 주문 내역처럼 구조가 명확하고 일관성이 매우 중요한 데이터에 적합하다.
- ACID 트랜잭션 보장: 위에서 언급한 트랜잭션의 ACID (원자성, 일관성, 고립성, 지속성) 특성을 잘 지원하여 데이터 처리의 신뢰성이 매우 높다. 돈과 관련된 금융 거래나 쇼핑몰의 주문/결제 처리에 필수적이다.
- SQL이라는 표준 질의어: SQL(Structured Query Language)이라는 강력하고 표준화된 언어를 사용하여 복잡한 데이터 조회나 조작을 쉽게 할 수 있다.
- 성숙한 기술과 풍부한 생태계: 수십 년간 발전해 온 기술로 매우 안정적이고, 관련 문서, 커뮤니티, 도구들이 풍부하여 문제 해결이나 학습이 용이하다.
- 실무에서의 압도적인 사용 빈도: 백엔드 개발자가 된다면, 실무에서 거의 대부분은 RDBMS를 기본으로 사용하게 될 것이다. 다른 종류의 DB는 특정 필요에 따라 옵션으로 사용된다. RDBMS 없이 프로젝트를 진행하는 경우는(아주 특별한 경우가 아니라면) 거의 없다고 봐도 무방하다.
그럼 NoSQL과 같은 다른 DB는 언제 배우면 좋을까? 먼저 RDBMS를 제대로 마스터하고 나서 필요할 때 배우면 된다. 참고로, 데이터를 관리하는 대부분의 문제는 RDBMS로 충분히 해결할 수 있다.
NoSQL 데이터베이스 관리 시스템(Not Only SQL)
NoSQL은 "Not Only SQL"의 약자로, 관계형 모델을 사용하지 않거나, SQL을 주요 데이터 접근 언어로 사용하지 않는 DBMS들을 통칭한다. RDBMS가 모든 상황에 최적인 것은 아니기 때문에, 특정 요구사항(예: 엄청나게 많은 비정형 데이터 처리, 매우 빠른 읽기/쓰기 속도, 유연한 데이터 모델 등)을 만족시키기 위해 등장했다.
대표적인 NoSQL
| 분류 | 데이터 단위 | 핵심 장점 | 대표 사례 | 대표 DBMS |
| 키-값 저장소 | 키 -> 값 한 쌍 | 초고속 단건 읽기/쓰기 | 세션, 캐시 | Redis, Memcached |
| 문서 DB | JSON/BSON 문서 | 유연한 스키마 | 상품 카탈로그 | MongoDB, Couchbase |
| 컬럼 패밀리 저장소 | 열 그룹 | 대용량 분산/분석 | 로그/시계열 | Cassandra, HBase |
| 그래프 DB | 노드, 엣지 | 복잡한 관계 탐색 | 추천/이상 탐지 | Neo4j |
NoSQL은 RDBMS를 대체한다기보다는 상호 보완적인 관계로 이해하는 것이 좋다. 우리 쇼핑몰에서도 핵심 데이터는 RDBMS에 저장하되, 특정 기능(예: 실시간 인기 검색어, 사용자 세션 관리, 상품 추천 등)에는 NoSQL을 함께 사용할 수도 있다.
실무 이야기: NoSQL 도입
- RDB는 실무에 필요한 대부분의 문제를 해결할 수 있는 만능 해결사이다. 따라서 서비스가 작을 때는 보통 RDB만 사용하다가 서비스가 점점 커지고, 사용자가 늘어나면서 NoSQL이 꼭 필요한 상황들이 발생하면 그때 각 상황에 맞는 NoSQL을 부분적으로 도입하는 것이 좋다.
- 각각의 DB가 모두 깊이가 있다. RDB 하나만 제대로 이해하기도 쉽지 않다. 처음부터 무리하게 다양한 NoSQL을 함께 사용하면 관리해야 하는 시스템이 점점 늘어나므로 시스템 운영이 매우 어려워진다.
- 예를 들어보자. 실무에서는 고객이 요청할 때마다 이 고객이 정상적인 사용자인지 아닌지 확인이 필요하다. 쉽게 이야기해서 고객이 요청할 때마다 데이터베이스를 꼭 확인해야 한다. 이때 RDB를 사용하는 것보다 Redis 같은 키-값 저장소를 사용하는 것이 더 빠르고 효율적이다. 그래서 처음부터 Redis를 도입하는 경우도 있다. 하지만 Redis도 결국 또 하나의 시스템이므로 관리 포인트가 늘어난다는 점을 매우 신중하게!!!!! 고려해야 한다. 참고로 사용자가 수백만 명 이상이 되더라도 RDB만으로도 충분히 대부분의 서비스를 운영할 수 있다.
'데이터 베이스 > SQL 첫걸음(인프런 강의)' 카테고리의 다른 글
| Ch01. 데이터 베이스 소개 - 관계형 데이터베이스 종류 (0) | 2025.09.26 |
|---|---|
| Ch01. 데이터 베이스 소개 - 관계형 데이터베이스 종류 (0) | 2025.09.26 |
| Ch01. 데이터 베이스 소개 - 데이터베이스 관리 시스템 (DBMS) 소개 (0) | 2025.09.26 |
| Ch01. 데이터 베이스 소개 - 데이터베이스 관리 시스템이 필요한 이유 (0) | 2025.09.23 |
| Ch01. 데이터 베이스 소개 - 데이터와 정보 (0) | 2025.09.21 |