2017년 3월 7일 화요일

database(1) - database와 DBMS

database?

: 단지 데이터가 많이 있는 것(ex. 책, 문서, 전화번호부....)
  ==> 컴퓨터와 무관한 데이터들의 구조적 집합이다!

DBMS?

: 데이터 베이스를 컴퓨터 시스템을 통해 관리하는 것(ex. oracle, MySQL...)
  ==> 이 DBMS를 통해 한 데이터 베이스를 수많은 응용 프로그램들이 공유함으로써 
       전사적으로 정보를 관리함.

WHY we need a DBMS?
: 응용 프로그램마다 데이터 베이스를 따로 만들어 줄 수 없기 때문에!
  => why?(데이터베이스를 따로 만들어 줄수 없는 이유)
     1. 데이터의 일관성 문제(Consistency)
        : 데이터를 데이터 베이스마다 따로따로 저장해 두는 경우 데이터들을 일관되게 
         유지하는 것에 어려움이 발생함
         (ex. A 데이터베이스에는 군필로 저장, B데이터 베이스에는 미필로 저장된 경우 
         재입대를 해야할 수 있음)

     2. 데이터의 중복성의 문제(Redundancy)
        : 데이터를 데이터 베이스마다 따로따로 저장해 두는 경우 데이터가 중복되는 
         경우가 발생함
         (ex. A데이터베이스에도 B데이터 베이스에도 동일한 내용이 저장될 수 있음)

     3. 데이터의 접근성의 문제
        : 새로운 프로그램을 만들때 마다 별도의 데이터 베이스를 요구하는 상황이 발생함

     4. 데이터의 종속성의 문제(Dependency)
        : 중속성이 강할 때 프로그램의 변경이나 데이터의 형태 및 종류를 변경하는 경우 
        연관된 모든 프로그램을 변경해야하는 경우가 발생함

     5. 데이터의 독립성의 문제(Isolation)
        : 데이터와 프로그램의 독립성이 약할 경우 하나의 수정 작업이 다른 작업에 영향을
         주는 경우가 발생함

     6. 데이터의 동시사용성의 문제
        : 동시에 일련의 작업들이 이루어지는 경우 올바른 수행이 일어나지 않는 경우가 
         발생함
         (ex. 두 사람이 동시에 한 계좌에서 돈을 인출하는 경우 양쪽에서 인출 될 수 있음)

     7. 데이터의 원자성의 문제
        : 일련의 작업들을 시스템에 문제가 발생한 경우 작업이 취소되는 경우가 발생함
         (ex. 계좌이체 도중 내 계좌에서는 인출이 된 후, 다른 계좌로 입급되기 직전에 
         정전이 일어난다면 이체된 금액이 사라질 수 있음)

     8. 데이터의 무결성의 문제
        : 요구되는 조건에 따라 데이터가 입력되지 않는 경우가 발생함
         (ex. 남자가 M이고 여자를 F로 입력받기로 프로그램을 만들었는데 사용자가 A를 
         입력하는 경우 무결성이 깨질 수 있음)

DBMS는 이러한 문제를 모두 알아서 관리해준다!! 

How can applications use DBMS?
 ==> DBMS의 구조를 통해 알 수 있다.

    1. Physical level : 하나 또는 수많은 하드디스크에 여러 데이터들을 마구 저장한다.

    2. Logical level  : 수 많은 하드에 저장된 데이터들을 물리적 구조 사상에 의해 정갈하게
                          맵핑해준다.

    3. View level : logical에서 필요로 하는 데이터를 논리적 구조 사상에 의해 구분한 뒤 
                     필요한 데이터 만을 응용프로그램에 제공한다.


이러한 이유들로 초기에 데이터 베이스는 위의 모습이었으나



현재에는 위의 모습으로 바뀌어 졌다.

DBMS Architecture
유저
|
프로그램
|
|
|
|
SQL을 실행하는 level --- > view level
|
|
|
블록을 읽고 쓰는 level --- > Logical level
|
|
|
Disk level --- > Physical level
(데이터, 데이터 저장형태(char, int) 등을 저장)



댓글 없음:

댓글 쓰기