Post

파일시스템과 데이터베이스: 차이점과 핵심 개념 정리

파일시스템과 데이터베이스의 차이점

파일시스템

과거에는 데이터를 관리하기 위해 파일시스템을 사용하였습니다. 파일 시스템은 데이터를 파일로 관리할 수 있도록 파일 생성/삭제/수정/검색 기능을 제공하며 운영체제와 함께 설치됩니다. 파일시스템 환경에서는 응용 프로그래머가 파일의 논리적인 구조뿐만 아니라, 물리적인 구조까지 정확히 파악해야 필요한 데이터에 직접 접근하여 처리하는 응용프로그램을 개발할 수 있었습니다. image

물론 별도로 구매하지 않아도 된다는 장점이 있었지만 응용 프로그램마다 파일을 따로 유지해야하기 때문에 아래와 같은 문제점을 가지고 있습니다.

  1. 같은 내용의 데이터가 여러 파일에 중복 저장된다.
    • 데이터가 중복되면 저장 공간 낭비되고 데이터 일관성과 무결성을 유지하기가 어렵습니다.
    • 데이터를 통합해서 중복성을 해결할 수 있지만 다른 문제가 남아 있습니다.
  2. 응용 프로그램이 데이터 파일에 종속적이다.
    • 응용 프로그램이 파일에 직접 접근하여 데이터를 처리해야하므로 파일 데이터를 구성하는 방법이나 물리적인 저장 구조에 맞게 작성되어야 하기 때문에 데이터 종속성을 갖습니다.
    • 파일을 사용하는 응용프로그램이 많거나 파일의 구조가 자주 변경되면 관리가 힘들어집니다.
  3. 데이터 파일에 대한 동시 공유, 보안, 회복 기능이 부족하다
    • 일반 파일 시스템에서는 응용 프로그램에서 사용중인 파일을 다른 응용 프로그램이 접근하여 사용할 수 있는 동시 공유 기능을 제공하지 않습니다.
    • 파일 시스템에서는 사용자에게 파일 단위로 읽기,수정,실행 권한을 부여합니다. 하지만 데이터 보안에 대한 요구가 더욱 세부화되어 파일안 레코드나 필드에 대한 접근 통제가 가능해야 합니다.
    • 파일을 사용하는 도중에 장애가 발생하면 데이터를 일관된 상태로 회복하기가 어렵습니다.

데이터베이스 관리 시스템

앞서 살펴본 파일시스템의 문제점을 해결하기 위해 데이터베이스 관리시스템이 필요하게 되었습니다.

데이터베이스 관리 시스템은 데이터를 데이터베이스에 통합하여 저장합니다. 또한, 응용 프로그램을 대신하여 데이터베이스에 존재하는 데이터의 검색/삽입/삭제/수정을 하고, 모든 응용 프로그램이 데이터베이스를 공유할 수 있도록 합니다. 추가로 동시 공유, 보안, 회복에 대한 기능을들 제공합니다.

image

위와 같은 구조를 통해 사용자/응용 프로그램은 데이터베이스의 물리적 저장 구조나 데이터 접근 및 처리 방법등을 자세히 알 필요가 없어지게 되었습니다. 즉, 데이터베이스 구조나 접근 방법 등이 변경되어도, 사용자가 미리 알거나 응용 프로그램을 변경할 필요가 없어 데이터 독립성이 확보 됩니다.

데이터베이스

여기서 데이터베이스는 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합을 의미합니다.

데이터베이스의 특징

데이터베이스는 개념 4가지는 아래와 같습니다

  1. 통합된 데이터(Integrated Data)
    • 데이터를 통합하는 개념으로, 각자 사용하던 데이터의 중복을 최소화하여 중복으로 인한 데이터 불일치 현상을 제거합니다.
  2. 저장된 데이터(Stored Data)
    • 디스크, 테이프와 같은 컴퓨터 저장 장치에 저장된 데이터를 의미합니다.
  3. 운영 데이터(Operational Data)
    • 조직의 목적을 위해 사용되는 데이터를 의미합니다.
  4. 공유 데이터(Shared Data)
    • 공동으로 사용되는 데이터를 의미합니다.

데이터베이스는 다음 4가지 특징이 있습니다.

  1. 실시간 접근성(RealTime Accessibility)
    • 데이터베이스는 실시간으로 서비스됩니다. 사용자가 데이터를 요청하면 수 초내에 결과를 서비스합니다.
  2. 계속적인 변환(Continuous Change)
    • 데이터베이스에 저장된 내용은 어느 한 순간의 상태를 나타내지만, 값은 시간에 따라 항상 바뀝니다.
  3. 동시 공유(Concurrent Sharing)
    • 데이터베이스는 서로 다른 업무 또는 여러 사용자에게 동시에 공유 됩니다.
  4. 내용에 따른 참조(Reference by content)
    • 데이터베이스에 저장된 데이터는 데이터의 물리적인 위치가 아니라 데이터 값에 따라 참조됩니다.

DBMS특징

DBMS

데이터베이스는 데이터베이스를 관리하며 응용 프로그램들이 데이터베이스를 공유하며 사용할 수 있는 환경을 제공하는 소프트웨어입니다. 파일시스템의 중복성과 종속성 문제하고, 권한/보안/복구 등의 기능을 제공합니다.

DBMS 필수기능

  1. 정의 데이터 타입과 구조, 저장될 때 제약 조건등을 명시하는 기능입니다. 원하는 데이터와 데이터의 관계를 명확하게 명세 할 수 있어야 합니다.
  2. 조작 데이터 검색/수정/삽입/삭제 연산을 위한 사용자와 데이터베이스 사이의 인터페이스를 제공합니다.
  3. 제어 데이터 처리 작업이 정확하게 수행되어 데이터의 무결성이 유지되도록 제어되어야 합니다. 또한, 정당한 사용자만 허가된 데이터에 접근할 수 있도록 권한을 검사합니다. 여러 사용자가 데이터베이스에 동시에 접근할 경우, 데이터를 처리할 때 결과가 항상 정확성을 유지할 수 있도록 Concurrency Control을 할 수 있어야 합니다.

DBMS 특징

특징은 아래와 같습니다.

  1. 무결성 : 부적절한 자료가 입력되어 동일한 내용에 대해 서로 다른 데이터가 저장되는것을 허용하지 않아야 하빈다.
  2. 일관성 : 삽입, 삭제 , 갱신 , 생성후에도 저장된 데이터가 모순이 없고 동일한 규칙내에 일정해야합니다.
  3. 회복성 : 장애가 발생했을때 특정 상태로 복구되어야합니다.
  4. 보안성 : 불법적인 노출과 변경으로부터 보호해야합니다.
  5. 효율성 : 응답시간 , 저장곤간 활용들이 최적화 되어야합니다.

단점으로는 DBMS를 구축하고 관리하는데 비용이 들어가며 유지를 하기 위한 전문가가 필요합니다.

3계층 스키마

스키마란?

스키마(Schema)는 데이터베이스에서 데이터 구조와 개체 간의 관계를 정의하는 논리적인 설계 도구입니다. 스키마는 데이터베이스 내의 테이블 ,열(속성), 관계, 제약 조건 및 다른 데이터베이스 개체에 대한 구조적 정의를 제공합니다. 데이터베이스 관리 시스템(DBMS)에서 데이터의 정확성과 일관성을 유지하기 위한 중요 중 하나입니다.

3단계 데이터베이스 구조

사용자,설계자,개발자가 데이터베이스를 보는 관점에 따라 데이터베이스를 기술하고, 이들의 관계를 정의한 ANSI 표준입니다. 독립성을 확보하면 데이터 복잡도 증가,데이터 중복 제거,사용자 요구사항 변경에 따른 대응력이 향상되고 관리 및 유지보수 비용 절감 등의 장점이 있습니다.

  • 3계층 스키마의 독립성 :
    • 논리적 독립성(저장 구조가 변경되어도, 개념스키마에 영향이 없음)
    • 물리적 독립성(데이터베이스 논리적 구조가 변경되어도 응용 프로그램에 변화 없음
  • 3층 스키마 구조
    1. 외부 스키마 : 관련 데이터의 뷰를 표시하고, 응용프로그램이 접근하는 데이터베이스를 정의합니다.
    2. 개념 스키마 : 데이터 모델을 사용하여 데이터베이스의 전체 구조를 설계하며, 테이블 간의 관계, 기본키, 외래키 등을 정의합니다. 데이터베이스 시스템의 논리적 설계를 나타내며 모든 외부 스키마에서 공유되는 중요한 부분입니다.
    3. 내부 스키마 : 개발자 관점, 데이터베이스의 물리적 저장 구조를 정의합니다. 데이터베이스 파일의 구조, 인덱스, 저장 위치 등과 같은 물리적 세부 정보가 포함됩니다.

      데이터 독립성

      데이터 독립성이란 데이터의 논리적 구조나 물리적 구조가 변경되더라도 응용 프로그램이 영향을 받지 않는 것을 뜻합니다. 데이터 독립성은 크게 두 가지 유형으로 나눌 수 있습니다.

  1. 논리적 독립성 (Logical Data Independence)
    1. DBMS가 데이터베이스의 논리적 구조를 변경시키더라도, 기존 응용프로그램에 영향을 주지 않는 것입니다.
    2. DBMS가 하나의 논리적 데이터 구조를 가지고 많은 응용 프로그램들이 제각각 요구하는 다양한 형태의 데이터구조로 맵핑 시켜줄 수 있는 상황이여야 가능합니다.
    3. 데이터베이스 시스템에서 데이터 모델을 변경하거나 새로운 뷰를 생성할 때 중요합니다.
  2. 물리적 독립성 (Physical Data Independence)
    1. DBMS가 응용 프로그램이나 데이터베이스의 논리적 구조에 영향을 주지 않고 데이터의 물리적 구조를 변경시킬 수 있는 것입니다.
    2. DBMS가 하나의 논리적 데이터 구조를 가지고 여러 개의 상이한 물리적 구조를 지원할 수 있는 맵핑이 가능한 상황이여야 합니다.

image

RDBMS

관계형 데이터베이스시스템은 데이터를 테이블 형식으로 구조화하고 관리하는 데이터베이스 관리 시스템의 한 유형입니다. 관계형 데이터 모델을 기반으로 하며, 테이블 간의 관계를 사용하여 데이터를 구성하고 관리합니다.

다음과 같은 특징이 있습니다.

  1. 테이블 구조 : 데이터를 테이블로 구조화하며 각 테이블은 행과 열로 이루어져 있습니다. 행은 레코드를 나타내고 열은 레코드의 속성입니다.
  2. 스키마 : 데이터베이스 구조를 정의합니다.
  3. SQL : SQL을 사용하여 데이터 조회/삽입/수정/삭제 합니다.
  4. 데이터 무결성 : 데이터 무결성을 보장하기 위해 다양한 제약 조건을 지원합니다.
  5. 트랜잭션 관리 : 데이터베이스에서 여러 작업을 안전하게 수행하고 롤백을 지원합니다.

릴레이션 스키마와 릴레이션 인스턴스

  • 스키마 : 데이터베이스 테이블의 구조를 정의하는데 사용됩니다. 스키마는 테이블의 이름, 열(속성)의 이름, 데이터 유형 및 제약조건을 나타냅니다.
  • 인스턴스 : 테이블에 저장된 실제 데이터의 집합을 나타냅니다. 각 릴레이션 인스턴스는 테이블의 한 행(레코드)에 해당하며, 열(속성)의 값으로 구성됩니다.
    • 행은 튜플이고, 튜플은 릴레이션 인스턴스의 각각의 행을 나타냅니다. 튜플이 가지는 속성의 개수는 스키마의 차수와 동일합니다.

릴레이션의 차수와 카니널리티

  • 차수(Degree) : 해당 릴레이션에 포함된 열(속성)의 수
    • 릴레이션 차수 5 = 5개의 열
  • 카디널리티(Cardinality) : 하나의 릴레이션에서 튜플의 전체 갯수
    • 릴레이션 카디널리티 1000 = 1000개 고객정보 레코드

      슈퍼키, 후보키, 기본키, 대리키, 외래키

  • Super Key : 각 row를 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합입니다. 유일성만 만족하면 슈퍼키가 될 수 있습니다.
    • (학번), (주민번호), (학번 + 이름) …
  • Candidate Key : Super Key중에서 더 이상 쪼개질 수 없는 Super Key입니다. 각 row를 유일하게 식별할 수 있는 최소한의 속성들의 집합입니다.
    • (학번), (주민번호)
  • Primary Key : Candidate Key 중에서 선택한 main key입니다. 기본키는 Null을 가질 수 없고, 중복된 값을 가질 수 없습니다. table당 1개만 지정합니다.
  • Alternative Key : 후보키가 2개 이상일 경우, 기본키로 지정 되지 못하고 남은 후보키를 뜻합니다.
  • Foreign Key : 다른 table의 primary key column과 연결되는 table의 column을 의미합니다.

    무결성 제약조건(도메인 무결성, 개체 무결성, 참조 무결성)

    무결성이란

    무결성이란 데이터가 정확하고 일관되게 유지하고 보증하는 것을 뜻합니다. 무결성 제약 조건은 데이터베이스의 일관성, 정확성을 유지하고 부정확한 데이터의 삽입, 갱신, 삭제를 방지하는데 중요한 역할을 합니다.

개체 무결성

테이블 내의 각 행이 고유한 식별자(기본키)를 가져야하고, 이 식별자는 NULL 값이 되어서는 안됩니다. 개체 무결성을 준수해야 데이터 무결성을 유지하고 추가,수정,삭제 등 데이터 조작이 일관된 상태로 수행될 수 있습니다.

참조 무결성

외래키는 참조하는 테이블의 기본키 값을 가리켜야 합니다. 데이터의 무결성과 관계의 일관성을 보장합니다.

도메인 무결성

각 열(속성)의 값은 도메인에 속한 값이어야 합니다.

고유 무결성

특정 열(속성)에 중복된 값을 허용하지 않음을 뜻합니다.

NULL 무결성

특정 열이나 속성에 대한 NULL 값의 허용 여부를 나타냅니다.

키 무결성

테이블 내의 Primary Key 및 Candidate Key에 대한 제약을 나타냅니다. 기본키는 각 행을 고유하게 식별하며, 후보키는 테이블 내의 각 행을 식별하는데 사용될 수 있는 열(속성) 집합입니다. 키 무결성을 통해 기본키와 후보키가 유일하고 NULL이 아닌 값을 가지는 것을 보장합니다.

사용했던 데이터베이스에 대해서

  • MariaDB
  • MongoDB

참고

Notion SQLD 정리

https://terms.naver.com/list.naver?cid=58430&categoryId=58430)

데이터베이스

데이터 베이스 개념 특징

데이터베이스 관리 시스템(DBMS)이란?

This post is licensed under CC BY 4.0 by the author.