< 목차 >
[들어가며] 저장 방법에 따른 데이터베이스 종류
0. TL;DR
1. 계층형 데이터베이스
2. 네트워크형 데이터베이스
3. 키 - 값 데이터베이스
4. 관계형 데이터베이스
[들어가며] 저장 방법에 따른 데이터베이스 종류
데이터베이스 종류에는 크게 4가지가 있다. 하나씩 자세히 살펴볼 것이다.
- 계층형 데이터베이스
- 네트워크형 데이터베이스
- 키 - 값 데이터베이스
- 관계형 데이터베이스
0. TL;DR
- 계층형 데이터베이스: 데이터가 트리 구조로 구성돼 있고, 반복적인 부모 - 자식 관계 정보를 표현함
- 네트워크형 데이터베이스: 데이터를 노드와 집합구조로 표현
- 키 - 값 데이터베이스: NoSQL의 한 종류로, key - value를 1:1 대응해 데이터를 저장함
- 관계형 데이터베이스: 데이터를 테이블 형태로 저장하며 열과 행으로 구성
우리가 원하는 데이터의 특성에 맞게 데이터베이스를 잘 선택하는 게 중요하다.
1. 계층형 데이터베이스
: 데이터가 트리 구조로 구성돼 있고, 반복적인 부모 - 자식 관계 정보를 표현함
부모 *레코드는 여러 자식 레코드를 소유하고, 자식은 단 하나의 부모 레코드만 소유한다. 전형적인 부모 - 자식 관계다.
📽️ 레코드 (record) : 데이터를 저장하는 기본 단위
데이터베이스에서 레코드는 하나의 행(row) 또는 엔트리(entry)를 의미한다. 테이블에 저장된 데이터의 한 단위로, 각 레코드는 동일한 구조를 가진 여러 필드(열)로 구성된다.
예를 들어, 고객 정보를 저장하는 테이블이 있다면, 한 레코드는 한 명의 고객에 대한 모든 정보를 담는다.
고객 ID | 이름 | 이메일 | 전화번호 |
1 | 엄준식 | hong@example.com | 010-1234-5678 |
여기서 "엄준식"에 대한 정보가 하나의 레코드다.
계층형 데이터베이스 단점
- 일대일 or 일대다 관계가 무너지면 변경이 어려움
- 계층형에서 일대다 관계가 무너지면 네트워크 모델이 됨
- 데이터 중복이 발생하기 쉬움
- 데이터가 상하 종속 관계로 이뤄지므로 채택 후, 프로세스 변경이 어려움 ⇒ 상하 관계를 전부 다시 만들어야 하기 때문
- DB에서는 현재 거의 사용되지 않지만 XML 문서, 파일 시스템 등에 사용됨
다음으로, 이러한 계층형 DB의 단점인 중복, 상하 종속 관계를 해결할 수 있는 네트워크형 DB에 대해서 알아보자.
2. 네트워크형 데이터베이스
: 데이터를 노드와 집합구조로 표현
- 노드는 네트워크상에 있으며 대등한 관계
- 한 쌍의 노드에서 하나를 OWNER, 다른 하나를 MEMBER로 표현함
- MEMBER 노드는 OWNER 노드와 반드시 연결돼 있음
: MEMBER 노드는 OWNER 노드와 관련되지 않으면 존재할 수 없음 - OWNER 노드는 하나 or 여러 개의 MEMBER 노드에 연결돼 있음
네트워크형 데이터베이스 단점
- 레코드 간의 관계를 일대일 or 다대다 관계로 표현할 수 있지만 종속성 문제가 발생하기 쉬움
- 집합 구조를 통해 작업해야 해서 DB 구조에 대해 잘 알고 있어야 함
- 구조 변경이 어려움!
: 집합 구조를 변경하기 위해 모든 애플리케이션 수정이 필요
위 단점들 때문에 현재 데이터베이스에서 거의 사용되고 있지 않은 모델이다.
3. 키 - 값 데이터베이스
: NoSQL의 한 종류로, key - value를 1:1 대응해 데이터를 저장함
- 레코드를 검색하기 위해 key 사용
- 딕셔너리, 해시로 잘 알려져 있는 자료 구조인 연관 배열의 저장, 검색, 관리를 위해 설계된 패러다임
키 - 값 데이터베이스 특징
- 스키마 없이 작동 (schemaless, 데이터 구조를 미리 정의할 필요가 없음)
- 비정형 데이터를 쉽게 저장 가능
- 데이터 구조에서 유연하여 키 - 값을 다양한 형태로 표현 가능
NoSQL 종류
NoSQL 유형 | 특징 | 종류 |
키-값 데이터베이스 (Key-value Database) |
- 키-값 형태로 저장하며 수평 확장이 쉬움 - 값의 내용으로 쿼리할 수 없음 |
Memcached, Redis, LevelDB |
도큐먼트 데이터베이스 (Document Database) |
- 키-값 모델이 진화한 형태로, 키-도큐먼트 형태로 저장 - 값이 계층적인 형태로 저장 |
MongoDB, CouchDB, MarkLogic |
컬럼 데이터베이스 (Column Database) |
- 키에 해당하는 값에 각기 다른 스키마 사용 가능 - 대용량 데이터 압축, 분산처리, 집계 처리 등에 뛰어남 |
HBase, Cassandra, Hypertable |
그래프 데이터베이스 (Graph Database) |
- 데이터를 노드로 표현, 노드 관계를 엣지로 표현 - 소셜미디어나 네트워크 다이어그램 등에 사용 |
Neo4j, Blazegraph, OrientDB |
4. 관계형 데이터베이스
: 데이터를 테이블 형태로 저장하며 열과 행으로 구성
같은 대상을 두고 다른 명칭을 사용하는 이유는
논리적 데이터를 사용하냐, 물리적 데이터를 사용하냐, 개념적으로 사용하느냐에 따라 다르기 때문이다.
예를 들어, 물리적으로 사용할 때엔 column, row를 사용한다. 논리적으로 사용할 때엔 attribute, tuple을 사용한다.
왼쪽: 실제 데이터베이스에서 데이터를 조회했을 때의 화면
오른쪽: 엑셀 (비슷할 뿐, DB는 아님)
- 가장 많이 사용되는 데이터베이스 (역사적으로 오래됐기도 함)
- 데이터가 하나 이상의 열과 행의 테이블(or 관계)에 저장됨
- 서로 다른 데이터 구조가 어떻게 관련돼 있는지 쉽게 파악하고 이해할 수 있도록 사전 정의된 관계로 데이터를 구성
ERD
: 테이블 간의 관계를 표현한 그림
- Entity Relationship Diagram의 줄임말
- 논리 모델, 물리모델이 있음
관계형 데이터베이스 종류
수백 가지가 있지만 가장 일반적으로, 많이 사용하는 관계형 데이터베이스에 대해서 알아보자.
데이터베이스 | 상용 유무 | 특징 |
MySQL | 오픈소스 | 오픈소스 커뮤니티에서 개발한 RDBMS |
Oracle | 상용 | 오라클(Oracle)에서 개발한 RDBMS |
SQL Server | 상용 | 마이크로소프트에서 개발한 RDBMS |
PostgreSQL | 오픈소스 | 버클리 대학교에서 개발한 RDBMS |
DB2 | 상용 | IBM에서 개발한 RDBMS |
SQLite (SQL라이트) | 오픈소스 | 오픈소스 커뮤니티에서 개발함 |
'CS (Computer Science)' 카테고리의 다른 글
[개발 공부 100일차] DB 개론 | 관계대수 (2) | 2024.09.22 |
---|---|
[개발 공부 99일차] DB 개론 | 관계형 데이터 모델 (25) | 2024.09.21 |
[개발 공부 96일차] DB 개론 | 데이터베이스 및 관리 시스템 (6) | 2024.09.06 |
[개발 공부 95일차] 파이썬 | 파일 입출력, 예외 처리 (4) | 2024.09.05 |
[개발 공부 93일차] 파이썬 | 데이터 타입 (리스트, 튜플, set, 딕셔너리) (4) | 2024.09.03 |