본문 바로가기
DB

1. 데이터베이스 기본개념

by 유니개발 2023. 4. 26.

database(DB)

전자적으로(electronically) 저장되고 사용되는 관련있는(related) 데이터들의 조직화된 집합(organized collection)

 

DBMS

-database management systems

- 사용자에게 DB를 정의하고 만들고 관리하는 기능을 제공하는 소프트웨어 시스템

- (PostgreSQL, MySQL, ORACLE database, Microsoft SQL Server)

 

metadata

- 일반적인 의미 -> 데이터를 설명하기 위한 데이터 (data about data)

ex) 사진을 찍었을 때 사진의 해상도, 포맷, 찍힌 날짜 등 사진에 대한 부가적인 data들이 사진의 metadata 

- DB에서의 의미 -> DB를 정의하다 보면 발생하는 부가적인 데이터

- database를 정의하거나 기술하는(descriptive) data (catalog라고도 부름)

- e.g.) 데이터 유형, 구조, 제약 조건, 보앙ㄴ, 저장, 인덱스, 사용자 그룹 등등

- metadata 또한 DBMS를 통해 저장/관리됨

 

database system

- database + DBMS + 연관된 applications

- 줄여서 database라고도 부름 (문맥에 따라 잘 파악할 것)

- Query 라는 것은 database에 접근해서 원하는 데이터를 가져오거나 혹은 원하는 형태로 데이터를 수정하는 요청 같은것

 

data models

- DB의 구조(structure)를 기술하는 데 사용될 수 있는 개념들이 모인 집합

- DB 구조를 추상화해서 표현할 수 있는 수단을 제공

- data model은 여러 종류가 있으며 추상화 수준과 DB 구조화 방식이 조금씩 다름

- DB에서 읽고 쓰기 위한 기본적인 동작들(operations)도 포함

*DB 구조 : 데이터 유형, 데이터 관계(relationship), 제약 사항(constraints) 등

 

data models 분류

 

- conceptual (or high-level) data models

일반 사용자들이 쉽게 이해할 수 있는 개념들로 이뤄진 모델

추상화 수준 가장 높음

비즈니스 요구 사항을 추상화하여 기술할 때 사용

대표적으로 entity-relationship model (ER diagram 그림)

 

- logical data models

이해하기 어렵지 않으면서도 디테일하게 DB를 구조화할 수 있는 개념들을 제공

데이터가 컴퓨터에 저장될 때의 구조와 크게 다르지 않게 DB 구조화 가능

특정 DBMS나 storage에 종속되지 않는 수준에서 DB를 구조화할 수 있는 모델

종류로는 relational data model, object data model, object-relational data model 이 있음.

relational data model 을 가장 많이 사용 (대부분의 DBMS도 이 모델에 기반함)

여기서 realation은 어떠한 형태의 table을 의미 (row : 데이터 각각, column : 그 데이터의 속성(attribute))

 

- physical data models

컴퓨터에 데이터가 어떻게 파일 형태로 저장되는지를 기술할 수 있는 수단을 제공

데이터가 실제로 저장장치에 저장되는 형태에 가장 근접하게 database 구조를 표현할 수 있는 모델

data format, data orderings, access path 등등

access path : 데이터 검색을 빠르게 하기 위한 구조체 e.g.) index

 

database schema

- data model을 바탕으로 database의 구조를 기술(description)한 것

- schema는 database를 설계할 때 정해지며 한번 정해진 후에는 자주 바뀌지 않음

 

database state

- database에 있는 실제 데이터는 꽤 자주 바뀔 수 있음

- 특정 시점에 database에 있는 데이터를 database state 혹은 snapshot 이라고 함

- 혹은 database에 있는 현재 instances의 집합이라고도 함

 

three-schema architecture

- database system을 구축하는 architecture 중에 하나

- user application으로부터 물리적인(physical) database를 분리시키는 목적

- 각 레벨을 독립시켜서 어느 레벨에서의 변화가 상위 레벨에 영향을 주지 않기 위함

- 대부분의 DBMS가 three level을 완벽하게 혹은 명시적으로 나누지는 않음

- 세 가지 level이 존재하며 각각의 level마다 schema가 정의되어 있음

- 각각의 schema는 database 구조를 표현하는 것이지, 실제 데이터가 존재하는 곳은 internal level임

 

Internal level : internal schema

- 물리적으로 데이터가 어떻게 저장되는지 physical data model을 통해 표현

- data storage, data structure, access path 등등 실체가 있는 내용을 기술

 

External Level : external schema

- external views, user views 라고도 불림 (실제 사용자가 보는 schema)

- 특정 유저들이 필요로 하는 데이터만 표현

- 그 외 알려줄 필요가 없는 데이터는 숨김

- logical data model을 통해 표현

 

database system의 초창기 architecture는 internal schema와 external schema 밖에 없었는데, 이렇게 하다보니 각각의 유저마다 필요로 하는 데이터가 달라지게 됨. 그래서 internal level에서 점점 중복되는 데이터가 생기면서 관리가 힘들어지고 데이터 불일치가 발생함. 이를 해결하기 위해 Conceptual level 에서의 conceptual schema가 생김.

 

Conceptual Level : conceptual schema

- 전체 database에 대한 구조를 기술

- 물리적인 저장 구조에 관한 내용은 숨김

- entities, data types, relationships, user operations, constraints에 집중

- logical data model을 통해 기술

 

internal schema에 변경이 생긴다 할지라도 그 변경 때문에 conceptual schema도 바꿔줘야할 필요가 없다. 단지 그 사이의 mapping만 바꾸면 된다. 그래서 안정적으로 운영할 수 있다. concpetual schema와 external schema도 마찬가지이다.

 

internal schema가 바뀌어도 conceptual schema가 바뀌지 않게 만드는것은 상대적으로 쉽지만, conceptual schema가 바뀌어도 external schema가 바뀌지 않게 만드는 것은 상대적으로 어렵다.

 

data definition language (DDL)

- conceptual schema를 정의하기 위해 사용되는 언어

- internal schema 까지 정의할 수 있는 경우도 있음

 

storage definition language (SDL)

- internal schema를 정의하는 용도로 사용되는 언어

- 요즘은 특히 relational DBMS에서는 SDL이 거의 없고 파라미터 등의 설정으로 대체됨

 

view definition language (VDL)

- external schema를 정의하기 위해 사용되는 언어

- 대부분의 DBMS에서는 DDL이 VDL 역할까지 수행 (결국 definition language로는 DDL이 거의 모든 것을 커버함)

 

data manipulation language (DML)

- database에 있는 data를 활용하기 위한 언어

- data 추가, 삭제, 수정, 검색 등등의 기능을 제공하는 언어

 

오늘날의 DBMS는 DML, VDL, DDL이 따로 존재하기 보다는 통합된 언어로 존재함.

대표적인 예가 realational database language : SQL

(결론 : 그냥 SQL 배우면 된다는 거임)

댓글