데이터베이스의 유형
2025. 1. 24. 10:45ㆍDatabase/Database
데이터베이스의 유형
1. 관계형 데이터베이스 (Relational Database)
- 데이터를 테이블(행과 열) 형식으로 저장.
- 테이블 간의 관계를 정의하고 SQL로 데이터를 다룸.
- 장점: 구조화된 데이터를 다루기 적합하고, 데이터 무결성 보장에 유리하다.
- 단점: 복잡한 객체 관계를 표현하는데 한계가 있다. 스키마 변경이 어렵고 비용이 많이 든다.
- DBMS: MySQL, PostgreSQL, Oracle DB, Microsoft SQL Server 등
- 사용 방식:
- 데이터의 무결성과 정합성이 중요한 애플리케이션에서 주로 사용.
- 금융 거래 시스템, 전자상거래, ERP(전사적 자원 관리), CRM(고객 관계 관리) 등.
- 여전히 널리 사용되며, 특히 구조화된 데이터 관리와 정합성이 중요한 시스템에서 필수적.
- 사용 서비스 예시:
- Facebook: 초기에는 MySQL을 사용했고, 지금도 일부 서비스에서 MySQL을 사용하며, 필요에 따라 확장된 구조를 추가.
- Google: Cloud SQL과 같은 관계형 DB 서비스를 제공하며, 내부적으로도 RDBMS를 사용.
- 네이버: 검색 기록, 사용자 정보 관리 등에서 관계형 DBMS를 활용.
2. 비관계형 데이터베이스 (NoSQL)
- 데이터를 테이블이 아닌 다양한 구조로 저장.
- 장점: 유연한 데이터 모델, 대량의 비정형 데이터 처리에 강함
- 단점: 복잡한 데이터 관계를 다루는 데 한계가 있을 수 있음, 트랜잭션 일관성 보장이 어렵거나 추가 설정이 필요.
- 종류
- 문서형(Document-based)
- 데이터를 JSON, BSON 형식으로 저장.
- DBMS: MongoDB, CouchDB.
- 키-값(Key-Value)
- 데이터를 키와 값으로 저장.
- DBMS : Redis, DynamoDB.
- 열 기반(Column-family)
- 데이터를 열 중심으로 저장.
- DBMS: Cassandra, HBase.
- 그래프(Graph-based)
- 노드와 엣지로 데이터를 저장.
- DBMS: Neo4j, Amazon Neptune.
- 문서형(Document-based)
- 사용 방식:
- 대규모 분산 시스템이나 비정형 데이터를 다룰 때 사용.
- 소셜 미디어, 실시간 분석, 로그 처리, IoT 시스템 등에 적합.
- 빅데이터 처리와 대규모 시스템 확장이 필요한 환경에서 필수적.
- 사용 서비스 예시:
- Instagram: 초기에는 PostgreSQL을 사용했지만, 대규모 유저 데이터를 처리하기 위해 Cassandra(NoSQL)를 도입.
- Amazon: DynamoDB(아마존 자체 NoSQL DBMS)를 사용해 쇼핑 카트 데이터와 트랜잭션을 관리.
- Netflix: 대규모 스트리밍 데이터와 사용자의 추천 시스템에 Cassandra를 활용.
3. In-Memory 데이터베이스
- 데이터를 디스크가 아니라 메모리에 저장해 속도를 극대화.
- 장점: 디스크 I/O 없이 메모리에 직접 저장하여 빠른 처리 속도를 제공
- 단점: 데이터를 영구적으로 저장하려면 추가 조치 필요.
- DBMS: Redis, Memcached.
- 사용 방식 / 예시
- 데이터를 메모리에 저장하여 초고속 데이터 처리를 필요로 하는 실시간 애플리케이션에서 사용.
- 실시간 데이터 처리가 중요한 모든 시스템에서 활발히 사용.
- Twitch: 실시간 채팅 메시지를 Redis로 처리.
- LinkedIn: 실시간 알림 시스템에서 Redis를 활용.
- 카카오톡: 채팅 메시지와 알림 처리에서 In-Memory DBMS 사용.
4. 그래프 데이터베이스
- 특징: 노드와 엣지 구조로 데이터와 관계를 저장.
- 장점: 복잡한 관계 데이터 처리에 강함, 경로 탐색과 네트워크 분석에 적합.
- 단점: 대규모 데이터 처리 시 성능 저하 가능.
- DBMS: Neo4j, Amazon Neptune
- 사용 방식 / 예시
- 소셜 네트워크나 추천 시스템처럼 복잡한 관계를 탐색해야 하는 서비스에서 매우 활발히 사용되고 있어. 데이터가 더 복잡해지고 관계의 중요성이 커짐에 따라 점점 더 많이 사용되고 있어!
- Facebook: 사용자 간의 친구 관계와 추천 시스템에 Neo4j 사용.
- LinkedIn: 직업 네트워크 및 인맥 관계 추적에 Apache Giraph 사용
5. 타임 시리즈 데이터베이스 (Time-Series Database)
- 데이터를 시간에 따라 기록하고 관리.
- 장점: 시간 기반 데이터의 빠른 조회와 분석.
- 단점: 범용적인 데이터베이스로 사용하기 어려움.
- DBMS: InfluxDB, TimescaleDB.
- 사용 방식 / 예시
- IoT 데이터, 로그 데이터, 센서 데이터와 같은 시간 기반 데이터를 다룰 때 사용
- IoT, 금융, 주식 데이터 분석 등 특정 도메인에서 활발히 사용.
- Tesla: 차량 센서 데이터를 저장하고 분석하기 위해 TimescaleDB를 사용
- Amazon: CloudWatch Metrics에서 타임 시리즈 데이터 저장.
6. 분산 데이터베이스 (Distributed Database)
- 데이터를 여러 노드에 분산 저장.
- 장점: 시스템 장애에 강하고, 확장성 좋음.
- 단점: 분산된 시스템에서 데이터의 일관성을 유지하는 데 추가적인 관리가 필요
- DBMS: Cassandra, Google Spanner, Amazon Aurora
- 사용 방식 / 사례
- 여러 지역에 분산된 데이터를 관리하는 글로벌 서비스에서 사용.
- 글로벌 서비스나 대규모 데이터를 다루는 시스템에서 매우 활발히 사용.
- 사용 서비스 예시
- Google: 내부적으로 Spanner를 사용해 분산 데이터베이스를 관리.
- Uber: GeoSpatial 데이터 관리를 위해 Cassandra와 같은 분산 DBMS를 사용.
- YouTube: 동영상 메타데이터를 분산 DBMS로 관리.
7. 계층형 데이터베이스 (Hierarchical Database)
- 데이터를 트리 구조로 저장.
- 부모-자식 관계로 데이터가 연결.
- 장점: 데이터 관계가 명확할 때 빠르게 조회 가능, 정해진 구조 안에서 효율적으로 작동.
- 단점: 복잡한 데이터 관계를 표현하기 어려움, 유연성이 낮고, 스키마 변경이 까다로움.
- 사용 방식 / 예시
- IBM: IMS(Information Management System)를 기반으로 한 초기 은행 시스템.
- 주로 과거 메인프레임 환경에서 사용되었으며, 현재는 거의 사용되지 않음.
- 일부 구형 시스템에서 여전히 사용되긴 하지만, 점차 현대적인 DBMS로 대체되는 추세.
8. 네트워크형 데이터베이스 (Network Database)
- 데이터를 그래프 구조(망형)로 저장.
- 계층형과 달리 한 자식 노드가 여러 부모 노드와 연결 가능.
- 장점: 복잡한 관계를 표현하기 유리, 유연한 데이터 구조.
- 단점: 설계와 관리가 복잡함
- 사용 방식 / 예시
- 초창기 은행 시스템, 정부 데이터 관리 시스템(CODASYL 기반).
- 초기의 복잡한 관계형 데이터 처리 시스템에서 사용되었으나, 현재는 그래프 DBMS로 대체되는 추세임.
9. 객체 지향 데이터베이스 (Object-Oriented Database)
- 데이터를 객체 형태로 저장.
- 프로그래밍 언어의 객체 지향 개념(상속, 캡슐화, 다형성 등)을 그대로 데이터베이스에 적용해서 OOP와 잘 어울림
- 장점: 객체 지향 언어와 잘 맞아서 프로그래밍과 연동이 간편, 복잡한 데이터 구조를 효율적으로 표현 가능.
- 단점: RDB에 비해 복잡하고, 성능이 낮은 경우도 있음, 널리 사용되지 않아 커뮤니티와 지원이 부족한 편.
- DBMS: ObjectDB, db4o.
- 사용 방식 / 예시
- CAD/CAM, 멀티미디어 애플리케이션.
- 삼성: CAD/CAM 설계 시스템에서 객체 지향 DBMS를 활용.
- 점차 사용 빈도가 줄고 있으며, RDBMS와 NoSQL로 대체되는 경우가 많음.
DBMS 종류 정리
- 관계형 DBMS: MySQL, PostgreSQL, Oracle DB.
- NoSQL DBMS: MongoDB, Redis, Cassandra.
- In-Memory DBMS: Redis, Memcached.
- 그래프 DBMS: Neo4j, Amazon Neptune.
- 타임 시리즈 DBMS: InfluxDB, TimescaleDB.
- 분산 DBMS: Cassandra, Google Spanner, Amazon Aurora
- 클라우드 DBMS: Amazon RDS, Google Cloud SQL, Azure SQL
RDBMS와 NoSQL은 현재 가장 널리 사용되며, 각각 구조화된 데이터와 비정형 데이터를 처리하는 데 강점이 있다.
In-Memory DBMS와 분산 DBMS는 실시간 처리와 대규모 서비스에서 필수적.
계층형과 네트워크형 DBMS는 현재 거의 사용되지 않지만, 특정 구형 시스템에서 존재.
클라우드 DBMS는 점점 더 대세가 되고 있어, 특히 신규 프로젝트에서는 자주 채택된다.