※ 대학교 수업에서 배운 내용의 노트 필기를 기억을 더듬어가며 옮겨 쓰는 것이므로 오류가 있을 수 있습니다.
지적해주시면 감사하겠습니다.
프로그래밍 언어의 세대를 대충 나누면 다음과 같다.
1세대 : 기계어(Machine language)
2세대 : 어셈블리어(Assembly language)
3세대 : High Level Language(ex : C언어)
(3.5세대? : 절차 지향Procedure 언어)
4세대 : Non-procedure language(ex : SQL)
그냥 교양적 내용이니 별 신경쓰지 않아도 된다.
보통 DB, DBMS를 혼용해서 사용하는 경우가 많은데, 엄연히 다른 용어다.
Database는 HW에 존재하며, 상호 연관적(Inter-related) 데이터의 집합이다.
Database와 DB에 접근하기 위한 프로그램을 통틀어 DBMS(DataBase Management System)라고 한다.
즉 DB와 프로그램의 사용을 편리하게 하는 것이 DBMS라는 것.
※ 접근(Access)?
앞으로 많이 나오는 단어다. DB쪽에서 접근이라는 단어는 다음 작업들을 가리킨다.
INSERT(삽입), DELETE(삭제), UPDATE(갱신), RETRIEVE(읽기)
DBMS와 대비되는 것으로 파일 시스템(File System)이 있다. 대충 비교하자면 다음과 같다.
File System | Database system |
- 개인의 용도 - 데이터 중복(Data Redundancy) 발생 - 데이터 불일치(Data Inconsistency) 발생 - 프로그램 개발이 어렵다 - 데이터 고립(Isolation) 발생 : 데이터가 업무에 종속된다 - 새로운 제약 조건을 걸기 어렵다 - 갱신의 원자성 - 다수 사용자의 접근에 대한 동시성 문제 발생 - 보안 빈약 |
- 다수의 상호/공통 용도 - 통제된 최소한의 중복(Controlled minimal redundancy) - 무결성 제약조건(Integrity Constraints) : 데이터 정확성을 위해 걸어놓는 제약 |
생소한 용어가 꽤 있다. 나중에 다시 나오는 용어들이니 그때 설명하겠다.
DBMS를 사용하는 이상, 사용자가 기대하는 가장 대표적인 성질은 투명성(Transparency)이다.
투명성(Transparency)?
-> 복잡한 내부 구조를 모르더라도 사용자가 사용하는데 어려움이 없도록 하는 성질.
-> 복잡한 부분은 SW에 맡기고, 사용자는 논리적(Logical) 생각만 하면 된다.
그래서, 사용자가 해야 할 논리적 생각이라는 것은 무엇인가?
바로 DB의 구조를 짜는 생각이다.
DB의 구조는 대충 위와 같다. 각 용어의 의미는 그대로 해석해도 대충 들어맞는다.
왜 나누냐고? 보안 목적이라고 한다.
View Level은 사용자에게 어떻게 보이느냐를, Logical Level은 DB의 논리 구조가 정의되는 부분을 의미한다.
Physical Level도 그냥 HW상의 Index, Address, 용량 등의 물리적 정보를 담고 있는 물리적 레벨이라고 생각하면 된다.
(Schema : 대충 골격/Type/형태 라는 의미로 받아들이면 된다)
반복해서 말하지만, 사용자가 DB 전체를 알 필요는 없다.
위 그림에서 각 Level 사이의 부분도 SW가 알아서 해준다. 그 SW가 어떻게 굴러가는지는 우리가 알 필요 없다.
어쨌건 DB의 구조가 저렇다는 것은 알겠는데, 그래서 어떻게 저 구조를 짜는가?
1. DBA(DB Administrator)가 DB 전체의 논리/물리 구조를 정의한다.
2. DDL(데이터 정의 언어. Data Definition Language)로 해당 정의를 기술한다.
DDL로 기술된 정보(DDL Source)는 DDL Conpiler를 통해 Data Dictionary에 저장된다.
(아마 저 Data Dictionary가 가장 많이 접근될 것이다)
그 다음에는 DML(데이터 조작 언어. Data Manipulation Language)로 프로그램(DML Source Program)을 작성/실행한다.
DML Compiler가 Data Dictionary에서 논리/물리 구조를 판별 후 해당 프로그램으로 객체(Object)를 만든다.
(Source Program은 사용자가 이해하는 것이고, Object는 컴퓨터가 이해하는 것)
SQL(Structure Query Language)은 위와 같은 DDL/DML의 기능을 모두 가진 언어다.
예를 들어, CREATE TABLESPACE computer라는 쿼리를 실행하면, 특정 경로에 dbf 파일이 정해진 용량을 가지고 만들어진다.즉, DB가 실제로는 파일로 존재한다는 것. 실질적 입출력은 OS가 담당한다. 그래서 DB와 OS의 관계가 중요하다는 것.
DB의 특징으로는 Data Independence가 있다.
Physical : Logical 구조의 변화 없이 Physical 구조의 수정이 가능하다.
Logical : DB에서는 Physical 구조의 변화가 Logical(프로그램) 구조에 영향을 미치지 않는다.
요약하자면 처음 구축할 때 신중하게 구축하라는 것.
'DB' 카테고리의 다른 글
생활코딩 - DATABASE1 강의 정리 (0) | 2022.10.01 |
---|---|
데이터베이스 (2) (1) | 2022.08.17 |
데이터베이스 (0) (0) | 2022.08.17 |
댓글