데이터베이스 13

recoverability

지난 포스팅에서 schedule과 serializable에 대해서 알아보았습니다. 지난 포스팅에 대해서 요약해봅시다. schedule은 여러 트랜잭션이 실행될 때 각 트랜잭션에 속한 operation들의 실행 순서이며, 여러 케이스의 schedule이 존재한다고 했습니다. 그리고 schedule에는 nonserial schedule과 serial schedule이 존재하며, nonserial schedule은 비정상적인 결과를 도출할 수 있습니다. 하지만 nonserial schedule이 동시에 여러 트랜잭션을 처리할 수 있어 같은 시간동안 serial schedule에 비해 더 많은 트랜잭션을 처리할 수 있습니다. 그래서 nonserial schedule이 serial schedule과 equival..

데이터베이스 2023.08.26

schedule, serializability

Schedule transaction1: A가 B의 계좌에 20만원을 이체하는 작업 transaction2: B가 자신의 계좌에 30만원을 입금하는 작업 이렇게 두 개의 트랜잭션이 존재합니다. 여러 트랜잭션이 동작할 때 여러 트랜잭션에서 수행해야 하는 작업들의 순서를 나열한 것을 scehdule이라고 합니다. 설명이 좀 복잡하니까 예를 들어 살펴봅시다. transaction1: A가 B의 계좌에 20만원을 이체하는 작업 r1(A): A의 계좌를 조회합니다.(DB read) w1(A): A의 계좌에서 20만원을 뺍니다.(DB write) r1(B): B의 계좌를 조회합니다.(DB read) w1(B): B의 계좌에 30만원을 더해줍니다(DB write) transaction2: B가 자신의 계좌에 30만원..

데이터베이스 2023.08.25

Index

Index가 왜 필요한가요? 테이블의 모든 데이터를 순차적으로 검색하는 것은 시간이 오래걸리기 때문입니다. 조건을 만족하는 튜플을 빠르게 조회하기 위해 [꼬꼬무1] select의 성능을 높일 수 있는 방법은 뭐가 있을까요? 가장 대표적인 방법으로는 Index 생성, 조건절 최적화, join 최적화, 필요한 컬럼만 추출 등이 있습니다. [꼬꼬무2] index의 내부동작은 어떻게 동작하나요? 내부 구현 알고리즘에 따라 다르지만 균형 바이너리 서치 트리를 사용하는 경우 key의 크기 기준으로 나보다 작으면 왼쪽 서브트리 탐색, 나보다 크면 오른쪽 서브트리를 탐색해 O(log n)시간에 탐색합니다. [꼬꼬무3] index를 많이 생성하면 안되나요? 인덱스 생성자체가 추가적인 메모리를 사용하고 insert, de..

데이터베이스 2023.07.07

Transaction

Transaction을 간단히 설명해 주세요 ⭐⭐ 트랜잭션이란 데이터베이스의 상태를 변경시키기 위해 수행하는 작업의 논리적인 단위입니다. 트랜잭션은 데이터베이스의 신뢰성과 일관성을 지키기 위해 ACID라는 4가지 원칙을 만족해야 합니다. [꼬꼬무1] commit과 rollback에 대해 설명해보세요 commit이란 지금까지의 수정사항들이 db에 영구적으로 반영되는 것을 의미하며 rollback은 지금까지의 변경사항을 취소하고 이전 커밋 상태로 되돌리는 것을 의미합니다. [꼬꼬무2] 원자성, 일관성, 고립성, 지속성이 뭔가요? 원자성(Atomicity) 한 트랜잭션 내의 연산 중 하나라도 실패하면 rollback하고 전부 실행이 되는 경우에만 commit하는 것을 의미합니다. 일관성(Consistency)..

데이터베이스 2023.07.06

DB구조 & 설계

primary key가 무엇인지 설명해 주세요 후보키 중 null을 허용하지 않고 튜플을 가장 잘 구분할 수 있는 대표키 [꼬꼬무1] primary key와 foreign key에 대해 설명해 주세요 테이블의 연관관계를 나타내기 위해 다른 테이블의 기본키를 참조하는 키 [꼬꼬무2] candidate key에 대해 설명하시오 튜플을 구분할 수 있는 최소한의 attribute 조합 [꼬꼬무3] alternate key에 대해 설명하시오 후보키 중 기본키에 해당하지 않는 키 [꼬꼬무4] composite key에 대해 설명하시오 두개 이상의 컬럼을 묶어서 기본키로 사용하는 것 관계형 데이터베이스의 N:M 관계에 대해서 설명해 주세요 N:M 관계는 관계를 가진 양쪽 엔티티 모두에서 1:N 관계를 가지는 것을 말..

데이터베이스 2023.07.04

RDB와 NoSQL의 차이에 대해 설명해 주세요.

RDB RDB는 관계형 데이터베이스를 뜻하는 말입니다. 테이블 형태로 이루어져 있으며, SQL을 통해 데이터를 삽입, 삭제, 수정을 합니다. 그리고 테이블에 제약조건을 설정하여 데이터의 무결성, 일관성을 보장합니다. NoSQL NoSQL(Not Only SQL)은 관계형 데이터베이스가 갖는 테이블 형태의 스키마에 얽매이지 않고 자유롭게 데이터를 저장하고 조회할 수 있는 비관계형 데이터베이스입니다. NoSQL은 스키마를 엄격하게 정의하지 않기 때문에 필요에 따라 구조를 동적으로 변경할 수 있어 데이터 모델의 유연성을 제공합니다. RDB와 NoSQL 차이 크게 데이터 모델, 스키마, 트랜잭션에서의 차이가 있습니다. 먼저 RDB의 데이터 모델 같은 경우 테이블 형식으로 정해져 있는 반면 NoSQL은 key-v..

데이터베이스 2023.06.23

Key (기본키, 후보키, 슈퍼키 등등...) 에 대해 설명해 주세요.

슈퍼키 튜플을 구분할 수 있는 모든 attribute의 조합 후보키 튜플을 구분할 수 있는 최소한의 attribute 조합 기본키 후보키 중 null을 허용하지 않고 튜플을 가장 잘 구분할 수 있는 대표키 외래키 테이블의 연관관계를 나타내기 위해 다른 테이블의 기본키를 참조하는 키 꼬리 질문 기본키는 수정이 가능한가요? 이론상 수정이 가능하지만 여러 연관관계가 있는 경우, 참조 부분에서 데이터의 일관성이 깨질 수 있으므로 수정하지 않는 것이 좋다고 생각합니다. 외래키 값은 NULL이 들어올 수 있나요? 해당 관계가 존재하지 않는 경우 null값이 들어올 수 있습니다. 어떤 칼럼의 정의에 UNIQUE 키워드가 붙는다고 가정해 봅시다. 이 칼럼을 활용한 쿼리의 성능은 그렇지 않은 것과 비교해서 어떻게 다를까..

데이터베이스 2023.06.19

NoSQL

정의 NoSQL(Not Only SQL)은 관계형 데이터베이스가 갖는 테이블 형태의 스키마에 얽매이지 않고 자유롭게 데이터를 저장하고 조회할 수 있는 비관계형 데이터베이스입니다. NoSQL은 분산 처리, 고성능, 확장성 등의 장점을 가지고 있어 대규모 분산 시스템에서 많이 사용됩니다. CAP 이론 CAP 이론은 분산 시스템에서 세 가지 속성 중 최대 두 가지만 만족할 수 있다는 것을 설명하는 이론입니다. CAP은 일관성(Consistency), 가용성(Availability), 분할 내성(Partition tolerance)의 약자입니다. 일관성(Consistency): 모든 클라이언트가 같은 시간에 같은 데이터를 보게 됩니다. 이 속성을 만족하는 시스템은 모든 노드에 동일한 데이터가 있는 것을 보장합니..

데이터베이스 2023.04.10

교착상태

교착상태란 무엇인가 복수의 트랜잭션을 사용하다보면 나타나는 현상으로, 교착상태란 두 개 이상의 트랜잭션이 특정 자원(테이블 또는 행)의 잠금(Lock)을 획득한 채 다른 트랜잭션이 소유하고 있는 잠금을 요구하면 아무리 기다려도 상황이 바뀌지 않는 상태가 되는데, 이를 교착상태라고 한다. Transaction 1> start transaction; insert into B values(1); Transaction 2> start transaction; insert into A values(1); 트랜잭션을 commit 하지 않은채 서로의 첫번째 행에 대한 잠금을 요청하면 Transaction 1> insert into A values(1); Transaction 2> insert into B values(..

데이터베이스 2023.04.09