목록분류 전체보기 (33)
코딩하는 두식이
보호되어 있는 글입니다.
보호되어 있는 글입니다.
SQL과 NoSQL의 비교SQL과 NoSQL이 무엇인지에 대한 기본적인 이해를 바탕으로, 이 간단한 비교 차트를 통해 두 가지의 차이점을 살펴보겠습니다.SQLNoSQLStands for Structured Query의 약자Not Only SQL의 약자관계형 데이터베이스 관리 시스템(RDBMS)비관계형 데이터베이스 관리 시스템미리 정의된 스키마가 있는 구조화된 데이터에 적합비정형 및 반정형 데이터에 적합데이터는 열과 행이 있는 테이블에 저장됩니다.데이터는 컬렉션 또는 문서에 저장됩니다.트랜잭션 관리를 위해 ACID 속성 [Atomicity(원자성), Consistency(일관성), Isolation(격리), Durability(내구성)]을 따릅니다.반드시 ACID 속성을 따르지 않습니다.JOIN 및 복잡한..
Reactor 패턴 어떠한 이벤트가 발생하면, 이곳으로 알려달라는 방식. 윈도우 메시지 핸들러처럼, 특정 이벤트가 발생한다면 통지 받겠다는 방식. Proactor 패턴 특정 작업을 시키고, 그 작업이 완료되면 알려달라는 방식. IOCP에서 Completion Port가 이 방식을 취하고 있다. 말로만 보면 비슷한데, 깊이 고민해보면 차이점이 명확해진다. Proactor는 작업을 시키면서 콜백함수를 직접 넘김으로써 구현되고, Reactor는 디스패쳐를 구현하는 구조가 일반적. Reactor 패턴 사용시에는 디스패쳐를 통함으로써 스팟 포인트가 발생하게 되는 단점이 있다고 보면된다. 이에 비해 Proactor는 명령을 내린 작업에 대해서만 통지를 받게 된다. IOCP의 예를 들면, 내가 물려놓은 소켓에 Rec..

Nagle Algorithm 네트워크상에서 돌아다니는 패킷들의 흘러넘침을 막기 위해서 1984년에 제안된 알고리즘이다. 네트워크 전송 횟수는 줄이고 작은 데이터를 여러번 전송하기보단 데이터를 묶어서 한 번에 보내는 방식을 사용한다. Nagle 알고리즘은 네트워크 전송 빈도가 큰 서버에게 설정하는 것이 바람직하다. 알고리즘의 목적은 네트워크 전송 빈도를 낮추어 네트워크 부하량을 낮추어 효율성을 증가시키는 데 있다. TCP 프로토콜에서 작은 크기의 데이터를 잦은 빈도로 전송하게 되면 네트워크 효율이 감소된다. 큰 세그먼트를 묶어 전송하기 때문에 작은 크기의 세그먼트를 여러 번 보내는 것보단 느릴 수 있다. 알고리즘이 적용되면, 다음 데이터를 전송할 때 지연시간이 발생하므로 주의해서 사용해야 한다. Socke..

Time to live 컴퓨터나 네트워크에서 데이터의 유효 기간을 나타내기 위한 방법이다. TTL은 계수기, 타임스탬프 형태로 데이터에 포함된다. 정해진 유효기간이 지나면 데이터는 폐기된다. 컴퓨터 네트워크에서 TTL은 패킷의 무한 순환을 방지하는 역할을 한다. 어플리케이션에서 TTL은 캐시의 성능이나 프라이버시 수준을 향상시키는 데에 사용되기도 한다. mac terminal에서 ping localhost IP 패킷 IP에서 TTL은 8비트 크기의 필드다. IPv4 헤더에서 TTL은 20 옥텟 중 8번째 옥텟. IPv6 헤더에서 40 옥텟 중 8번째 옥텟이다. TTL의 최대값은 단일 옥텟의 최대값에 해당하는 255이다. 권장되는 초기 값은 64. TTL 값은 IP 데이터그램이 인터넷 시스템 내에 존재할 ..

Condition Variable이란? Condition Variable은 특정 조건을 만족하기를 기다리는 변수라는 의미이다. 따라서 이를 이용하여 주로 thread간의 신호 전달을 위해 사용한다. 하나의 thread가 waiting 중이면 조건을 만족한 thread에서 변수를 바꾸고 signaling을 통해 깨우는 방식이다. Condition Variable 사용법 Condition Variable은 앞서 말했 듯 waiting과 signaling을 사용한다. 따라서 기본적으로 cond_wait()와 cond_signal() 함수를 사용하게 된다. 또한 wait와 signal 내부적으로 unlock()과 lock()이 각각 앞 뒤로 있기 때문에 외부를 lock()과 unlock()으로 감싸야 한다. 그..

IOCP IOCP는 Overlapped I/O에 스레드 풀링(Thread pooling)과 큐(Queue)라는 매커니즘을 동시에 접목시킨 기술 Overlapped I/O와 차이는? CreateCompletionPort() 함수를 통해 소캣과 컴플리션 키를 관리하는 디바이스 리스트 자료구조 사용, 디바이스 리스트는 컴플리션포트 객체에 등록된 디바이스를 관리한다. IOCP 큐 자료구조 : Overlapped는 모델을 요청하면 작업이 완료되는 순간 이벤트나 콜백함수로 결과를 돌려줬다. IOCP는 커널이 프로그래머가 요청한 Overlapped 작업이 완료되었을 때 곧바로 사용자에게 알리는 것이 아니라 완료된 작업 결과를 IOCP 큐에 넣은 후 컴플리션 객체를 이용해 사용자에게 알린다. 커널 스레드 풀링을 통해 ..