공대생의 공부흔적

[DB#1] 데이터 모델 (Data Model) 본문

Database & Big Data

[DB#1] 데이터 모델 (Data Model)

생대공 2024. 3. 7. 15:21

참고: Database Systems: The Complete Book (2nd edition)

데이터 모델

데이터나 정보를 표현하기 위한 방법으로, 일반적으로 다음 세 부분으로 구성되어 있다.

  • 데이터 구조: 데이터를 구현하기 위한 관념적 모델로서, array나 list와 같은 물리적 모델보다 높은 레벨을 의미
  • 데이터 연산: 정보 회수를 위한 쿼리(query) 연산과 데이터베이스를 바꾸는 수정(modification) 연산만을 허용한다. 이러한 한계는 프로그래머가 데이터베이스 연산을 high level에서 표현할 수 있도록 해준다는 장점이 있다.
  • 데이터 제약사항: 데이터가 가질 수 있는 형태에 대한 제약사항을 포함하는 경우가 많다. 범위 제한과 같은 단순한 조건에서부터 복잡한 조건까지 가질 수 있다.

이러한 특징을 바탕으로, 여러 가지 데이터 모델의 종류와 그 특징에 대해 알아보자.

Relational model

  • 구조: 표(relations)에 기반. C의 array of structs와 비슷해 보이지만, 다음과 같은 한 가지 방법으로만 구현 가능하다는 점에서 차이가 있다. 데이터베이스 시스템에서 표는 메인 메모리 구조로 저장되지 않고 디스
  • 연산: 관계형 대수(Relational algebra) 연산을 사용한다. e.g. genre가 "drama"인 모든 row
  • 제약사항 e.g. 제목이 동일한 두 영화가 있을 수 없다, 장르는 고정된 값 중 하나여야 한다 등
title year length genre
Gone with the Wind 1939 231 drama
Star Wars 1977 124 sciFi
Wayne's World 1992 95 comedy

<Figure 1> 관계형 모델 예시

Semi-structured model

  • 구조: 표나 array보다는 트리나 그래프와 비슷하다. 위계적으로 nest된 tagged element로 데이터를 나타낸다.
  • 연산: element에서 subelement까지의 경로를 따른다.
  • 제약사항: tag가 있는 값들과 관련된 제약사항들이 있다. e.g. <Length> 태그 값은 정수여야 한다
<Movies>
    <Movie title="Gone With the Wind">
        <Year>1939</Year>
        <Length>231</Length>
        <Genre>drama</Genre>
	</Movie>
	<Movie title="Star Wars">
		<Year>1977</Year>
		...
</Movies>

<Figure 2> Semi-structured 모델 예시

Key-value model

  • 구조: (key, value) 쌍으로 이루어짐. key는 문자열이나 정수 / value는 어떤 데이터든 가능
  • 연산: get(key), put(key, value). value에 대한 연산은 불가능
  • 제약사항 e.g. key 값은 고유하다, value는 NULL이 아니다 등
key value
1000 (Gone With the Wind, 1939)
1001 (Star Wars, 1977)
1002 (Wayne's World, 1992)

<Figure 3> key-value 모델 예시

데이터 모델 간 비교

Relational model: 단순하고 제한되어 있지만, 유용한 연산이 존재하며 대규모 데이터에 효율적인 접근이 가능. 몇 줄의 SQL 코드만으로도 1,000 줄의 C 코드와 동일한 효과. 자주 사용되는 데이터베이스 관리 시스템.

Semi-structured model: 더 유연하지만 느린 쿼리

key-value model: 훨씬 더 유연하지만, 쿼리가 불가능 (key 값으로 value를 탐색만 할 수 있음)

'Database & Big Data' 카테고리의 다른 글

[DB#2] 관계형 모델(Relational Model)  (0) 2024.03.07