목록2020/10 (4)
nathan_H
Intro 어플리케이션 개발을 함에 있어, 데이터베이스는 필수적으로 사용하게 된다. 그리고 데이터베이스도 SQL, NoSQL 중 선택의 갈림길에 놓이게 된다. SQL & NoSQL의 각 특징을 파악하고, 어떤 상황과 용도로 사용하는 것이 적절한지 정리하고자 한다. SQL SQL(Structured Query Language)은 데이터베이스 자체를 나타내는 용어는 아니다, 특정 유형의 데이터베이스와 상호 작용하기 위한 쿼리 언어이다. 그래서 정확히 이야기 하면, RDMBS에서 사용되는 쿼리 언어라고 보면 되는데, 설명을 위해 SQL을 RDBMS 의미로 같이 사용할 예정이다. RDBMS (관계형 데이터베이스) 특징 엄격한 스키마 : 정해진 데이터 스키마(구조)에 따라 데이터베이스 테이블에 저장된다. 관계 :..
Intro 디비를 구성하고, 개발을 진행하다보면, 테이블 하나로 처리가 되는 경우가 매우 드물고 실제 비즈니스 로직에서는 다양한 테이블에 데이터를 합친 결과물을 전달해주는 경우가 많다. 이때 여러 릴레이션을 함께 사용할 때 사용하는 DB 연산을 JOIN이라고 하는데, JOIN의 종류와 어떻게 수행되는지 정리해보고자 한다. JOIN 릴레이션 하나로 원하는 데이터를 얻을 수 없어 관계가 있는 여러 릴레이션을 함께 사용해야 하는 경우 조인 연산을 수행. 조인 연산은 조인 속성을 이용해 두 릴레이션을 조합하여 "하나의 결과 릴레이션을 구성." 자연 조인 공통된 속성을 가진 것을 비교. 세타조인 세타 조인은 주어진 조인 조건을 만족하는 두 릴레이션의 모든 튜플을 연결한 새로운 튜플로 결과 릴레이션을 구성. (비교..
Intro 프로세스와 쓰레드가 먼지는 알지만, 막상 말로 설명하려면 제대로 못하는 경우가 많다. 아는 것과 이해한 것은 다르기 때문에 이번에 명확하게 "이해"하고자 프로세스와 쓰레드에 대해 정리하고자 한다. 들어가기 전에 프로그램 & 프로세스 & 쓰레드 각 용어에 대한 의미를 파악하고 가자. 프로그램 : 작업을 위해 실행할 수 있는 파일. 프로세스 : 연속적으로 실행되고 있는 프로그램 스레드 : 프로세스 내에서 실행되는 여러 흐름의 단위 프로세스 프로세스는 앞서 언급했던대로, "실행되고 있는" 프로그램이다. 즉 운영체제 메모리에 올라와 실행되고 있는 단위라고 보면 된다. 특징 프로세스는 독립된 메모리 영역을 가지고 있다. Heap, Data, Code(text), Stack Heap : 프로세스가 실행되..
Intro 개발을 하다보면, 동기 / 비동기, Blocking & Non-Blocking 라는 용어는 한 번쯤 들어봤을 것이다. 그러나, 동기 / 비동기 & Blocking / Non-Blocking 각각의 내용을 제대로 명확하게 설명하기란 쉽지가 않다. 그래서 하나씩 뜯어 보면서, 어떤 목적으로 사용하는지에 대해 정리하고자 한다. Blocking I/O Application단에서는 I / O 작업을 직접 실행시킬 수 없다. 그래서 System_call로 Kernel을 통해 작업을 수행할 수 있다. system_call을 하게 되면 context-swtiching이 발생하면서 작업이 수행된다. 여기서 Blocking I / O을 통해 작업을 수행할 경우에는, 실행한 함수가 반환될 때까지 "대기"하고 있는..