“Not Only SQL” : 데이터를 저장하는 데에는 SQL 외에 다른 방법들도 있다.
NoSQL이라고 하는 말은 No ‘English’ 라고 하는 말과 마찬가지다.
세상에는 영어 말고도 수많은 언어가 존재한다.
MongoDB에서 사용하는 쿼리 언어와 CouchDB에서 사용하는 쿼리 언어는 서로 전혀 다르다.
그럼에도 이 두 쿼리 언어는 같은 NoSQL 카테고리에 속한다.
어쨌거나 SQL이 아니기 때문이다.
또한 NoSQL이 No RDBMS를 의미하지는 않는다.
BerkleyDB같은 예외가 있기 때문이다.
Example
화장실에 일을 보러 가야 하는데
누군가가 사용하고 있다면 다른 사람은 사용할 수 가 없다.
이 때 문을 잠금다면(=Locking) 다른 사람이 들어가고 싶어도 못 들어(=Waiting) 간다.
안에 있던 사람이 문을 열고(=UnLocking) 나와야 다른 사람이 들어갈 수 있게 된다.
락킹은 내가 베타적으로 데이터를 갱신 & 사용하고 싶을 때 사용된다.
= 내가 사용하는 데이터를 그 누구도 못건드리게 하고 싶을 때 사용한다.
이런 부분을 임계 영역(Critical section)이라고 한다.
일반 유저가 사용하는 대부분의 OS는 선점형 시분할 운영체제이다.
그렇기 때문에 Chrom과 메모장을 동시에 실행시키면
각 프로그램은 일정 시간 동안만 CPU를 선점하여 사용한다.
이 때 할당되는 시간 단위를 타임 슬라이스(Time Slice)라고 한다.
이 동작 과정을 이해하기 위해선
프로세스와 쓰레드에 대해 알아야한다.
각 프로그램은 프로세스라는 단위로 움직인다.
그리고 프로세스 안에서 동작하는 실행 단위인 쓰레드가 존재한다.
Chrom으로 스포츠 영상을 보면 크롬이 프로세스가 되고
Chrom안에서 영상을 처리해주는 부분과 네트워크로 영상을 받아오는 부분이 각각 쓰레드가 된다.
그런데 프로세스 혹은 쓰레드가 Wait라는 상태가 되는 경우가 있다.
일반적으로 H/W는 CPU보다 느리다.
만약 디스크에서 데이터를 Read하는 작업을 한다면
CPU는 H/W의 Read 작업을 기다리지 않고 다른 작업을 진행하게 된다.
즉 CPU는 Read하는 명령을 요청하고 다른 작업을 진행한다. (= Context Switch)
SMT라는 명칭은 동시 멀티스레딩을 뜻하며 학계에서 주로 지칭하는 용어로 사용되고 있다.
시장에서는 인텔이 이 기술을 부르는 이름인 하이퍼쓰레딩으로 더 유명하지만
이 기술이 인텔 독점인 것은 아니며
AMD에서도 기존의 불도저에 적용한 CMT(Cluster Multi-Threading) 구조를 버리고
2017년 3월 초에 출시된 RYZEN에 이 구조를 채용하면서 사실상 거의 모든 데스크탑 CPU에 적용되는 기술이 되었다.
웹 브라우저는 3 way handshak 방식으로 서버와 연결을 맺는다.
그리고 위 작업이 수행되는 데 걸린 총 시간을 Connection Time 이라고 한다.
그런데 Connection Time을 무한으로 설정할 순 없으므로
일정 시간을 지정하게 되는데 그 시간이 초과하면 발생하는 게 Connection Timeout이다.
즉 Connection Timeout은 Connection을 구성하는데 소요되는 시간의 임계치를 의미한다.
스케줄러는 CPU 자원을 프로세스들에게 분배하는 OS의 중요한 일부분이다.
2007년 발표 된 리눅스 커널의 스케줄러인 CFS(Completely Fiar Scheduler)는
RSDL(Rotating Staircase Deadline) 스케줄러를 기초로 한 RB-트리(Red-Black Tree) 데이터 구조를 사용하는 O(logN) 성능을 가지는 스케줄러이다.
CFS는 시간단위로 나노초를 사용한다.
공개 키 암호 방식(公開 - 暗號 方式, public-key cryptography)은 암호 방식의 한 종류로
사전에 비밀 키를 나눠가지지 않은 사용자들이 안전하게 통신할 수 있도록 한다.
공개 키 암호 방식에서는 공개 키 와 비밀 키 가 존재하며
공개 키는 누구나 알 수 있지만 그에 대응하는 비밀 키는 키의 소유자만이 알 수 있어야 한다.
공개 키 암호를 구성하는 알고리즘은 대칭 키 암호 방식과 비교하여 비대칭 암호(非對稱暗號)라고 부르기도 한다.