[CS 스터디] 데이터베이스

한주영·2023년 4월 19일
0

CS

목록 보기
13/19

JOIN

두개이상의 테이블에서 데이터를 조합하여 하나의
결과집합으로 반환하는 작업을 말한다
일반적으로 테이블간의 연관성이있을때 사용된다

특정 열(또는 여러 열) 기준으로 수행된다
이러한 열을 공통 열 또는 조인 열 이라고 한다

Inner Join
두 테이블에서 공통된 값을 가진 행만 가져온다
Left Join
왼쪽 테이블의 모든 행과 오른쪽 테이블에서 일치하는 행을 가져온다
Right Join
오른쪽 테이블의 모든행과 왼쪽테이블에서 일치하는 행을 가져온다
Full Join
양쪽 테이블의 모든 행을 가져온다
Cross Join
두개의 테이블에서 모든 가능한 조합을 생성 예를들어 첫번째테이블이 3개의행을 가지고 두번째테이블이4개의행을 가지면 총 12개의 행을 반환
Self Join
하나의 테이블에서 자신을 조인하는것, 이를 사용하여 하위쿼리를 피하고 복잡한데이터 구조에서 필요한 정보를 검색할수있다

Sharding& Master/Slave

데이터 분산 방법

샤딩(Sharding)

각 노드마다 다른 데이터를 놓는다
즉A데이터는 1번 노드에 ,B데이터는 2번 노드에 두는 형식으로
다른데이터에 접근한다면 다른 노드에 접근하게 되는것
읽기 작업의 부하를 줄이는 방식

Master/Slave

여러 노드에 데이터를 복제하여 사용하는 방법
이때 노드를 마스터도느와 슬레이브 노드라고 부른다
모든쓰기는 마스터에서 행하고 읽기는 마스터나 슬레이브에서 처리된다
쓰기가 실행될 경우 데이터는 마스터에서 슬레이브로 복제된다

만약 마스터 노드가 문제가 생긴다면 다른 슬레이브 노드가 마스터 노드가 되는 방식을 사용할 수도 있다
이럴경우 쓰기작업이 실패해도 빠르게 복구가 가능하다

이상현상과 정규화

이상현상

데이터베이스의 설계 또는 조작이 잘못되서 일어나는 문제로,
데이터의 일관성을 해치는 문제, 이상현상은 일반적으로
테이블간의 관계가 제대로 설정되지 않았을때 발생한다.

삽입 이상 (Insertion Anomaly): 새로운 데이터를 삽입할 때 필요한 값이 없어 삽입할 수 없는 경우가 있는데 예를 들어, 고객 정보 테이블에서 고객 주문 정보가 포함된 경우, 새로운 고객 정보가 삽입되어도 주문 정보가 없으면 삽입할 수 없다

갱신 이상 (Update Anomaly): 중복된 데이터가 존재할 때, 하나의 데이터만 변경하면 나머지도 변경되어야 한다. 그렇지 않으면 데이터의 불일치가 발생합니다. 예를 들어, 주문 정보 테이블에서 한 고객이 여러 주문을 한 경우, 고객 정보를 변경할 때 여러 주문 정보도 함께 변경해야 한다

삭제 이상 (Deletion Anomaly): 테이블에서 특정 데이터를 삭제할 때, 그 데이터와 관련된 다른 데이터도 함께 삭제되어야 하는 경우가 있습니다. 그렇지 않으면 데이터 불일치가 발생한다. 예를 들어, 주문 정보 테이블에서 주문 고객이 하나인 경우, 그 고객의 정보를 삭제하면 해당 주문 정보도 모두 삭제된다.

트랜잭션

개념

데이터베이스에서 수행되는 작업 단위를 의미한다
데이터베이스 내의 데이터를 변경하는 일련의 작업을 하나의 논리적인 작업으로 묶어서 처리하는 것을 말한다.

ACID

원자성(Atomicity): 트랜잭션은 하나의 논리적인 작업 단위로 수행되어야 하며, 이 작업이 전부 수행되거나 전부 수행되지 않아야 한다. 즉, 중간에 오류가 발생하면 전체 작업이 취소되어야 한다

일관성(Consistency): 트랜잭션이 수행되기 전과 수행된 후의 데이터베이스의 상태는 항상 일관성이 있어야 한다. 즉, 트랜잭션이 수행되기 전과 수행된 후에도 데이터베이스는 일관성 있는 상태여야 한다.

격리성(Isolation): 동시에 여러 트랜잭션이 수행될 때, 각 트랜잭션은 다른 트랜잭션과 독립적으로 실행되어야 한다. 즉, 한 트랜잭션의 작업이 다른 트랜잭션의 작업에 영향을 미치지 않아야 한다.

지속성(Durability): 트랜잭션이 성공적으로 수행되면, 해당 작업에 대한 결과는 영구적으로 저장되어야 한다.

LOCK

여러 사용자가 공유하는 데이터에 대한 접근을 제어하기 위해
사용되는 기술.
LOCK을 사용하여 데이터를 보호하면 여러사용자가 동시에 같은 데이터에 접근하여 데이터 불일치 문제가 발생하는것을 방지할수있다.

두가지 유형의 LOCK

1.공유LOCK: 다른 사용자가 데이터를 읽을수있도록 하지만, 동시에 다른 사용자가 데이터를 수정하지 못하도록 한다.
즉, 여러 사용자가 동시에 데이터를 읽을 수 있지만, 하나의 사용자만 데이터를 수정할수있다
2. 배타적 LOCK: 다른 사용자가 데이터에 접근하지 못하도록 하여, 해당 사용자만 데이터를 읽고 수정할수있다

다수의 사용자가 동시에 데이터에 접근하는 상황에서 일관성과 무결성을 유지하는데 매우 중요하다.
하지만, LOCK이 남발되면 성능 저하와 데드락(DeadLock)등의 문제가 발생할수있다. 따라서 데이터베이스에서는 LOCK사용에 대한 적절한 관리가 필요하다

profile
백엔드개발자가 되고싶은 코린이:)

0개의 댓글