Computer Science and Engineering/Database

[DB] 병행 수행(concurrency) 및 병행 제어(concurrency control)
·
Computer Science and Engineering/Database
병행 수행 시 문제 병행 수행(concurrency)은 여러 사용자가 데이터베이스를 동시에 공유할 수 있도록 여러 트랜잭션을 한꺼번에 실행하는 것을 의미하며, 각 트랜잭션은 여러 트랜잭션이 차례로 번걸아 수행되는 인터리빙(interleaving) 방식으로 수행된다. 이러한 환경에서 병행 제어(concurrency control)는 서로 다른 트랜잭션이 동일한 데이터에 접근하여 연산을 수행하더라도 충돌 없이 올바른 결과를 얻을 수 있도록 트랜잭션 실행을 관리하는 작업을 말하며, 동시성 제어라고도 한다.만약 병행 제어가 제대로 이루어지지 않으면 여러 가지 문제가 발생할 수 있는데, 그중 하나가 갱신 분실(lost update)이다. 갱신 분실은 두 개 이상의 트랜잭션이 같은 데이터를 동시에 읽고 수정할 때 ..
[DB] 장애(failure) 및 회복(recovery)
·
Computer Science and Engineering/Database
장애 (Failure) 시스템이 제대로 동작하지 않는 상태를 장애라 하며, 이는 크게 트랜잭션 장애, 시스템 장애, 미디어 장애로 나눌 수 있다. 트랜잭션 장애는 트랜잭션 수행 중 오류가 발생하는 경우로, 트랜잭션 내부의 논리적 오류, 잘못된 데이터 입력, 시스템 자원의 부족, 처리 대상 데이터의 부재 등이 원인이 될 수 있다. 시스템 장애는 하드웨어나 소프트웨어의 결함 등으로 인해 시스템이 정상적으로 동작할 수 없는 상태를 의미하며, 예를 들어 메인 메모리의 정보가 손실되거나 교착 상태가 발생하는 경우가 있다. 미디어 장애는 디스크 장치에 물리적인 결함이 생겨 디스크에 저장된 데이터베이스의 일부 또는 전체가 손상되는 경우를 말한다.트랜잭션이 수행되는 과정은 디스크에서 데이터를 메인 메모리로 불러오고, ..
[DB] 트랜잭션(transaction)
·
Computer Science and Engineering/Database
트랜잭션 (Transaction) 트랜잭션은 데이터베이스 상에서 하나의 논리적 작업 단위로 취급된다. 즉, 개별적인 UPDATE나 CREATE 구문 단위가 아니라, 사용자가 의도하는 전체 작업 흐름을 하나의 묶음으로 보고 처리한다는 뜻이다. 이 단위 안에서는 모든 연산이 한꺼번에 성공하거나, 어느 하나라도 실패하면 전체를 되돌려 장애 상황에서도 불완전한 상태가 남지 않도록 보장한다. 이렇게 하나의 논리적 단위로 처리함으로써 데이터 무결성(integrity)과 일관성(consistency)을 유지할 수 있으며, 동시에 여러 사용자가 접근할 때도 안전하게 작업이 이루어지도록 돕는다.예를 들어 은행에서 이체하는 경우를 생가하자. 만약 A가 B에게 5,000원을 이체한다면 A 계좌에서는 5,000원이 차감되고 ..
[DB] 정규화(normalization) 및 정규형(NF, normal form) 단계
·
Computer Science and Engineering/Database
정규화 (Normalization) 함수적 종속성(functional dependency - 참고링크)을 이용하여 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해하여 이상 현상(anomaly - 참고링크)이 발생하지 못하도록 릴레이션을 만드는 것을 말한다. 즉 기본적으로는 관련이 없는 함수 종속성은 별개의 릴레이션으로 표현한다.이상 현상은 단순히 데이터의 무결성을 해치는 문제도 발생시키지만 중복된 값에 대한 여러 연산을 수행하게 만든다는 점에서 성능 저하도 가져올 수 있어 정규화를 통해 가능한 이상 현상을 방지하는 것이 데이터베이스 성능 부분에서도 도움이 된다.단 정규화를 할 때 분해는 무손실 분해(nonloss decomposition)여야 한다. 즉 릴레이션이 의미상 동등한 릴레이션들로 분해되고,..
[DB] 이상 현상(anomaly) 및 함수적 종속성(FD, functional dependency)
·
Computer Science and Engineering/Database
이상 현상 (Anomaly) 불필요한 데이터 중복으로 릴레이션에 대한 데이터 삽입, 수정 및 삭제 연산을 수행할 때 발생할 수 있는 부작용을 통칭해 말하는 것으로 구체적으로는 삽입 이상(insertion anomaly), 갱신 이상(update anomaly), 삭제 이상(deletion anomaly)가 있다.삽입 이상삽입 이상은 새 데이터를 삽입할 때 불필요한 데이터까지 함께 입력해야 하거나, 일부 정보를 입력하지 못해 데이터 삽입 자체가 불가능한 문제를 말한다. 예를 들어서 학생과 수강 과목 정보를 하나의 테이블에 저장한다고 해보자. 즉 다음과 같은 테이블을 가정해보자.학번이름나이성별강의코드강의명담당교수2023110204이태윤22남CSC202데이터베이스김태식2024004031김윤정21여CSC101기..
[DB] 인덱스(index)
·
Computer Science and Engineering/Database
인덱스 데이터베이스에서 데이터에 접근할 때 특정 값을 찾기 위한 탐색이 비효율적일 수 있다. 예를 들어서 나이가 20살인 사람을 찾고자 하는데 데이터베이스 행 기준으로 탐색한다면 가장 마지막 행에 20살인 사람이 있을 때 모든 행을 탐색한 이후에야 해당 사람을 찾을 수 있을 것이다. 즉 시간복잡도가 $ O(n) $ 일 것이다.그런데 탐색에서 효율적인 이진탐색이 존재하고, 삽입, 삭제가 좀 더 빠르게 가능한 여러 트리 자료구조가 있다. 이를 활용하면 원하는 값에 더 빠르게 접근할 수 있다. 이렇게 빠르게 원하는 값에 접근 가능하도록 만들어놓은 것을 색인, 즉 인덱스(index)라 한다.테이블에서 한 개 이상의 속성을 이용하여 생성하며, B-트리 혹은 B+-트리를 이용해 구현한다. 두 경우 모드 순서대로 정..
[DB] B-트리(B-tree)
·
Computer Science and Engineering/Database
B-트리 (B-Tree) B-트리는 이진탐색트리처럼 탐색을 위한 자료구조 중 하나로 탐색 성능을 유지하기 위해 균형 트리를 유지하는 것이 특징이다. 다음과 같은 조건을 만족하면 B-트리라 하고, 다르게는 다음 조건을 통해 성능을 유지한다.모든 리프노드(leaf node)는 동일한 레벨(level)에 위치한다.루트르 제외한 모든 비리프노드(non-leaf node)는 최소 $ \lceil m / 2 \rceil $ 개 이상, 최대 $ m $ 개의 자식을 가진다.비리프노드의 데이터 개수는 자식 수보다 하나 작으며 리프노드는 최소 $ \lceil m / 2 \rceil - 1 $ 개에서 최대 $ m - 1 $ 개의 데이터를 가진다.루트노드는 트리 전체에 루트 하나로만 구성되지 않는 한 최소 2개의 자식을 가져..
[DB] E-R 모델 및 릴레이션 변환 규칙을 이용한 데이터베이스 설계
·
Computer Science and Engineering/Database
데이터베이스 설계 사용자의 요구 사항을 고려하여 데이터베이스를 생성하는 과정으로 5단계로 나눌 수 있다.먼저 1단계는 요구 사항 분석 단계로 데이터베이스의 용도를 파악하고, 이를 요구사항 명세서로 나타낸다. 2단계는 개념적 설계 단계로 DBMS에 독립적인 개념적 구조를 설계하는 단계이다. 개념적 스키마, 즉 E-R 다이어그램이 그 결과물로 나타나야 한다. 3단계는 논리적 설계로 DBMS에 적합한 논리적 구조를 설계한다. 논리적 스키마가 그 결과물로 나와야 하며, 대부분 사용하는 관계 데이터베이스라면 릴레이션 스키마가 그 결과물이다. 여기까지가 핵심 단계이다. 4단계는 물리적 설계 단계로 DBMS로 구현 가능한 물리적 구조를 설계한다. 이를 통해 물리적 스키마가 결과물로 나와야 한다. 5단계는 구현으로 S..
[DB] 관계 데이터 연산(relational data operator)
·
Computer Science and Engineering/Database
관계 해석과 관계 대수 (Relational Calculus and Relational Algebra) 데이터 모델은 현실 세계의 데이터를 구조화하여 표현하기 위한 도구로, 데이터베이스의 구조, 제약조건, 그리고 데이터를 처리하는 연산을 정의한다. 이 중 개념적 데이터 모델의 대표적인 예는 개체-관계(ER, entity-relationship) 모델로, 데이터베이스의 개념적 구조를 시각적으로 표현하는 데 사용된다. 반면, 논리적 데이터 모델의 대표적인 예는 관계형 데이터 모델(참고링크)이며, 이는 데이터를 표(table)의 형태로 표현하고 논리적인 구조를 정의한다.관계형 데이터 모델은 데이터 구조, 제약조건, 연산의 세 가지 구성 요소로 이루어진다. 데이터 구조는 데이터를 테이블 형식으로 나타내며, 각 ..
[DB] 관계 데이터 모델(relation data model)
·
Computer Science and Engineering/Database
기본 개념 관계(relation)란 하나의 개체에 관한 데이터를 2차원 테이블 구조로 정리한 것으로 아래와 같이 생겼다. 릴레이션 내에서 생성되는 데이터 간 관계가 있고, 릴레이션 간 생성되는 릴레이션 간 관계가 있다.행을 튜플(tuple) 혹은 행(row)라 하고, 열을 속성(attribute) 혹은 열(column)이라 한다.열의 수를 차수(degree), 행의 수를 카디널리티(cardinality)라 한다.가장 위 열 이름을 스키마(schema)로 볼 수 있고, 각 행에 들어가 있는 값을 인스턴스(instance)로 볼 수 있다.도메인(domain)은 하나의 속성이 가질 수 있는 모든 값의 집합, 즉 정의역이다. 속성 값에 대한 입력, 수정에서 적합성 여부를 판단하는 기준이 되며, 속성 특성을 고려..
애스터로이드
'Computer Science and Engineering/Database' 카테고리의 글 목록