클라우드 스쿨/강의 정리

8주차 - DB

qqlzzb 2023. 11. 24. 16:23
기간 230626 - 230630
배운 내용 DB

DBMS

: DataBase Management System. 데이터를 만들고 저장하고 관리하는 기술

 

- DBMS가 없다면?
1. 직접 파일 열어서 읽어서 조회, 저장해야 함
2. 공유가 어려움
3. 공유가 어려우니까 데이터 중복해서 갖고 있게 됨
4. 중복 저장하다 보니 일관성이 깨짐
5. 무결성 관리 어려움 (무결성=결함 없이 데이터 유지하는 성질)
6. 보안관리 어려움 (권한 있는 사람만 접근하도록 직접 만들어야 함)

 트랜잭션

: all or nothing으로 처리되어야 하는 논리적인 작업 단위

1. 논리적인 작업 단위

: 전부 수행되거나 아무것도 수행되면 안 되는 작업들
ex1) 계좌이체 시 
   a = a - 10000
   b = b + 10000
db에선 각각의 일이지만 업무에선 하나의 일. 둘 다 실행되거나 하나만 안 될 거면 되는 거는 롤백되어야 함


ex2) 쇼핑몰에서 주문 시
   하나의 주문 발생 시 업데이트되어야 하는 테이블 여러 개

2. 트랜잭션 관리

트랜잭션 시작
a = a-10000   UPDATE
b = b+10000   UPDATE
      COMMIT
-------------------------2개의 일 하나의 트랜잭션으로 묶임
DBMS가 커밋되지 않은 일은 롤백해 줌(트랜잭션 전체 취소)

3. 트랜잭션의 특성 (ACID)

1) Atomicity(원자성) = 트랜잭션이 DB에 모두 반영되거나, 혹은 전혀 반영되지 않아야 함


2) Consistency(일관성) = 트랜잭션의 작업 처리 결과는 항상 일관성 있어야 함

ex) 계좌이체 전후 은행 돈 총액 같아야 함. 작업의 중간(만원 보낸 직후)이 다른 세션에서 보이면 안 됨

3) Isolation(고립성) = 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때, 어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없음
ex)

서울역 ATM기 인천역 ATM기
a=a-10000 -> b에게 1만원 송금
b=b+10000
c=c-10000 -> b에게 1만원 송금
b=b+10000

 

서울역 ATM기에서 a가 b에게 1만 원을 계좌이체 하는 상황.

b 계좌에는 10만 원이 있었음.

a한테서 만원을 받아서 11만 원이 되면 인천역 ATM기에서 c의 작업이 수행되어야 하는데,

작업 중간에 c가 값을 읽으면 둘 다 11만 원으로 업데이트되므로 문제가 생김.

=> 작업 중간엔 락을 걸어서 다른 작업이 읽어가지 못하도록 함.


4) Durability(지속성) = 트랜잭션이 성공적으로 완료되었으면, 결과는 영구적으로 반영되어야 함. 커밋되면(작업 완료되면) 데이터 사라지면 안 됨

+ 트랜잭션으로 묶을 필요 없는 업무 다 묶어놓으면 Lock 걸리는 시간 많아져서 시스템 느려짐.

4. DW와 OLTP 차이

DW OLTP
분석용 DB
배치. 한번에 많은 데이터를 읽어서 통계내는 업무 처리
실시간 아닐 수 있음
한 번에 대량의 데이터를 조회
쇼핑몰 온라인 업무/트랜잭션
상품등록/삭제..주문..
온라인 상에서 실시간으로 일어나는 업무 처리하는 db
작은 데이터가 갱신, 저장, 조회 (작은데이터 중심)

 

NoSQL / RDB

NoSQL SQL DB(RDB)
많은 데이터 처리가 중요하고, 일관성 양보 가능한 업무에 사용
(예를들어 SNS, 게임, IoT)
정규화 안함. 하나의 테이블에 거의 모든 데이터 담을 수 있음.
따라서 조인 필요 없는 경우 많음.
트랜잭션 관리
(백그라운드 프로세스[락 걸기, 데드락 모니터링..] 많음
-> 대량의 데이터를 처리하기 부담)
전통적 업무도메인(금융업무..)에 잘맞는 db
일관성 유지, 정규화, 스키마 고정
여러테이블 조인 -> 조회 속도 느림

 

- 비교
수평적 확장 = 스토리지 개수 늘리기(NoSQL) 한계 없음
수직적 확장 = 스토리지 용량 키우기(RDB) 한계 있음

 쿼리

1. SQL 언어의 종류

1) DDL - CREATE, DROP, ALTER
2) DCL - GRANT, REVOKE, DENY(권한 관련)
3) DML - INsert, update, delete, select

 

2. 기타

WHERE 절은 행을 선택. 이를 가리키는 용어가 SELECTION 연산
SELECT 절에서 특정 칼럼만 갖고 오는 거는 projection 연산

별칭 주려면 AS 칼럼명 as "별칭"
as는 생략가능 컴마 안 찍고 "" 쓰면 됨

SELECT @@Autocommit; 으로 확인하면 자동커밋되는지 확인가능(1이면 자동커밋)

IN(A, B, C)는 A OR B OR C과 같은 결과

LIMIT 2,10; 하면 3번째부터 10개

 

inner join = 조인조건에 만족하지 않으면 안 나옴
outer join = 조인조건에 만족하지 않아도 나옴. left outer join 하면 왼쪽 무조건 나옴
self join  = 레코드의 짝이 같은 테이블에 있을 때. 같은 테이블이 두 개 있다고 생각

CREATE TABLE aaaa1 SELECT NAME, addr FROM usertbl;
-> SELECT 한 결괏값 복사해서 테이블 aaaa1에 넣어라

집계함수 또는 Group By 절 사용할 때 select 절에 올 수 있는 칼럼
1) group by에 나열된(언급된) 칼럼
2) sum(), count() 같은 집계함수(Aggregation function)로 한정된다.

 

테이블 만들 때 제약조건 이름 명시가능. 명시하지 않으면 자동 생성

1:n 일 땐 관계 테이블은 n 쪽에 생성. n:m 일 땐 따로 생성

delete - rollback 가능
truncate - rollback 불가
drop - rollback 불가

'클라우드 스쿨 > 강의 정리' 카테고리의 다른 글

10주차 - Spring Boot, AWS  (0) 2023.11.28
9주차 - 프로시저, 트리거, 스프링  (0) 2023.11.27
7주차 - JAVA  (0) 2023.11.23
6주차 - JAVA  (0) 2023.11.22
5주차 - React  (0) 2023.11.21