[데이터베이스] 기본개념
데이터베이스(Database, DB)
전자적으로(electronically) 저장되고 사용되는 관련있는(related) 데이터들의 조직화된 집합(organized collection)
즉 데이터베이스는 어느 한 조직의 응용 시스템들이 공용할 수 있도록 통합, 저장된 운영 데이타의 집합이다.
통합 데이터(Integrated Data)
- 최소의 중복(minimal redundancy)
- 통제된 중복(Controlled Redundancy)
저장 데이터(Stored Data)
- 컴퓨터가 접근 가능한 매체에 저장(디스크 등)
운영 데이터(Operational Data)
- 한 조직의 고유 기능을 수행하기 위해 필요한 데이터
공용 데이터(Shared Data)
- 한 조직의 여러 응용 프로그램이 공동으로 소유, 유지, 이용하는 데이터
e.g.) 대학의 데이터베이스
학생들에 관하여 신상정보, 수강 과목, 성적 등을 기록하고,
각 학과에 개설되어 있는 과목들에 관한 정보를 유지하고,
교수에 관해서 신상 정보, 담당 과목, 급여 정보를 유지한다.
e.g.) 항공기 예약 시스템
항공기 예약 시스템에서는 여행사를 통해 항공기 좌석을 예약하면 모든 예약 정보가 데이터베이스에 기록된다.
e.g.) 할인점이나 슈퍼마켓
모든 상품들의 정보(상품가격, 기본정보, 입고정보, 판매, 재고)가 데이터베이스에 기록된다.
database의 특성
실시간 처리, 계속변화, 내용 기반 참조, 동시 공유
실시간 처리
질의를 실시간으로 처리하고 응답이 가능
계속변화(continuous evolution)
데이터 베이스는 계속적으로 변화됨
내용 기반 참보(content reference)
위치나 주소가 아닌 값에 따라 참조
동시 공유(concurrent sharing)
데이터베이스는 데이터의 대규모 저장소로서, 여러 부서에 속하는 여러 사용자에 의해 동시에 사용됨
모든 데이터가 중복을 최소화하면서 통합됨
database의 구조
논리적 구조(Logical Structure)
사용자 관점으로 보는 데이터베이스의 구조
데이터의 논리적 표현(배치)
논리적 레코드
- 논리적 구조에서 취급하는 데이터 레코드
물리적 구조(Physical Structure)
저장장치 관점에서의 데이터베이스 구조
저장장치 위에 저장된 데이터의 실제 구조
저장 레코드
추가 정보 포함(블록, 인엑스, 포인터체인, 오버플로 구역 등)
DBMS(DataBase Management System)
사용자에게 DB를 정의하고 만들고 관리하는 기능을 제공하는 소프트웨어 시스템
metadata
database를 정의하거나 기술하는(descriptive) data (catalog라고도 부름)
e.g.) 데이터 유형, 구조, 제약 조건, 보안, 저장, 인덱스, 사용자 그룹 등등의 metadata또한 DBMS를 통해 저장/관리된다.
database system
database + DBMS + 연관된 applications (줄여서 database라고도 부름)
data models
*DB의 구조(structure)를 기술하는데 사용될 수 있는 개념들이 모인 집합
DB 구조를 추상화해서 표현할 수 있는 수단을 제공한다.
data model은 여러 종류가 있으며 추상화 수준과 DB 구조화 방식이 조금씩 다르다.
DB에서 읽고 쓰기 위한 기본적인 동작들(operations)도 포함한다.
*DB 구조: 데이터 유형, 데이터 관계(relationship), 제약 사항(constraints) 등등
data models의 분류
conceptual(or high-level) data models
일반 사용자들이 쉽게 이해할 수 있는 개념들로 이뤄진 모델이다.
추상화 수준이 가장 높다.
비즈니스 요구 사항을 추상화하여 기술할 때 사용한다.
아래의 그림은 예를들어 대학교에있는 도서관 시스템을 구현한다고 했을때 학생들 정보와 책정보를 표현한것이다.
Student entity와 Book entity는 reads의 관계가 있다.
conceptual data model은 위와 같이 데이터베이스의 구조를 높은 수준으로 추상화해서 이해하기 쉽게 표현하거나 표현할 수 있는 수단을 제공하는 모델이다.
logical(or representational) data models
이해하기 어렵지 않으면서도 디테일하게 DB를 구조화 할 수 있는 개념들을 제공한다.
데이터가 컴퓨터에 저장될 때의 구조와 크게 다르지 않게 DB 구조화를 가능하게 한다.
특정 DBMS나 storage에 종속되지 않는 수준에서 DB를 구조화할 수 있는 모델이다.
백엔드 개발자의 경우 logical data model을 가장 많이 사용하게 된다고 한다.
relational data model
그중 위와 같은 relational data model을 가장 많이 사용한다고 한다.
테이블 형태로 저장하게 되며, 해당 테이블을 relation이라고 부른다.
위 테이블의 row는 데이터 각각을 의미하며, column은 그 데이터의 속성(Attribute)를 의미한다.
object data model
객체지향형 데이터 모델이다.
object-relational data model
객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 의미한다.
이외에도 여러가지 데이터 모델이 있지만 가장 많이 사용되는것은 relational data model이다.
physical(or low-level) data models
컴퓨터에 데이터가 어떻게 파일 형태로 저장되는지를 기술할 수 있는 수단을 제공한다.
data format, data orderings, access path(데이터 검색을 빠르게 하기 위한 구조체, e.g.)index ) 등 실제로 컴퓨터에 저장되는것과 밀접하게 모델링 할 수 있는 방법들을 제공한다.
database schema
data model을 바탕으로 database의 구조를 기술(description)한 것이다.
schema는 database를 설계할 때 정해지며 한번 정해진 후에는 자주 바뀌지 않는다.
relational data model에서의 스키마는 위 relational data model 그림에서 STUDENT 데이터가 있고, 어떤 속성(student id, 이름, 전공, 학년)을 가지는지를 기술하는 것이다.
database schema를 보면 데이터 베이스가 어떤식으로 되어 있는지를 이해할 수 있다.
database state
database에 있는 실제 데이터는 꽤 자주 바뀔 수 있다.
특정 시점에 database에 있는 데이터를 database state혹은 snapshot이라고 한다.
혹은 database에 있는 현재 instances의 집합이라고도 한다.
three-schema architecture
database system을 구축하는 architecture 중의 하나다.
user application으로 부터 물리적인(physical) database를 분리시키는 목적이다.
세 가지 level이 존재하며 각각의 level마다 schema가 정의되어 있다.
external schemas(or user views) at external(or view) level
external views, user views라고도 불린다. 특정 유저들이 필요로 하는 데이터만 표현한다. 그 외 알려줄 필요가 없는 데이터는 숨긴다. logical data model을 통해 표현한다.
conceptual schemas at conceptual level
전체 database에 대한 구조를 기술한다.
물리적인 저장 구조에 관한 내용은 숨긴다.
entities, data types, relationships, user operations, constraints에 집중해서 데이터 구조를 표현한다.
logical data model을 통해 기술한다.
internal schemas at internal level
물리적으로 데이터가 어떻게 저장되는지 physical data model을 통해 표현한다.
data storage, data structure, access path 등등 실체가 있는 내용을 기술한다.
three-schema architecture 정리
안정적으로 데이터베이스 시스템을 운영하기 위해서 사용하는 architecture다.
각 레벨을 독립시켜서 어느 레벨에서의 변화가 상위 레벨에 영향을 주지 않기 위해 사용한다.
internal schema에 변경이 생긴다 할지라도 그 변경 때문에 conceptual schema도 바꿀 필요가 없다.
internal schema와 conceptual schema의 mapping만 바꿔주면 된다.
마찬가지로 conceptual schema에 변경이 생겨도 external schema를 변경할 필요가 없으며 mapping만 바꿔주면 된다.
하지만 internal schema가 바뀌어도 conceptual schema를 바꾸지 않을 수 있도록 만드는 것은 상대적으로 쉬우나,
conceptual schema가 바뀌어도 external schema를 바뀌지 않을 수 있도록 만드는 것은 상대적으로 어렵다.
대부분의 DBMS가 three level을 완벽하게 혹은 명시적으로 나누지는 않는다.
각각의 schema는 database구조를 표현하는 것이지 데이터가 존재하는 곳은 internal level이다.
data definition language(DDL)
conceptual schema를 정의하기 위해 사용되는 언어다.
internal schema까지 정의할 수 있는 경우도 있다.
storage definition language(SDL)
internal schema를 정의하는 용도로 사용되는 언어다.
요즘은 특히 relational DBMS에서는 SDL이 거의 없고 파라미터 등의 설정으로 대체된다.
view definition language(VDL)
external schemas를 정의하기 위해 사용되는 언어다.
대부분의 DBMS에서는 DDL이 VDL역할까지 수행한다.
data manipulation language(DML)
database에 있는 data를 활용하기 위한 언어다.
data 추가, 삭제, 수정, 검색 등등의 기능을 제공하는 언어다.
통합된 언어
오늘날의 DBMS는 DML, VDL, DDL이 따로 존재하기 보다는 통합된 언어로 존재한다. 대표적인 예로 relational database language : SQL