컴공

    HTTP는 TCP 기반일까요?? 네니요!

    HTTP는 application layer 프로토콜이다 OSI 7 layer에 따르면, 그리고 인터넷의 근간이 되는 TCP/IP stack에 따르면, application layer는 transport layer 위에서 동작한다 그렇기 때문에 application layer로 분류되는 HTTP 프로토콜은 transport layer에 속하는 프로토콜 중에 하나를 사용해서 동작할 거라고 예상할 수 있다 transport layer에는 대표적으로 두 개의 프로토콜이 존재한다 하나는 TCP, 다른 하나는 UDP다 HTTP는 이 두 개의 프로토콜 중에 어디에 기반해서 동작하는 걸까? HTTP는 TCP 기반일까? UDP 기반일까? 아마도 많은 분들이 HTTP는 TCP를 기반으로 동작한다고 알고 있을 것이다 그..

    스핀락(spinlock)을 최대한 안쓰는게 좋은 이유

    스핀락의 동작 방식 스핀락의 동작 원리는 대략 아래와 같다 volatile int lock = 0; // global void doYourJob() { while (test_and_set(&lock) == 1); // spinlock ... // critical section lock = 0; // spinlock } 스핀락의 동작 방식은 조건문이 false가 될 때까지 계속 while loop를 돌면서 끊임없이 확인하는 방식이다 오늘 주제에서는 test_and_set이 뭘 하는 친구인지는 중요하지 않다 (test_and_set 관련 내용은 여기로 오세요) 오늘 중요한 것은 스핀락의 동작 방식은 loop를 탈출하기 위해 조건문을 끊임없이 확인한다는 점이다 스핀락의 문제점 조건문을 끊임없이 계속해서 확인한..

    [DB] partitioning (파티셔닝 뜻과 종류, 사례)

    partitionig? DB 테이블을 더 작은 테이블로 나누는 것을 의미한다 paritioning에는 vertical partitioning과 horizontal partitioning이 있다 vertical partitioning? vertical partitioning은 column을 기준으로 테이블을 나누는 것을 말한다 정규화가 대표적으로 vertical partitioing의 한 종류이다 이미 정규화가 된 테이블이라도 여러 이유로 vertical partitioning을 할 수 있는데, 주로 다음과 같은 이유일 때이다 * 자주 사용되는 column들을 따로 분리하고 싶을 때 * 사이즈가 큰 column이 자주 사용되지 않을 때 * 민감한 정보를 가지는 column들을 따로 분리해서 조금 더 보안을..

    DB 테이블에 인덱스(index)가 매우 중요한 이유

    만약 table에 인덱스를 걸지 않으면 어떻게 될까? 원하는 데이터를 찾고 싶을 때 table 전체를 full scan 해야 한다 full scan 이란? row를 하나하나씩 모두 확인하는 것을 의미하며, table scan 이라고도 부른다 full scan은 당연히 시간이 오래 걸리기 때문에 서비스에 좋지 않은 영향을 끼친다 아래와 같이 ARTICLE 테이블이 있다고 가정해보자 article_id writer_id title created_at read_cnt comment_cnt 1 aaa ... ... ... ... 2 bbb ... ... ... ... ... ... ... ... ... ... 만약 codingyo가 작성한 글을 찾고 싶다면 쿼리문은 아래와 같다 SELECT * FROM arti..

    [DB] transaction isolation level(격리 수준) 존재 이유

    isolation level 존재 이유 데이터의 일관성과 DBMS의 transaction 전체 처리량 사이에서 개발자가 직접 선택할 수 있도록 하기 위함이다 즉, DB 성능과 데이터 정확성 사이에서 개발자가 알아서 선택하도록 하기 위함이다 transaction의 isolation 속성이 완벽하게 동작한다면, 데이터 불일치는 발생하지 않겠지만 그만큼 DBMS에서 동시에 처리할 수 있는 transaction 수는 줄어든다. 그렇다고 isolation을 완벽하게 구현하지 않는다면, 동시에 처리할 수 있는 transaction의 수는 증가하겠지만 데이터 일관성이 깨질 수 있다 그래서 SQL 표준에서는 총 네 가지의 isolation level을 정의해서 개발자가 데이터 일관성과 DBMS의 성능 사이에서 적절하게..