- [ 학습기록/CS 공부 ][네트워크/KOCW] Chap4 & 5. Network Layer2024-06-10 15:18:51네트워크 계층의 주요 업무는 송신자의 packet을 수신자에게 전달하는 것이다. 네트워크 계층은 data plane과 control plane으로 나뉜다.data plane : 라우터는 input link로부터 받은 datagram을 적절한 output link로 전달한다. (forwarding)control plane : 라우터는 송신자에서 수신자로 가는 경로를 결정한다. (routing)라우터의 핵심 요소는 forwarding table과 routing algorithm이다. 라우터는 packet의 헤더를 검사하고, 헤더 값을 forwarding table의 인덱스로 사용하여 packet이 어느 output link로 가야 하는지 결정한다. (data plane) 이때, forwarding table..
- [ 학습기록/CS 공부 ][네트워크/KOCW] Chap3. Transport Layer2024-06-07 15:54:08전송 계층은 end system에만 존재하는 계층으로, 라우터 같은 network core에는 없는 계층이다. 따라서 전송 계층은 네트워크 계층이 처리할 수 있는 데이터로 가공하여 전달해야 한다. 송신자 측의 전송 계층은 어플리케이션 계층으로부터 받은 메시지를 작은 단위 (segment) 로 쪼개고, 이를 네트워크 계층으로 전달한다. segment는 네트워크 계층에서 datagram으로 캡슐화되어 목적지까지 전송된다. 이때, 라우터는 segment의 내부 내용을 살펴보진 않는다.**네트워크 계층은 segment의 전송 여부, 순서, 무결성 등을 보장하지 않는다. (unreliable service) 전송 계층은 네트워크 계층의 바로 위에 존재한다. 네트워크 계층은 호스트 간의 논리적인 의사소통을 담당하는..
- [ 학습기록/CS 공부 ][네트워크/KOCW] Chap2. Application Layer2024-05-31 16:56:04네트워크 어플리케이션은 서로 다른 end system에서 실행되는 프로세스들이 네트워크를 통해 서로 통신하는 것을 의미한다. 웹 어플리케이션과 P2P 파일 공유 시스템이 대표적인 예다. 웹 어플리케이션은 클라이언트-서버 구조를 기반으로 한다. 서버는 on 상태를 유지하여 다수의 클라이언트가 보낸 요청을 처리한다. 클라이언트는 고정되고 잘 알려진 서버의 IP주소로 packet을 전송한다. P2P (= peer-to-peer) 구조는 서버를 거치지 않고 peer끼리 직접 통신하는 방식이다. 중앙 서버에 의존하지 않기 때문에 서버의 영향을 받지 않으며, 사용자가 많아질 수록 네트워크의 성능이 높아진다는 장점이 있다. (P2P 파일 공유 시스템은 자신의 리소스를 네트워크에 제공하는 동시에 다른 노드의 리소스도 ..
- [ 학습기록/CS 공부 ][네트워크/KOCW] Chap1. Overview2024-05-28 20:40:12Internetthe Internet is a network of networks인터넷은 전 세계의 수많은 컴퓨팅 디바이스를 상호 연결하는 네트워크로, 노트북, 스마트폰, 태플릿 등 다양한 디바이스에 서비스를 제공한다. 우리는 이러한 디바이스를 host 또는 end system이라고 부른다. 인터넷의 구성 요소를 살펴보기에 앞서, 판매자가 소비자에게 물품을 전달하는 상황을 가정해보자. 판매자는 배송하기 쉽도록 물품의 구성 요소를 여러 상자에 나누어 담고, 각각의 상자에 소비자의 주소를 작성한다. 배송 업체는 포장된 상자들을 싣고, 고속도로, 교차로를 지나 소비자에게 전달한다. 소비자는 상자에 나누어 담긴 구성 요소를 조립하여 하나의 물품을 만든다.이 예시를 이용하여 인터넷의 구성 요소를 비유하면 다음과 ..
- [ 학습기록/CS 공부 ][DB/쉬운코드] 파티셔닝과 샤딩2024-05-18 04:00:37파티셔닝 & 샤딩파티셔닝은 큰 테이블을 작은 크기의 테이블로 나누는 과정으로, 데이터베이스의 성능을 향상시킬 수 있다. 파티셔닝은 크게 두 종류로 나뉘는데, vertical partitioning은 column을 기준으로, horizontal partitioning은 row를 기준으로 테이블을 나눈다. vertical partitioning은 테이블의 열을 기준으로 데이터를 분리한다. 정규화 뿐만 아니라 성능을 위해 열을 별도로 분리할 수 있다. 포스팅에 대한 테이블에서 내용 속성인 `content`를 별도의 테이블로 분리하면, 포스팅 목록 조회 시 더 이상 무거운 `content`를 조회하지 않아도 된다.이외에도 민감한 정보는 함부로 조회하지 못하도록, 자주 사용하는 속성만 모아 성능을 향상시킬 목적으..
- [ 학습기록/CS 공부 ][DB/쉬운코드] 인덱스 (EXPLAIN/B 트리)2024-05-16 04:31:19인덱스SELECT * FROM customer WHERE name = 'Jennie';customer 테이블에서 Jennie라는 이름을 가진 소비자를 찾는 상황을 가정해보자. `name`에 인덱스가 걸려있지 않다면 해당 쿼리는 customer 테이블을 풀 스캔하게 된다. O(n) 이는 모든 레코드를 하나 하나 확인하므로 성능 저하를 일으킨다. 하지만 인덱스를 사용하면 풀 스캔보다 더 빠르게 데이터를 조회할 수 있다. O(log n) 즉, 인덱스는 조건을 만족하는 레코드를 빠르게 조회하기 위해 사용한다. 인덱스는 쿼리 실행 속도를 향상시키지만 부작용도 존재한다.테이블을 수정할 때마다 인덱스도 변경된다.인덱스별로 추가적인 저장 공간이 필요하다.💡 커버링 인덱스 : 인덱스만으로 조회하려는 속성들을 모두 커버..
- [ 학습기록/CS 공부 ][DB/쉬운코드] 정규화 (함수적 종속/1NF/2NF/3NF/BCNF)2024-05-15 03:23:19정규화정규화는 데이터 중복과 이상 현상을 최소화하기 위해 일련의 normal form* (NF) 에 따라 관계형 DB를 구성하는 과정이다.*normal form : 정규화를 위해 준수해야 하는 몇 가지 규칙잘못된 테이블 설계로 인한 문제`employee` 테이블을 다음과 같이 설계하는 상황을 가정해보자.emp_id, emp_name, birth_date, position, salary, dept_id, dept_name, dept_leader_id위 설계에 따르면 직원 정보와 부서 정보가 `employee` 테이블에서 모두 관리된다. (2개의 관심사가 하나의 테이블에 존재한다!) 1번 직원과 2번 직원이 같은 부서에 속한다면 어떤 상황이 발생할까? `dept_id`, `dept_name`, `dept_l..
- [ 학습기록/CS 공부 ][DB/쉬운코드] MVCC2024-05-13 17:10:19MVCC; multiversion concurrency controllock 기반의 동시성 제어는 같은 데이터를 read 하는 경우는 허용하지만, 그 외의 경우는 모두 허용하지 않는다. 이는 동시에 실행될 수 있는 트랜잭션을 제한하여 성능 저하를 유발한다. 반면, MVCC는 같은 자원에 대해 write 하는 경우만 허용하지 않는다. MVCC는 특정 시점을 기준으로 가장 최근에 commit된 데이터를 읽는다. 특정 시점은 isolation level에 따라 달라진다. MVCC는 데이터의 변화 이력을 관리해야 하므로 추가적인 저장 공간이 필요하다. isolation level🚨 MVCC는 commit된 데이터를 읽으므로 read uncommitted level은 MVCC가 적용되지 않는다.read commi..