분류 전체보기 317

[DB] Recoverability

Unrecoverable Schedule트랜잭션 간의 의존성으로 인해, 일부 트랜잭션이 롤백될 때 데이터베이스가 이전의 일관된 상태로 복구될 수 없는 상황을 의미한다. 이러한 스케줄이 발생하면 데이터 일관성에 심각한 문제가 생길 수 있으므로, DBMS는 Unrecoverable Schedule을 허용해서는 안 된다.예시T1이 데이터를 변경한다.T1이 커밋하기 전에 T1이 변경한 데이터를 읽고 T2가 커밋한다.T1이 어떤 이유로 롤백되면, T2가 읽어 간 데이터는 잘못된 데이터가 되고, T2의 결과는 잘못된 데이터에 기반하게 된다. T2는 이미 커밋되었기 때문에, T1을 롤백한다고 하더라도 전체 시스템의 일관성을 회복할 수 없게 된다. Recoverable Schedule스케줄 내에서 트랜잭션은 자신이 읽..

Database 2024.08.16

[DB] Serializability

Lost Update두 개 이상의 트랜잭션이 동일한 데이터를 동시에 갱신하려고 할 때 발생하는 문제이다. 이로 인해 한 트랜잭션의 결과가 다른 트랜잭션에 의해 덮어써져 이전의 변경 내용이 사라지게 된다.예시:초기 상태: B의 계좌 잔액은 100만 원이다.트랜잭션 1 (T1): A가 B에게 20만 원을 입금한다.트랜잭션 2 (T2): B가 본인 계좌에 30만 원을 입금한다.Lost Update 시나리오:T1과 T2가 동시에 B의 잔액을 읽어온다. 두 트랜잭션은 B의 현재 잔액을 각각 100만 원으로 인식한다.T1이 B의 잔액에 20만 원을 더해 120만 원으로 업데이트한다.T2가 B의 잔액에 30만 원을 더해 130만 원으로 업데이트한다.최종 결과: B의 잔액은 130만 원이 되며, T1에서 수행한 20만..

Database 2024.08.16

[DB] Trigger

데이터베이스에서 특정 이벤트가 발생할 때 자동으로 실행되는 특별한 유형의 프로시저이다.특정 테이블에서 데이터가 변경될 때(INSERT, UPDATE, DELETE) 자동으로 실행되며, 보통 데이터 무결성을 유지하거나 자동으로 로그를 기록하는 데 사용된다.자동화: 데이터 변경 시 자동으로 실행되므로, 데이터 무결성을 유지하거나 특정 작업을 자동화할 수 있다.일관성: 동일한 작업을 반복적으로 수행할 수 있어 데이터베이스 내에서 일관성을 유지할 수 있다.보안: 트리거를 사용해 민감한 데이터 변경을 감지하고 로그를 기록하거나 특정 행동을 취할 수 있다.가시성 부족: 트리거는 자동으로 실행되므로, 디버깅이 어렵고 예상치 못한 동작을 유발할 수 있다.성능 저하: 잘못 설계된 트리거는 성능 저하를 초래할 수 있다. ..

Database 2024.08.16

[DB] Stored Procedure

데이터베이스 관리 시스템(RDBMS)에 저장되어 특정 작업을 수행하는 로직을 정의한 코드 블록이다.여러 SQL 작업을 절차적으로 수행할 수 있도록 지원하며, 복잡한 비즈니스 로직을 캡슐화하여 데이터베이스에서 직접 실행할 수 있다.하나의 구체적인 작업을 수행하는 데 적합하다.조건문을 사용하여 로직을 분기 처리할 수 있으며, 반복문을 통해 반복 작업을 수행할 수 있다.에러 처리를 위한 로직을 포함할 수 있으며, 특정 상황에 따라 에러를 발생시킬 수도 있다.입력(IN), 출력(OUT), 입력 및 출력(INOUT) 파라미터를 사용하여 데이터를 주고받을 수 있다. 예제 1: 두 정수의 곱셈 결과를 반환하는 프로시저두 개의 정수를 입력받아 그 곱을 출력하는 프로시저.DELIMITER $$CREATE PROCEDUR..

Database 2024.08.16

[DB] Stored Function

사용자가 정의한 함수로 DBMS에 저장되고 사용된다.SQL의 SELECT, INSERT, UPDATE, DELETE 구문에서 사용할 수 있다.반복적인 작업을 처리하기 위해 루프를 돌리거나, CASE 키워드를 사용하여 값에 따라 분기 처리할 수 있다.에러 핸들링이나 에러 발생 같은 다양한 동작을 정의할 수 있다.유틸리티 함수로 사용하는 것이 적합하다.비즈니스 로직을 스토어드 함수에 두는 것은 권장되지 않는다. 비즈니스 로직은 데이터베이스 외부에서 처리하거나 애플리케이션 계층에서 유지 관리하는 것이 바람직하다. 예제 1: 임직원 ID 생성 함수임직원의 ID를 10자리 정수로 랜덤 하게 발급하며, ID의 맨 앞자리는 1로 고정된다.DELIMITER $$CREATE FUNCTION id_generator()RE..

Database 2024.08.15

[DB] 데이터베이스 기본 개념

Database (DB)데이터베이스는 전자적으로 저장되고 관리되는 관련된 데이터들의 조직화된 집합이다. 데이터베이스는 특정 목적을 위해 데이터를 구조화하고 저장하여 효율적으로 접근하고 관리할 수 있도록 한다. Database Management System (DBMS)데이터베이스 관리 시스템(Database Management System, DBMS)은 사용자에게 데이터베이스를 정의, 생성, 관리하는 기능을 제공하는 소프트웨어 시스템이다.데이터베이스 구조를 정의할 때 생성되는 메타데이터(데이터에 관한 데이터) 또한 DBMS에 의해 저장되고 관리된다.DBMS는 데이터베이스를 관리하고 보호하며, 여러 사용자가 동시에 접근할 수 있도록 한다. Database System데이터베이스 시스템은 데이터베이스(DB)..

Database 2024.08.15

[Postgresql] GiST와 GIN 인덱스

PostgreSQL은 다양한 데이터 구조와 검색 요구에 대응할 수 있는 인덱싱 시스템을 제공한다. 그중에서도 GiST(Generalized Search Tree)와 GIN(Generalized Inverted Index)은 데이터의 구조와 검색 방식에 따라 최적화된 두 가지 주요 인덱스 유형이다. GiST (Generalized Search Tree)범위 쿼리, 공간 데이터, 사용자 정의 데이터 타입 등 다양한 데이터 구조에 대해 유연한 인덱싱을 제공하는 트리 기반 인덱스이다. B-트리와 유사한 구조를 가지고 있으며, 특정 데이터 타입이나 쿼리 조건에 맞춰 쉽게 확장할 수 있다.구조 및 특성트리 구조: GiST 인덱스는 B-트리와 유사하게 각 노드가 키와 자식 노드 포인터를 포함하는 트리 구조를 가진다...

Database/Postgresql 2024.08.15

B-Tree

자가 균형 이진 탐색 트리의 일종으로, 데이터베이스와 파일 시스템에서 널리 사용된다.높은 차수의 균형 트리로, 각 노드가 여러 자식을 가질 수 있다.모든 리프 노드는 동일한 레벨에 존재하기 때문에, B 트리는 O(logN)의 시간 복잡도를 갖는다. 특징각 노드는 최대 M개의 자식을 가질 수 있다. 이러한 트리를 M차 B 트리라고 부른다.루트 노드를 제외한 모든 노드는 최소 ⌈M/2⌉개의 자식을 가져야 한다.노드는 데이터와 포인터로 구성되며, 데이터는 오름차순으로 정렬되어 있다. 정렬된 순서에 따라 자녀 노드들의 키 값의 범위가 결정된다.각 노드는 최대 ⌈M/2⌉ - 1개에서 최대 M - 1개의 키를 가질 수 있다. 데이터 삽입삽입은 항상 리프 노드에서 시작한다.해당 리프 노드에 여유 공간이 있다면 데이터..

Red-Black 트리

Red-Black 트리는 이진 탐색 트리(BST)의 한 종류로, 스스로 균형을 유지하는 트리이다. 이 트리는 이진 탐색 트리에서 발생할 수 있는 최악의 경우(한쪽으로 치우친 트리)를 개선하여, 모든 연산(삽입, 삭제, 검색)이 O(log n) 시간 복잡도를 가지도록 설계되었다.  nil 노드nil 노드는 트리에서 존재하지 않는 자식을 나타내기 위해 사용되며, 이는 모든 리프 노드(자녀가 없는 노드)를 나타내는 데 사용된다.Red-Black 트리에서는 nil 노드도 블랙으로 간주되며, 트리의 균형을 유지하는 데 중요한 역할을 한다. Black HeightBlack Height는 노드 x에서 자손 nil 노드까지의 경로에 있는 블랙 노드의 수를 의미한다. 이때 x 자신도 이 수에 포함된다.  Red-Blac..

AVL 트리

AVL 트리는 이진 탐색 트리의 한 종류로, 엄격하게 스스로 균형을 유지하는 트리이다.각 노드의 균형 인수(balance factor, BF)를 사용하여 균형을 유지하며, 모든 노드의 BF 값은 -1, 0, 1 중 하나이다.장점:트리의 높이가 O(log n)으로 유지되어, 검색, 삽입, 삭제 연산의 시간 복잡도가 O(log n)이다.균형을 유지하므로 최악의 경우에도 성능이 일정하다.단점:엄격하게 균형을 유지하기 때문에 삽입/삭제 시 트리 균형을 확인한다.균형이 깨졌을 시 재조정하기 때문에 시간이 꽤 소요된다. 균형 인수 (Balance Factor)임의의 노드 x에 대해 균형 인수는 x의 왼쪽 서브트리의 높이에서 오른쪽 서브트리의 높이를 뺀 값이다.BF(x) = x의 왼쪽 서브트리의 높이 - x의 오른쪽..

728x90