본문 바로가기

CS/데이터베이스 DB

[데이터베이스] 데이터베이스(database)

1. 데이터베이스(database)

   1) 데이터베이스란?

      - 데이터를 조직적으로 잘 모아 놓은 것.

      - 약자인 DB로 통용된다.

      - 데이터 기지, 데이터 창고라고 할 수 있다.

   2) 데이터베이스의 목적

      - 프로그램과 연동하여 필요한 데이터를 추가, 수정, 삭제, 검색하기 위해서.      

      - 데이터베이스는 아주 많은 데이터(백만, 천만 단위의 데이터)를

         얼마나 효율적으로 처리하느냐가 관건이다.

         여기서 효율적이라는 것은 데이터를 저장할 때 더 적은 공간에 저장하는 공간 효율을 뜻한다.

         불필요하게 중복되는 것을 빼고 가장 효율적으로 저장하는 것이 데이터베이스의 주 목적이다.

    3) 데이터베이스의 모델

      -  데이터베이스도 다양한 형태의 데이터 모델이 있다.

         계층형, 관계형, 객체지향, XML 데이터베이스 등등

         그 중 가장 많이 사용하는 데이터 모델은 관계형 데이터베이스(relational database) 모델이다.

      - 관계형 데이터베이스는 관계 대수(relational algebra)에서 착안하였다.

         관계 대수라는 것은 행과 열을 가진 표(table)를 의미한다.

         즉 표 형태로 데이터를 관리하는 것을 관계형 데이터베이스라고 한다.

 

2. DBMS(database management system)

    1) DBMS란?

        데이터베이스 관리 프로그램

        대표적으로 오라클, Mysql, MS-SQL, Access, 큐브리드, 알티베이스 등이 있다.

        하지만 DBMS가 데이터베이스의 모든 이론을 완전히 구현한 프로그램은 아니다.

    2) DBMS를 쓰는 이유

        운영체제가 직접적으로 데이터베이스를 지원하지 않으니까

        DBMS와 같은 프로그램 혹은 프로그램 패키지를 통해

        사람이 데이터베이스를 다루고 있는 것처럼 보이게 할 수 있다.

        

3. DBMS 계층

    1) 응용 계층(Application Level)

       - 사용자는 데이터베이스를 다루고 있다고 생각하게 한다.

       - view level이라고도 한다.

       - 데이터베이스를 제어하는 언어인 SQL을 이용해서 데이터를 검색, 입력, 수정, 삭제한다.

   2) 논리 계층(Logical Level)

       - DBMS

       - 사용자에게 데이터베이스와 같은 형태를 보여주고 실제 데이터는 파일 형태로 관리

   3) 물리 계층 (Phsical Level)

       - 파일 시스템(file system)

       - OS에서 실제로 데이터를 관리하는 형태

 

4. 파일 시스템의 단점

    1) 데이터 중복(Data Redundancy) 문제 

       - 동시에 여러 곳에서 같은 데이터를 작업할 때

         파일 시스템은 파일을 여러 곳에 나누어서 각각 데이터를 관리하게 된다.

         이는 데이터 불일치(Data Inconsistency)를 일으킬 수 있다.

         데이터베이스는 이런 문제를 해결할 수 있다.

      - 만약 네트워크를 통해서 모두 파일을 공유한다면?

         네트워크 상에서 다른 사람이 파일을 열면 읽기 전용으로 열리며 파일 전체에 lock이 걸린다.  

         lock의 단위가 너무 커서 다른 사람이 그 데이터를 쓰지 못하게되므로 불편하다.

   2) 데이터 처리(Data Processing) 문제

      - 파일 데이터를 검색 또는 수정하려면 까다롭다.

        (데이터 파싱, 파일의 정확한 위치 찾기, 데이터가 어떻게 적혀있나 정확히 알아야 하는 등..) 

         데이터베이스는 SQL이라는 간단한 언어로 더 쉽게 처리할 수 있다.

   3) 데이터 무결성(Data Integrity) 문제

      - 무결성 : 데이터가 결점 없이 유지하는 것.

      - 파일 시스템은 다양한 형태의 데이터를 저장할 수는 있지만 데이터 무결성을 보장하지는 못한다. 

      - 데이터 불일치 역시 결점이므로 무결성의 한 요소이다.

      - 데이터베이스는 여러가지 제약조건을 통해 무결성을 지원한다.

        (물론 완벽한 무결성은 없다.)

 

5. 데이터베이스의 데이터 무결성

   1) 원자성(Atomicity)

      - 처리 작업은 여러 단계이지만 실제의 작업은 하나의 일인 경우

        한 덩어리의 일로 처리될 수 있게 한다.

      - 데이터베이스의 트랜잭션 개념이 이러한 원자성을 지원한다.

   2) 동시성 제어(Concurrency Control)

      - 동시에 일을 하면서 데이터는 불일치가 발생하지 않게 한다.   

        데이터베이스는 동시에 여러가지 일이 한 데이터 안에서 이루어질 때 적절한 규모로 lock을 걸 수 있다.

        반면 파일은 데이터 전체에 lock을 건다.

        ex) 좌석 예약하는 데 두 사람이 동시에 한 좌석을 예약할 때? 남은 좌석에 lock을 걸어야 한다.

   3) 보안(Security)

      - 파일은 파일 단위로 보안 설정을 하는데

        데이터베이스는 좀 더 세세하게 설정이 가능하므로 더 나은 보안 체계를 제공한다.