안녕하세요. CS지식 정리도 할 겸, 학교에서 배운 데이터베이스 개념 + "데이터베이스 개론-IT COOKBOOK" 의 책을 공부하며 알게 된 내용을 정리하려고 합니다. 지난 포스트 "데이터베이스 관리 시스템(DBMS)"에 이어 이번에는 DBS(데이터베이스 시스템) 구성 요소 개념을 정리해보려고 합니다. 주관적으로 작성된 글이기에 틀린 내용이 있을 수 있습니다.(댓글로 알려주시면 감사합니다:)
1. 데이터베이스 시스템
Database System
데이터를 사용하는 모든 체계를 통틀어 Database system이라고 부릅니다. 사용자는 DBMS를 그냥 이용할 수 있는 것은 아니고 데이터 언어(ex: SQL)를 통해서 접근해야 합니다. 데이터 언어는 DBMS의 주요 기능인 DDL, DML, DCL 등의 기능들을 통해 Database의 데이터를 관리합니다.
2. 데이터베이스 구조
- Scheme(스키마): 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것입니다. ( 예를들어 user_id는 25문자로 제한!! )
- Instance(인스턴스): 데이터베이스에 저장될 실제 값들입니다. 사진의 아래 실제 값이 담긴 한 튜플을 instance라고 부를 수 있습니다.
3. 세 단계 데이터베이스 구조
(데이터 모델링 때 배운건데...) 데이터베이스를 '관점'에 따라 세 단계로 분류한 것 입니다. ( 등장 배경: ANSI/SPARC 미국 표준 기관에서 db의 복잡한 내부 구조를 감추고 사용자가 db를 쉽게 이해할 수 있도록 제안한 3-level database architecutre ㄷㄷ..)
외부 단계
사용자마다 모든 데이터베이스의 데이터에 관심이 있는게 아니라 사용 목적이 다르기 때문에 필요한 데이터들이 다를 수 있습니다. 그 예로 고객 분석 팀은 데이터베이스의 모든 데이터가 필요한게 아니라 고객의 성별, 나이, 직업 데이터만 필요로 합니다. 사용자가 필요로하는 데이터를 정의한 것이 external schema(외부 스키마)입니다. 사용 목적에 따라 다양하게 정의가 될 수 있습니다.
개념 단계
데이터베이스 관리 시스템이나 관리자의 관점에서 모든 사용자에게 필요한 데이터를 통합해서 전체 데이터베이스의 논리적 구조를 정의합니다. 모든 개별 사용자가 생각하는 데이터베이스의 모습이 하나로 합쳐진 형태입니다. 속성별로 제약조건 + 접근권한, 보안 정책 등이 포함됩니다. 그러나 데이터를 물리적으로 저장하는 방법과는 독립적입니다.
external schema는 conceptual schema를 기초로 해서 사용자의 목적에 맞게 만들어집니다.
내부 단계
위에서 정한 conceptual schema에 대해 실제로 저장장치에 저장하는 관점에서 표현됩니다. (파일의 데이터 저장하는 레코드 구조, 레코드 구성하는 필드 크기 등)
이 3 단계에서 상위 단계로 가거나 하위 단계로 갈 때 데이터 독립성(data independency)이 존재합니다.
4. 데이터 독립성(Data independency)
하위 스키마를 변경하더라도 상위 스키마는 영향을 받지 않는다(independency)는 것입니다.
- 논리적 데이터 독립성
conceptual schema가 변경된다면 external schema는 영향을 받지 않습니다. 단지 external/conceptual mapping(사상)만 수정하면 됩니다.
- 물리적 데이터 독립성
internal schema가 변경된다면 conceptual schema는 영향을 받지 않습니다. 단지 internal/conceptual mapping(사상)만 수정하면 됩니다.
cf. 각 단계가 depencency 해진다면.. 정말 복잡해 질 것입니다. 일단 의존성이 생기기 때문에 internal level에서 변경하게 된다면, 이에 의존적인 conceptual는 물론 여러 개의 exteranl level 에서 많은 변경을 해야하기 때문에 유지보수 또한 어렵습니다. 시스템을 변경할 때 특정 단계만 변경하는게 아니라 전체적인 관계를 생각하며 변경해야 되기 때문에 data indepencency는 중요한 개념인 것 같습니다.
5. 데이터 언어(DDL, DML, DCL)
데이터 언어는 사용자가 DBMS와 상호작용할 때 사용하는 언어입니다. 데이터베이스의 구조와 내용을 조작하고 query할 때 사용됩니다.
- DDL(Data Definition Language). 데이터 정의 언어
schema를 정의하고 데이터베이스의 구조를 정의할 때 사용됩니다. database 객체(table, index, view등) 생성, 삭제, 수정하는 명령어가 담겨 있습니다.
명령어 : CREATE, ALTER, DROP etc...
- DML(Data Manipulation Language). 데이터 조작 언어
데이터베이스 내 데이터를 query하고 조작할 때 사용됩니다. 데이터 검색, 삭제, 삽입, 수정 명령어를 사용할 수 있습니다. (원하는 정보 검색, 조작...)
명령어: SELECT, INSERT, UPDATE, DELETE etc....
- DCL(Data Control Language). 데이터 제어 언어
데이터베이스의 보안, 권한 관련에 사용됩니다. ( 특정 테이블 권한부여, 취소 등등)
명령어: GRANT, REVOKE etc...
cf. Data dictionary( system catalog )
db에 저장되는 데이터에 관한 meta data를 유지하는 시스템 데이터베이스. 스키마 간 사상(mapping)정보나 위에서 언급한 스키마 정보들, 다양한 제약조건이 저장되어 있는 데이터베이스입니다. 이와 반대로 실제로 이용하는 데이터가 저장되는 db를 user database라고 구별하기 위해 부릅니다. meta data는 DBMS가 자동으로 생성하고 관리합니다. (사용자는 SQL로 메타데이터에 접근할 수 없습니다.)
틀린 부분 발견 시 댓글로 남겨주시면 정말 감사합니다.
'ComputerScience > Database 이론' 카테고리의 다른 글
[Database] 5. 관계형 데이터 모델(Relational data model) 개념 정리 (0) | 2023.06.21 |
---|---|
[Database] 4. Data modeling 개념 정리 (0) | 2023.06.21 |
[Database] 2. 데이터베이스 관리 시스템(DBMS) 개념 정리 (2) | 2023.06.16 |
[Database] 1. 데이터베이스를 시작하기에 앞서 | 데이터베이스 정의 (0) | 2023.06.15 |