MVCC (Multi Version Concurrency Control)
·
CS/Database
❒ DescriptionLock을 활용한 concurrency control에서 Lock의 동작원리 및 특징에 대해서 학습했다.하지만 Lock을 사용하여도 데이터의 일관성이 보장되지 않아 2PL이 등장하고, 2PL의 변형 모델도 학습했다.  Lock을 활용한 concurrency control❒ Description지금까지 concurrency control이 무엇인지, 왜 필요한지에 대해서 학습했다.오늘은 동시성 제어를 구현한 기법 중 하나인 Lock과 2PL에 대해서 학습하자.     ❒ Lock의 종류1. write-lock (exclusgilbert9172.tistory.com그리고 Lock은 호환성이 좋지 않다는 점도 표로 확인했다. 호환성이 좋지 못하다는 것은 동시에 처리량이좋지 못하다는 의미..
Lock을 활용한 concurrency control
·
CS/Database
❒ Description지금까지 concurrency control이 무엇인지, 왜 필요한지에 대해서 학습했다.오늘은 동시성 제어를 구현한 기법 중 하나인 Lock과 2PL에 대해서 학습하자.     ❒ Lock의 종류1. write-lock (exclusive-lock)쓰기(배타) 락은 다른 트랜잭션이 같은 데이터를 읽거나 쓰는 것(INSERT, UPDATE, DELETE)을 허용하지않는다. 따라서 잠금이 해제 될 때까지 다른 트랜잭션은 해당 데이터를 읽지도, 쓰지도 못한다.  2. read-lock (shared-lock)다른 트랜잭션이 같은 데이터를 읽는 것을 허용한다. 읽기(공유) 잠금은 읽기 잠금끼리는 동시에 접근이가능하지만, 읽기 잠금이 설정된 데이터에 쓰기 잠금은 사용할 수 없다.     ❒..
Isolation 레벨과 이상 현상들
·
CS/Database
❒ DescriptionConcurrency Control은 트랜잭션이 동시에 실행될 때 발생할 수 있는 여러 문제를 해결하면서, Isolation 수준을보장하는 데 중요한 역할을 한다. 이 내용은 앞선 두 포스팅에서 학습하였다.  ※ 앞선 학습 내용DB Transaction & Concurreny Control (1)DB Transaction & Concurreny Control (2) 오늘은 Concurrency Control 방법론을 통해 구현(보장)되며, 다수의 트랜잭션이 동시에 실행될 때 트랜잭션간의 간섭을 제어하여 데이터의 일관성을 유지하고, 각 트랜잭션이 독립적으로 수행되는 것처럼 보이게 하는 속성인isolation에 대해서 더 자세히 학습할 예정이다.     ❒ Isolation 이상 현상..
Subnet, Subnet Mask, Subnetting
·
CS/Network
❒ Description Subent, Subnet Mask 그리고 Subnetting의 정의에 대해서 알아보고, 서브넷팅 계산하는 법도 공부하자!     ❒ Subnet (서브넷)1. 서브넷이란?서브넷은 하나의 네트워크를 더 작은 네트워크들로 나누는 개념이다.  2. 그렇다면 서브넷은 왜 사용할까?IP 주소의 효율적 사용큰 네트워크를 작은 네트워크로 나누어 IP 주소를 절약네트워크 성능 향상한 서브넷에서 발생한 트래픽은 다른 서브넷에 영향을 주지 않기 때문에 성능 향상보안 강화민감하나 데이터를 다루는 서브넷과 일반 사용자 서브넷을 분리하여 보안 강화확장성필요에 따라 서브넷을 추가 및 조정하여 네트워크를 확장     ❒ Subnet Mask (서브넷 마스크)1. 서브넷 마스크란?서브넷 마스크는 IP 주소..
DB Transaction & Concurreny Control (2)
·
CS/Database
❒ Description트랜잭션은 ACID라는 속성을 가진다. 그 중 A는 Atomicity, 원자성을 의미한다. 원자성을 보장하기 위해서commit과 rollback이 존재한다. 오늘은 트랜잭션들이 동시에 시작될 때 rollback이 발생하면 어떤 일들이벌어지는지 알아보자.     ❒ Concurrency Control : recoverability1. Unrecovarable Schedule위 그림에서 Tx2는 chul_money를 2000에서 5000으로 update를 해주었기 때문에 Rollback이 발생할경우 다시 2000으로 돌려놔야 한다. 이렇게 되면 Tx2는 더 이상 유효한 작업이 아니게 된다.따라서 Tx2에서 write 했던 chul_money를 읽은 tx1도 롤백을 해줘야 Atomac..
DB Transaction & Concurreny Control (1)
·
CS/Database
❒ Description트랜잭션은 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말한다. 오늘은 DB 면접 단골 질문인 트랜잭션에 대해서 기초와 깊이 있는 학습을 해보자!!     ❒ ACIDACID는 트랜잭션의 핵심이다. Atomicity, Consistency, Isolation, Durability의 첫 글자를 따온 것으로각 단어는 트랜잭션이 어떤 속성을 지녀야 하는지 나타낸다.  1. 원자성 (Atomicity)원자성은 트랜잭션과 관련되 일이 모두 수행되었거나 되지 않았거나를 보장하는 것이다. 예를 들어 트랜잭션을커밋했는데, 문제가 발생하여 롤백하는 경우 그 이후에 모두 수행되지 않음을 보장하는 것을 말한다. 원자성을 지키기 위해 DB에서는 commit과 rollback이 있다.commit은 ..
B-tree와 DB 인덱스(index)
·
CS/Database
❒ DescriptionDB 인덱스는 B-tree 자료구조를 사용한다. (참고로 MySQL은 B+tree)B-tree와 조회,삽입,삭제의 시간복잡도가 동일한 다른 self-balancing BST인 AVL, Red-Black tree도 있는데왜 B-tree를 쓰는지 알고는 있지만 개념을 정리해보자.     ❒ 메모리 계층우선 DB가 어디서 데이터를 퍼올리는지 이해해야 한다.위 이미지는 메모리 계층을 나타낸 것이다. 위로 올라갈 수록 속도는 빨라지지만 용량은 작아진다. 우리가 DB에저장하는 데이터는 가장 하위에 위치한 보조 기억 장치에 저장된다. 보조 기억 장치와 주 기억 장치 사이의 데이터전송 단위를 Block이라고 하는데, 딱 원하는 데이터만 읽어 오는 것은 아니고 한 block 단위로 데이터를 읽어온..
FD & Normalization
·
CS/Database
❒ Description정규화(Normalization)는 관계형 데이터베이스의 설계에서 데이터 중복을 줄이고 데이터 무결성을개선하기 위해 데이터 정규형(Normal-form)에 맞도록 구조화하는 프로세스를 뜻한다.1NF ~ 6NF 까지 있는데 보통 3NF까지 만족하면 정규화 됐다라고 한다. 그리고 정규화를 이해하기위해서는 FD(Functional Dependency)를 잘 이해하고 있어야 한다.     ❒ FD (Functional Dependecny)한국어로 함수 종속이라고 하는 Functional Dependency는 데이터베이스의 릴레이션(relation)에서두 개의 애트리뷰트(attribute) 집합 간 제약의 일종이다.  X의 값에 따라 Y 값이 유일하게 결정될 때 X가 Y를 함수적으로 결정한..
웹 서비스의 전체적인 흐름
·
CS/Network
❒ Description웹 서비스의 전체적인 흐름을 이해하고 도식도를 그려보자!   ❒ 흐름다음과 같은 흐름으로 우리는 인터넷을 사용하다.1. URL을 입력한다. 2. IP 주소를 얻기 위해 DNS 서버에 질의한다. 3. TCP/IP 커넥션을 맺는다. 4. HTTP 요청을 보낸다. 5. 서버에서 요청을 처리한다. 6. HTTP 응답을 보낸다. 7. 브라우저가 응답을 렌더링한다. 8. 추가 리소스 요청 및 렌더링 9. 세션이 유지되거나 종료된다. 10. TCP 연결을 종료한다.  아래 그림은 TCP/IP 4계층 모델과 Application의 흐름을 더 자세히 이해하고자 그려봤다.   참고로 중간에 Middleware가 있는데 이것은 곧 Servlet Container이다. Servlet Container ..
HTTP 3.0
·
CS/Network
❒ DescriptionHTTP/3.0은 현대 웹의 성능과 안전성을 향상시키기 위해 개발된 HTTP 프로토콜이다. 이전의 2.0과는 근본적으로 다른 방식으로동작하며, 주로 QUIC(Quick UDP Internet Connections)을 기반으로 한다.  ※ 별도의 예상 면접 리스팅 X   ❒ 등장 배경HTTP/3.0은 주로 네트워크 성능과 신뢰성을 개선하기 위해 개발되었다. HTTP/2.0은 기존의 HTTP/1.x에서많은 개선을 이뤄냈지만, 여전히 TCP 위에서 동작하기 때문에 몇 가지 근복적인 문제를 안고 있다. 특히, TCP의 HOL Blocking 문제가 큰 이슈였다. TCP 연결에서 패킷 손실이 발생하면, 손실된 패킷이 재전송되기 전 까지 나머지 패킷들은 대기해야 한다. 이는 특히 네트워크가 ..