T_era
데이터베이스를 어떤 걸 써야할까? 본문
면접 대비! "왜 MySQL을 쓰셨나요?" 질문에 대한 대답을 생각하다 정리해봤다
면접을 준비하면서 문득 이런 질문이 떠올랐다. "데이터베이스는 왜 MySQL을 썼나요?" 단순히 "많이 써서요"라고 대답할 수는 없을 것이다. 면접관에게 깊은 인상을 남기고, 나아가 프로젝트에 가장 적합한 데이터베이스를 선택하기 위한 방법을 찾아보기위해 다양한 데이터베이스를 알아보자
1. 다양한 데이터베이스 관리 시스템: 왜 이렇게 많은 걸 알아야 할까요?
데이터를 저장하고 관리하는 방식은 생각보다 훨씬 다양하다. 마치 엑셀, JSON, 그래프 등 다양한 형태로 정보를 표현할 수 있는 것처럼 말이다. 이러한 다양한 방식을 데이터베이스 모델이라고 부른다. 처음에는 "왜 이렇게 종류가 많지? 다 알아야 하나?"라는 생각도 들었지만, 핵심은 각 모델의 특징과 대표적인 시스템을 이해하고, 필요한 상황에 맞춰 적용하는 것이라는 결론에 도달했다.
2. 데이터베이스 모델, 뭐가 다른 건데요? (핵심 특징 정리)
다양한 데이터베이스 모델들의 핵심 특징과 대표적인 시스템을 간략하게 정리해 보았다.
- RDB (Relational Database): 관계형 데이터베이스
- 특징: 행과 열로 이루어진 테이블 구조로 데이터를 관리합니다. 오랜 역사와 사용으로 높은 안정성과 데이터 무결성을 자랑하고, 중요한 데이터를 장기간 보존하는 데 적합하다.
- 장점: 데이터 무결성, 트랜잭션 지원 (ACID), 성숙한 생태계 및 풍부한 툴링.
- 단점: 대규모 데이터 및 고성능 환경에서 수평적 확장이 상대적으로 어려울 수 있다.
- 대표: MySQL, PostgreSQL, Oracle, SQL Server 등
- Key-Value:
- 특징: Key와 Value 쌍으로 데이터를 관리합니다. JSON과 유사한 형태로, 유연한 데이터 구조를 지원한다.
- 장점: 빠른 읽기/쓰기 속도, 단순한 구조, 유연한 데이터 모델링.
- 단점: ACID를 보장하지 않는 경우가 많아 영구적인 데이터 저장에는 신중해야 한다. 관계형 데이터베이스의 복잡한 쿼리나 트랜잭션 기능을 지원하지 않는다.
- 대표: Redis, Memcached 등
- Graph Database:
- 특징: **노드(Node)와 관계(Edge)**를 이용하여 데이터를 표현하고 저장한다. 데이터 간의 복잡한 관계 분석에 특화되어 있다.
- 장점: 복잡한 관계 모델링 및 쿼리에 효율적, 소셜 네트워크 분석, 추천 시스템 등에 활용.
- 단점: 사용 사례가 상대적으로 적어 RDB에 비해 성숙도가 낮을 수 있고, 안정성이나 실적용 경험이 부족할 수 있다.
- 대표: Neo4j, ArangoDB 등
- Document Database:
- 특징: JSON과 유사한 문서 형태로 데이터를 저장한다. 스키마리스(Schema-less) 또는 유연한 스키마를 지원하여 개발 편의성이 높다.
- 장점: 빠른 개발 속도, 유연한 데이터 구조 변경, 데이터 분산 처리에 용이할 수 있다.
- 단점: 데이터 중복 발생 가능성이 높고, 관계형 데이터베이스에 비해 정규화 및 데이터 관계 분석이 어렵다. ACID를 완전히 지원하지 않는 경우가 있고, 데이터 입출력이 많은 경우 성능 문제가 발생할 수 있다.
- 대표: MongoDB, Firestore, Couchbase 등
- Search Engine:
- 특징: 인덱싱(Indexing) 및 검색 성능에 특화된 시스템. 기존 데이터베이스의 데이터를 인덱싱하여 빠르고 정확한 검색 기능을 제공한다.
- 장점: 뛰어난 전문 검색 성능, 전문 검색 기능 지원 (전문, 유사어 검색 등).
- 단점: 영구적인 데이터 저장보다는 검색 성능 향상을 위한 보조적인 용도로 사용되는 경우가 많다. 트랜잭션 처리나 복잡한 관계형 쿼리는 어렵다.
- 대표: Elasticsearch, Solr 등
3. 그래서 뭘 써야 하냐고요? (일반적인 선택 전략)
일반적으로 서버를 구축할 때는 반영구적인 데이터 저장을 위한 주(Main) 데이터베이스와 효율적인 데이터 처리 및 특정 기능 지원을 위한 보조(Sub) 데이터베이스를 함께 고려하는 것이 좋다.
- 주 데이터베이스: RDB나 Document Database가 안정적인 데이터 저장 및 관리에 적합하다. 데이터의 중요도, 관계 복잡성, 확장성 등을 고려하여 선택할 수 있다.
- 보조 데이터베이스: Key-Value Store, Graph Database, Search Engine 등은 애플리케이션의 특정 요구사항(캐싱, 관계 분석, 검색 등)에 맞춰 선택할 수 있다.
4. 다음 편 예고: "왜 MySQL과 Redis를 선택했나요?" 📢
결국 중요한 것은 각 데이터베이스 모델의 특징을 정확히 이해하고, 자신의 프로젝트의 요구사항에 가장 적합한 시스템을 선택하는 것이다. 면접에서 "왜 MySQL을 썼나요?"라는 질문에 자신감 있게 대답하고, 프로젝트 배포 시에도 최적의 선택이었다는 것을 증명하기 위해서 최소한의 특징은 알고 있어야 할 것이다.
다음 포스팅에서는 처음 궁금증이 있었던 "RDB 중에서 왜 MySQL을 선택했는지", 그리고 예를들어 "보조 데이터베이스로 Redis를 선택한 이유" 등에 대해 더 자세히 알아보도록 하자.
'Programing > Datababse' 카테고리의 다른 글
| 데이터베이스 대표 시스템 중에 뭘 써야 할까? - Key-Value Store (1) | 2025.05.22 |
|---|---|
| 데이터베이스 대표 시스템 중에 뭘 써야할까? - RDB (0) | 2025.05.20 |
| 데이터베이스 키의 종류 및 정규화/반정규화 (0) | 2025.05.16 |
| SQL 자료형 (0) | 2025.05.08 |
| SQL 언어 (0) | 2025.05.08 |