본문 바로가기

전체 글120

[Database] Index Index : 데이터베이스는 관련 레코드를 찾기 위해 전체 테이블을 스캔해야 하고, 이는 특히 테이블이 매우 큰 경우 매우 느리고 비효율적일 수 있기에 Index를 사용하게 된다. Index는 테이블의 특정 Column 또는 Field를 기반의 데이터를 빠르게 검색할 수 있는 데이터 구조이며, 일반적으로 B tree(Balance Tree) Algorithm에 의하여 Index가 생성이 된다. [Index 생성에 기반이 되는 알고리즘이 다수 존재] 페이지의 내용을 기반으로 특정 페이지를 빠르게 찾을 수 있는 책의 색인과 유사하다. 인덱스가 효율적인 이유는 대수확장성을 들 수 있으며, 이는 트리 깊이가 리프 노드 수에 비해 매우 느리게 성장하는 것을 말한다. [깊이가 증가할 때마다 최대 인덱스 항목의 수는.. 2023. 2. 12.
[Database] Transaction(트랜잭션) 트랜잭션(Transaction) : 트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한번에 모두 수행되어야 할 일련의 연산들을 의미한다. 특징 : 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위 하나의 트랜잭션은 Commit 또는 Rollback 성질 (ACID) : 1. Atomicity(원자성) : 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다. 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느하나라도 오류가 발생하면 트.. 2023. 2. 11.
[Docker] Docker / Virtual Machine 과거에는 VM(가상머신)과 Container(컨테이너)라는 개념이 존재하지 않았고, 그에 따라 필요한 만큼 물리적으로 서버를 새로 구축하여 연결하는 작업을 했었다. 각 서비스가 요구하는 환경설정이 있고, 특정 서비스가 다른 서비스가 필요로 하는 환경과 충돌이 일어날 수 있기 때문에 물리적으로 분리를 시켜 구축을 했었던 것이다. 이로 인해 나온 것들이 Virtual Machine(가상머신)과 Containerization(컨테이너화)이다. 위 두 가지를 통하여 서로 격리된 환경에서 애플리케이션을 구동할 수 있는 것이다. 가상머신과 컨테이너의 가장 큰 차이점은 OS의 공유하는 데 있어 차별점을 둔다. 1. Virtual machine (가상머신) 가상머신은 생성할 때마다 Guest OS를 새로 설치해야 하기.. 2023. 2. 10.
[OS] Process(프로세스) / Thread(스레드) 프로그래밍을 시작하게 되면서 과거에는 단어의 정확한 이해가 없이 대략적인 의사전달만을 위한 단어들을 말하는 습관을 고치는 계기가 되었다. 그중 하나가 스레드와 프로세스였는데 이 둘은 확연히 다른 단어이며 해당 포스팅에서 다뤄볼 것이다. 1. Process(프로세스) 운영체제로부터 자원을 할당받은 작업의 단위이며, 각 작업에는 운영체제로부터 부여받은 프로세스 식별자(PID)를 가지고 있다. 한 개의 프로세스에는 하나 이상의 스레드를 가지고 있고, 프로세스 간에 통신을 하려면 IPC(Inter Process Communication)를 요구한다. 프로세스는 Code / Stack / Heap / Data의 4가지 영역으로 구분되어 있으며, Code / Data를 정적 영역으로, Stack / Heap을 동적.. 2023. 2. 9.
[OS] Sync / Async / Blocking / Non-Blocking 프로그래밍을 시작한 사람들 중 동기 및 비동기에 대하여 많이 접해봤을 것이다. Syncronous (동기) :동시 발생[존재]하는 Asynchronous(비동기) : 동시에 존재[발생] 하지 않는 이라는 단어의 뜻을 가지고 있으며, 단어만 보았을 때에는 이해가 바로 되지 않을 수 있다. 동기와 비동기는 특정 작업들이 있을 때, 작업 완료의 여부와 관련된 순서에 관한 것이고, 유사하지만 다른 개념인 Blocking / Non-block도 같이 알아볼 것이다. Blocking/Non-blocking : 프로세스의 유휴 상태(제어권)에 관한 것 - Blocking : 호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수가 제어권 없이 대기 - Non-blocking : 호출된 함수가 리턴 후 호출한 함수.. 2023. 2. 8.
[Network] HTTP(Hypertext Transfer Protocol) HTTP는 www(world wide web) 상에서 정보를 교환할 수 있도록 내재된 프로토콜이다. OSI 7 계층의 Application Layer에 속하여 있다. 포트는 기본적으로 80번을 사용하고, 주로 HTML 문서를 주고받는데 이용되며, TCP를 주로 사용하되 HTTP/3 부터 UDP를 이용한다. HTTP는 사용되는 주체에 따라 클라이언트(사용자), 서버로 나뉘어서 구분할 수 있으며, Request(요청)과 Response(응답)에 따라 주체 간의 상호 작용을 통하여 자료를 송/수신한다. 이를 기반으로 URL에 자원의 위치를 명시하고 HTTP Method(POST/GET 등)을 이용하여 해당 위치의 자원과 상호작용하는 것이 REST(Representational state transfer)이다... 2023. 2. 7.