Understanding database

Contents

  • 데이터베이스의 등장
  • 파일처리시스템의 문제점

    • 데이터 종속 문제
    • 데이터 중복 문제
    • 무결성 훼손 문제
    • 동시 접근 문제
    • 보안 문제
  • DBMS 특징
  • DBMS 구조
  • 단계 간 사상


데이터베이스의 등장

현재는 데이터의 중요성을 굳이 언급하지 않아도 될 만큼, IT분야 뿐만 아니라 산업 전 분야에 걸쳐 많은 양의 데이터를 소비하고 있습니다. 아래 사진과 같이 사용하는 양의 데이터가 말 그래도 폭발적으로 증가했고, 데이터의 양적 증가로 빅데이터, AI 등의 기술이 파생하기도 했습니다. 때문에, 별도의 관리 장치가 필요하게 되었고 데이터베이스가 등장하게 되었습니다. 그리고, 한 조직 내 다수 사용자가 데이터의 저장 및 공유를 수월하게 할 수 있도록 데이터베이스 관리 시스템(DBMS)이 등장하게 되었습니다.


파일처리시스템의 문제점

DBMS가 있기 전 데이터 관리를 위해 파일처리시스템을 사용했는데, 파일처리시스템은 아래와 같은 문제점이 있었습니다.

  • 데이터 종속 문제
  • 데이터 중복 문제
  • 무결성 훼손 문제
  • 동시 접근 문제

데이터 종속 문제

파일처리시스템으로 애플리케이션 개발 시, 해당 애플리케이션에만 종속되는 파일을 같이 생성하게 됩니다. 해당 프로그램만 데이터의 정보를 알고 구조 변경 시 프로그램 변경으로 이어지기 때문에 유지보수가 어렵습니다. 또한, 파일처리시스템은 OS에 종속되기 때문에, 데이터의 구조 및 디스크 장치, 플랫폼 변경에 따른 수정이 불가피합니다.

데이터 중복 문제

같은 내용의 데이터를 여러 파일에 중복해서 저장할 수 있습니다. 이러한 중복 문제가 발생하면 다음과 같은 문제의 원인이 될 수 있습니다.

  • 데이터의 불일치 및 일관성(consistency) 문제
    중복된 데이터가 많아질수록 모두 같은 값을 유지하기 어렵습니다. 때문에, 데이터의 불일치가 발생할 수 있습니다.
  • 보안성
    논리적으로 동등한 내용의 데이터에 대해 같은 수준의 보안이 유지 되어야 하지만, 이또한 중복된 데이터가 많아질수록 보안성이 떨어질 수 있습니다.
  • 경제성
    중복된 데이터 저장을 위해 저장 공간이 낭비될 수 있고, 일관성 유지를 위한 시스템 갱신 비용이 추가될 수 있습니다.

무결성 훼손 문제

파일처리시스템에서 데이터의 도메인 제약 조건을 강제할 수 없기 때문에, 데이터의 무결성을 보장할 수 없습니다. 또한, 데이터의 무결성을 보장하기 위해 프로그래밍 코드를 추가하게 되면 작업 비용이 증가하고, 유지보수가 어려워집니다. 데이터 중복이 있는 경우에는 일일이 변경하는 것이 어렵기 더 어려워집니다.

동시 접근 문제

파일처리시스템에서는 동시성 제어가 되지 않고, 여러 사용자가 데이터에 접근하게 되면 예측하지 못 한 문제가 발생할 수 있습니다.


DBMS 특징

DBMS는 이러한 문제점을 해결하기 위해 등장하게 되었습니다. 데이터 파일 구조를 프로그램과 분리해서(추상화) 데이터의 종속성 문제를 해결했습니다. 또한, 데이터타입, 저장형식, 제약조건 등의 메타데이터를 시스템 카달로그 또는 데이터 사전에 저장해서ㅓ 데이터에 대한 의미를 관리할 수 있게 되었습니다. 이러한 특징의 데이터베이스의 자기기술성이라 합니다. 마지막으로, DBMS는 데이터의 동시 접근 문제를 해결하기 위해 트랜잭션과 동시성 제어 기능을 제공합니다.

DBMS 구조

DBMS는 여러 사용자가 사용할 수 있고, 대부분의 사용자가 복잡한 내부 구조까지 알 필요가 없기 때문에 데이터 추상화가 돼 있습니다. 그리고, 유연하게 데이터를 저장하고 수정할 수 있도록 데이터 독립성 확보가 필요합니다. 이 데이터 추상화 및 독립성 확보를 위해 DBMS는 아래와 같이 3단계 구조로 돼 있습니다.

내부 단계에서 원시수준의 데이터 구조, 인덱스 유무 등이 정의됩니다. 레코드는 연속적이 Block으로 표현이 되는데, raw level의 저장구조에 대한 구제적 사항을 프로그래머로부터 숨기는 역할을 합니다.

개념단계에서는 개념 스키마(conceptual schema)를 통해 데이터베이스의 전체적인 논리적 구조를 정의합니다. 프로그래머는 이 단계에서 추상화 작업 시 프로그래밍 언어를 사용해 작업합니다.

외부단계는 여러 뷰에 의해 기술되는데, 사용자가 관심을 갖는 일부 데이터만 기술하고 나머지는 은닉하게 됩니다. 이를 통해 복잡한 시스텝 지식 없이 사용자가 데이터에 접근할 수 있습니다.

단계 간 사상

3단계 구조의 각 단계는 mapping을 통해 스키마 간 연결이 됩니다. 개념-내부 사상(mapping)에는 개념 단계의 스키마가 디스크 내 내부 필드와 어떻게 대응하즈닌 정의합니다. 데이터의 디스크 이동이나, 파일구조변경 등이 이루어 져도 개념-내부 사상에만 반영을 해 개념 스키마에는 영향을 받지 않도록 합니다.

이렇게, 외부-개념 사상(mapping)을 통해 논리적 데이터 독립성을 확보하고, 개념-내부 사상(mapping)을 통해 물리적 데이터 독립성을 확보합니다.