본문 바로가기

DataBase

[Database]데이터베이스란?

반응형

사전지식

  • 정의
    • 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블
  • 특징
    • 뷰는 기본테이블로부터 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 사용하며, 조작도 기본 테이블과 거의 같다.
    • 기본 테이블의 기본키를 포함한 속성(열) 집합으로 뷰를 구성해야지만 삽입, 삭제, 갱신이 가능하다.

DDL(Data Definition Language) 데이터 정의어

  • create : 데이터베이스, 테이블등을 생성
  • alter : 테이블을 수정
  • drop : 데이터베이스, 테이블을 삭제
  • truncate : 테이블을 초기화

DML(Data Manipulation Language) 데이터 조작어

  • select : 데이터 조회
  • insert : 데이터 삽입
  • update : 데이터 수정
  • delete : 데이터 삭제

DCL(Data Control Language) 데이터 제어 언어

  • grant : 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 부여
  • revoke : 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 박탈, 회수
  • commit : 트랜잭션의 작업을 저장
  • rollback : 트랜잭션의 작업을 취소, 원래대로 복구

최종 사용자 (End User)

초보 사용자

  • 이미 만들어진 응용 프로그램을 이용하여, 데이터를 다루는 업무를 하는 사람
  • 자신이 DBMS를 이용하는지 알지 못한다.

캐주얼 사용자

  • 데이터베이스 언어(예:SQL)를 사용하여 데이터 검색, 데이터 분석, 통계 처리 등의 업무를 하는 사람
  • 응용 프로그램으로 구현되어 있지 않은 업무를 데이터베이스 언어를 사용하여 처리
  • 주로 데이터 조작어 사용

응용 프로그래머 (Application Programmer)

  • 일반 사용자가 사용할 수 있도록 프로그램을 만드는 사람
  • 프로그래밍 언어(예: 자바, C)와 데이터베이스 언어(예:SQL)을 사용하여 일반 사용자를 위한 사용자 인터페이스와 데이터를 관리하는 응용 프로그램을 개발한다.
  • 주로 데이터 조작어 사용
  • 직접 DATABASE 접속

데이터베이스 관리자(DBA, DataBase Administrator)

  • 데이터베이스 시스템을 운영 및 관리하는 사람
  • 데이터베이스 스키마 정의, 물리적 저장 구조와 접근 방법결정, 보안 및 접근 권한 정책 결정, 백업 및 회복 기법 정의, 시스템 성능 분석 등의 업무를 하는 사람
  • 주로 데이터 정의어, 데이터 제어어 사용

DataBase의 탄생 이유

파일시스템의 한계

Image

데이터 종속성 (Data Dependency)

  • 데이터를 사용하는 프로그램의 구조가 데이터 구조의 영향을 받음

데이터 무결성 침해 (Data Integrity)

  • 저장된 데이터의 내용이 처음에 의도했던 데이터의 형식, 범위를 준수해야 함
  • 무결성 유지를 위한 유효성검사는 프로그래머의 업무였음

데이터 중복성 (Data Redundancy)

  • 같은 내용의 데이터가 여러 공간에 저장 될 가능성이 있음
    • 필요한 데이터를 각각 만들어 사용하는 경우

데이터 불일치 (Data Inconsistency)

  • 데이터 중복성 사례로 인해 데이터의 불일치 발생

데이터 표준화의 어려움 (Data Standardization)

  • 데이터가 표준화 되어 있지 않으면 제 3자가 프로그램을 이해하기 어렵고, 호환성 문제가 발생할 수 있습니다.

데이터 보안성 (Data Security)

  • 데이터가 저장되어 있는 파일이 잘 알려진 형식으로 저장된다면 별다른 노력 없이 파일을 열어 내용을 확인할 수 있습니다.

DataBase란?

Image

  • 데이터들의 집합
  • 여러 사람이 공유하여 사용할 목적으로 체계화된 시스템
  • 직접적인 접근이 아닌, DBMS를 통한 접근

1. 스키마

ImageImage

  • 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의
  • 데이터베이스에 어떤 데이터가 어떤 형태와 관계로 저장될 지를 정의한 것

외부 스키마(외부 단계) (External Schema)

  • 사용자나 애플리케이션이 데이터를 보는 관점. 이 계층은 사용자에게 필요한 데이터만 보여줍니다.
  • 실제 사용자(개발자)의 DML 작업등이 이루어진 단계

논리적 스키마(개념 단계) (Logical Schema)

  • 데이터베이스의 전체 논리적 구조를 정의하는 계층으로, 테이블, 뷰, 인덱스 등이 포함.
  • 이 계층이 논리적 데이터 독립성을 제공합니다.

물리적 스키마(내부단계) (Physical Schema)

  • 데이터가 실제로 저장되는 방식, 즉 파일의 배치, 인덱싱 방법 등을 정의하는 계층입니다.
  • 이 계층이 물리적 데이터 독립성을 제공합니다.

1-1. 데이터 독립성

논리적 데이터 독립성

  • 데이터베이스의 논리적 구조가 변경되어도 외부스키마에 영향을 끼치지 않는 것
  • Exam ) 테이블의 구조 변경(정규화, 반정규화, 컬럼 수정)
  • 테이블의 변경이 일어나도 기존의 트랜잭션을 유지
    • 만약 컬럼 삭제에 대한 DDL 작업을 진행 후에 트랜잭션을 처리한다면?
      • 해당 쿼리는 수행될수 없으며, 트랜잭션 원칙에 따라 Rollback Work 수행
      • 이 케이스도 트랜잭션 ACID 원칙에 따라 Rollback이 수행된 것이기에
        정상적으로 처리되었다 볼 수 있음

물리적 데이터 독립성

  • 데이터의 물리적 저장 방식이나 저장 장치 등이 변경되어도, 개념 스키마에 영향을 주지 않는 특성
  • Exam ) 데이터를 저장하고 있던 물리적 장소(HDD)가 변경되어도 어플리케이션에 영향을 끼치지 않음

어떻게 논리적 데이터 독립성을 보장하는가?

뷰 사용

  • 뷰는 실제 데이터가 저장된 테이블이 아니라, 특정 질의를 통해 생성된 가상의 테이블
    사용자가 뷰를 통해 질의를 실행하면, DBMS는 해당 뷰의 정의를 기준으로 실제 테이블에서 데이터를
    가져옵니다.
  • 테이블 구조가 변경되더라도, 뷰의 정의를 적절히 수정하면 기존 애플리케이션 코드나 질의가 그대로 작동할 수 있습니다.

질의 재작성 (Query Rewriting)

  • DBMS는 내부적으로 질의를 실행하기 전에, 해당 질의를 데이터베이스 구조에 맞게 재작성할 수 있습니다. 예를 들어, 테이블에 새로운 컬럼이 추가되거나 기존 컬럼의 이름이 변경되었을 때, DBMS는 기존 질의를 새로운 구조에 맞게 자동으로 변환합니다.
  • Exam) 만약 질의가 SELECT * FROM students;이고, students 테이블에 새로운 컬럼이 추가되었다면, DBMS는 이 질의를 업데이트된 테이블 구조에 맞춰 처리할 수 있습니다.

이러한 매커니즘 덕분에 DBMS는 테이블 구조가 변경되더라도 기존 질의가 문제없이 실행될 수 있도록
논리적 데이터 독립성을 제공할 수 있습니다.

궁금증

  • 테이블의 구조 변경(정규화, 비정규화, 컬럼 삭제, 제약 조건 수정 등) 후
    DML문 실행 시 어떻게 외부 스키마에 영향을 끼치지 않는가?
  • 외부 스키마는 DML를 할 수 있는 단계인데 테이블의 구조가 변경되는 DDL를 수행하면
    당연히 외부스키마에 영향이 끼치지 않는가?
  • 뷰를 사용하지 않고 SELECT FROM 테이블 쿼리를 실행한다면 논리적 데이터 독립성을
    보장받지 못하는가?
  • 외부 스키마에서 이야기하는 최종 사용자는 웹 사이트를 이용하는 Client(사용자)인가?
    또는 DBMS를 통해 데이터 질의를 진행하는 개발자(사용자)인가?
    • 데이터베이스 관점에서 보자면 두 역할 모두 엔드포인트로 보는 것 같음
    • 그러므로 최종 사용자(End User), 응용프로그래머(Application programmer)들은 외부스키마의
      영역
  • 결국 각 계층 간의 독립성 보장은 사상(매핑)을 통해 보장이 되나, 명확한 예시가 없음

알고 있어야 할 사항

  • 개념 스키마를 설명할 때 하나의 테이블로 이해하다 보니 테이블에 대한 변경 점은 개념 스키마로
    생각할 수 있으나 질의어는 ****외부 스키마 영역
  • 데이터 질의어는 외부 스키마와 개념 스키마의 영역으로 해석된다.
    • DDL, DCL등은 개념스키마, DML를 외부 스키마 영역으로 본다.

DBMS (DataBase Management System)

  • 데이터베이스를 조작하는 소프트웨어
  • DBMS는 데이터를 한곳에 모은 저장소를 만들고 그 저장소에 여러 사용자가 접근하여 데이터를 저장 및
    관리 등의 기능을 수행하며 공유할 수 있는 환경을 제공하는 응용 소프트웨어 프로그램입니다.

DBMS의 특징

데이터의 독립성

  • DBMS는 데이터와 응용 프로그램을 분리하여, 데이터의 구조위치가 변경되어도 응용 프로그램에 영향을 주지 않습니다.

데이터의 일관성

  • DBMS는 데이터의 중복을 최소화하고, 데이터 간의 관계를 정의하여, 데이터의 불일치나 오류를 방지합니다.

데이터의 효율성

  • DBMS는 데이터를 적절한 구조로 저장하고, 색인(INDEX)이나 캐시 등의 기법을 사용하여, 데이터의 접근과 처리를 빠르고 정확하게 수행합니다.

데이터의 보안성

  • DBMS는 사용자나 권한에 따라 데이터에 대한 접근을 제어하고, 암호화나 인증 등의 방법으로 데이터를 보호합니다.

데이터의 신뢰성

  • DBMS는 트랜잭션 처리와 복구 기능을 통해, 데이터의 정확성과 일관성을 유지합니다.복구는 시스템 장애나 오류가 발생했을 때, 데이터베이스를 이전의 정상 상태로 되돌리는 과정입니다.
  • 트랜잭션은 데이터베이스에 대한 하나 이상의 연산으로 구성된 논리적인 작업 단위입니다.

DBMS의 종류

DBMS 제작사 작동 운영체제 기타
MySQL Oracle Unix, Linux, Windows, Mac 오픈 소스(무료), 상용
MariaDB MariaDB Unix, Linux, Windows 오픈 소스(무료), MySQL 초기 개발자들이 독립해서 만듦
PostgreSQL PostgreSQL Unix, Linux, Windows, Mac 오픈 소스(무료)
Oracle Oracle Unix, Linux, Windows 상용 시장 점유율 1위
SQL Server Microsoft Windows 주로 중/대형급 시장에서 사용
DB2 IBM Unix, Linux, Windows 메인프레임 시장 점유율 1위
Access Microsoft Windows PC용
SQLite SQLite Android, iOS 모바일 전용, 오픈 소스(무료)

트랜잭션의 특성(ACID)

원자성(Automicity)

  • 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다. (All or Nothing)

일관성(Consistency)

  • 트랜잭션이 실행 되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면
  • 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다.

고립성(Isolation)

  • 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.

지속성(Durability)

  • 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.

출처

DataBase,FileSystem

[데이터베이스기초] 2주차 - 데이터베이스 시스템

Schema

[DB] 3단계 데이터베이스-외부/개념/내부스키마

[DB] 데이터 독립성 과 스키마

트랜잭션(ACID)

DB- 트랜잭션의 4가지 특성(ACID)

create : 데이터베이스, 테이블등을 생성alter : 테이블을 수정drop : 데이터베이스, 테이블을 삭제truncate : 테이블을 초기화

반응형

'DataBase' 카테고리의 다른 글

[Spring] MyBatis Mapper Bean NotFound  (0) 2023.06.01
[Redis]Redis Pub/Sub과 Redis Stream의 차이점  (0) 2023.01.28