반응형
사전지식
뷰
- 정의
- 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블
- 특징
- 뷰는 기본테이블로부터 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 사용하며, 조작도 기본 테이블과 거의 같다.
- 기본 테이블의 기본키를 포함한 속성(열) 집합으로 뷰를 구성해야지만 삽입, 삭제, 갱신이 가능하다.
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의 탄생 이유
파일시스템의 한계
데이터 종속성 (Data Dependency)
- 데이터를 사용하는 프로그램의 구조가 데이터 구조의 영향을 받음
데이터 무결성 침해 (Data Integrity)
- 저장된 데이터의 내용이 처음에 의도했던 데이터의 형식, 범위를 준수해야 함
- 무결성 유지를 위한 유효성검사는 프로그래머의 업무였음
데이터 중복성 (Data Redundancy)
- 같은 내용의 데이터가 여러 공간에 저장 될 가능성이 있음
- 필요한 데이터를 각각 만들어 사용하는 경우
데이터 불일치 (Data Inconsistency)
- 데이터 중복성 사례로 인해 데이터의 불일치 발생
데이터 표준화의 어려움 (Data Standardization)
- 데이터가 표준화 되어 있지 않으면 제 3자가 프로그램을 이해하기 어렵고, 호환성 문제가 발생할 수 있습니다.
데이터 보안성 (Data Security)
- 데이터가 저장되어 있는 파일이 잘 알려진 형식으로 저장된다면 별다른 노력 없이 파일을 열어 내용을 확인할 수 있습니다.
DataBase란?
- 데이터들의 집합
- 여러 사람이 공유하여 사용할 목적으로 체계화된 시스템
- 직접적인 접근이 아닌, DBMS를 통한 접근
1. 스키마
- 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의
- 데이터베이스에 어떤 데이터가 어떤 형태와 관계로 저장될 지를 정의한 것
외부 스키마(외부 단계) (External Schema)
- 사용자나 애플리케이션이 데이터를 보는 관점. 이 계층은 사용자에게 필요한 데이터만 보여줍니다.
- 실제 사용자(개발자)의 DML 작업등이 이루어진 단계
논리적 스키마(개념 단계) (Logical Schema)
- 데이터베이스의 전체 논리적 구조를 정의하는 계층으로, 테이블, 뷰, 인덱스 등이 포함.
- 이 계층이 논리적 데이터 독립성을 제공합니다.
물리적 스키마(내부단계) (Physical Schema)
- 데이터가 실제로 저장되는 방식, 즉 파일의 배치, 인덱싱 방법 등을 정의하는 계층입니다.
- 이 계층이 물리적 데이터 독립성을 제공합니다.
1-1. 데이터 독립성
논리적 데이터 독립성
- 데이터베이스의 논리적 구조가 변경되어도 외부스키마에 영향을 끼치지 않는 것
- Exam ) 테이블의 구조 변경(정규화, 반정규화, 컬럼 수정)
- 테이블의 변경이 일어나도 기존의 트랜잭션을 유지
- 만약 컬럼 삭제에 대한 DDL 작업을 진행 후에 트랜잭션을 처리한다면?
- 해당 쿼리는 수행될수 없으며, 트랜잭션 원칙에 따라 Rollback Work 수행
- 이 케이스도 트랜잭션 ACID 원칙에 따라 Rollback이 수행된 것이기에
정상적으로 처리되었다 볼 수 있음
- 만약 컬럼 삭제에 대한 DDL 작업을 진행 후에 트랜잭션을 처리한다면?
물리적 데이터 독립성
- 데이터의 물리적 저장 방식이나 저장 장치 등이 변경되어도, 개념 스키마에 영향을 주지 않는 특성
- 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
Schema
트랜잭션(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 |