CS
-
[Network] REST APICS/Network 2022. 2. 17. 15:14
REST API API(Application Programming Interface) API는 애플리케이션 소프트웨어를 구축하고 통합하는 정의 및 프로토콜 세트로, 컴퓨터나 시스템과 상호 작용하여 정보를 검색하거나 기능을 수행하고자 할 때, 사용자가 원하는 것을 시스템에 전달할 수 있게 지원하여 시스템이 이 요청을 이해하고 이행하도록 한다. 즉, API는 클라이언트와 클라이언트가 얻으려 하는 리소스 사이의 조정자 역할을 한다. 예를 들어, 날씨 서비스용 API에서는 사용자가 우편번호를 제공하고 생산자는 (최고 기온, 최저 기온)으로 구성된 응답을 하도록 지정한다. REST API REST API는 REST 아키텍처의 제약 조건을 준수하는 API를 말한다. REST 정의 REST는 'Representati..
-
[OS] Virtual Memory (2/2)CS/Operating System 2022. 1. 25. 12:02
앞선 포스트에서 가상 메모리(Virtual Memory)는 논리적 메모리와 물리적 메모리을 분리해 실제 메모리 크기와 상관 없이 가상의 메모리를 사용하는 것이 장점 이라고 설명했다. 그렇다면 가상 메모리에서 프로세스의 크기가 남은 물리적 메모리의 크기보다 더 클 경우 어떻게 할까? Swapping swapping이란 main memory에 있는 일부 프로세스를 secondary memory(HDD, SSD, Flash 등)으로 내보내고 실행할 프로세스를 secondary memory에서 main memory로 불러오는 작업을 말한다. swap out: secondary memory로 내보내는 과정 swap in: main memory로 불러오는 과정 swap time: swap out time + swa..
-
[OS] Virtual Memory (1/2)CS/Operating System 2022. 1. 23. 09:54
🔍 Backgroud 프로그램을 실행하기 위해서는 프로그램 코드를 디스크에서 메모리로 가져와야 한다. 만약 물리적인 메모리의 크기보다 프로그램의 크기가 더 크다면 이 프로그램은 실행할 수 없을 것이다. 하지만 실제 프로그램을 보면, 많은 경우에 프로그램 전체가 메모리에 올라갈 필요가 없다는 것을 알 수 있다. 이러한 생각으로 메모리에 프로그램의 일부를 로딩해 실행할 수 있는 가상메모리(Virtual Memory) 개념이 등장했다. Virtual Memory(가상 메모리)란 ? 가상 메모리는 논리적 메모리와 물리적 메모리을 분리해 실제 메모리 크기와 상관 없이 가상의 메모리를 사용하는 방법을 말한다. 가상 메모리를 사용함으로써 다음과 같은 이점들을 제공한다. 프로그램은 사용 가능한 물리적 메모리 크기에 제..
-
[OS] Cache LocalityCS/Operating System 2022. 1. 22. 18:24
캐시 지역성(Cache Locality) 캐시 지역성 원리 캐시 메모리는 속도가 빠른 장치와 느린 장치간의 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리이다. 이러한 역할을 수행하기 위해서는 CPU 가 어떤 데이터를 원할 것인가를 어느 정도 예측할 수 있어야 한다. 캐시의 성능은 작은 용량의 캐시 메모리에 CPU 가 이후에 참조할, 쓸모 있는 정보가 어느 정도 들어있느냐에 따라 좌우되기 때문이다. 적중률(Hit rate)을 극대화 시키기 위해 데이터 지역성(Locality)의 원리를 사용한다. 지역성의 전제조건으로 프로그램은 모든 코드나 데이터를 균등하게 Access 하지 않는다는 특성을 기본으로 한다. 즉, Locality란 기억 장치 내의 정보를 균일하게 Access하는 것이 아닌 어느 한 순간..
-
[Database] Database ScanCS/Database 2022. 1. 19. 21:18
Database Scan 앞선 인덱스 포스팅에서 항상 테이블 풀 스캔이 느린 것만은 아니라고 말했다. 어떤 경우에는 인덱스 스캔보다 테이블 풀 스캔이 빠른 경우도 있다. 데이터베이스의 데이터를 스캔하는 방법에는 여러가지 종류가 있고, 어떤 방법이 가장 최적의 방법이라고 말할 수 없다. 다양한 방법 중 적합한 방법을 적용하여 데이터베이스 성능을 높이는 것이 중요하다. 다양한 스캔 방법에 대해 알아보자. Table Full Scan 인덱스를 거치지 않고 테이블에 있는 모든 레코드를 읽는 방법 다중 블록 단위로 메모리에 옮겨지며, 이 블록들은 순차적으로 읽혀진다. (Sequential access + Multi Block I/O) 일반적으로 블록들은 서로 인접해 있기 때문에 한 번의 I/O로 처리 가능하다. ..
-
[Database] Transaction과 Isolation LevelsCS/Database 2022. 1. 19. 10:48
Transaction이란 ❔❔ 트랜잭션(Transaction)은 데이터베이스의 상태를 변환하는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 하나의 트랜잭션은 Commit되거나 Rollback된다. 트랜잭션의 특성 트랜잭션은 다음의 ACID라는 4가지 특성을 만족해야 한다. 원자성(Atomicity) 트랜잭션의 작업들이 모두 수행되거나 전혀 수행되지 않아야 한다. 트랜잭션이 부분적으로 수행된다면 데이터베이스에 반영되지 않아야 한다. 일관성(Consistency) 트랜잭션이 완료된 다음의 상태에서도 트랜잭션이 일어나기 전의 상황과 동일하게 데이터의 일관성을 보장해야 한다. 고립성(Isolation) 각각의 트랜잭션은 서로 간섭없이 독립적으로 수..
-
[Database] Clustered Index와 Non-clustered IndexCS/Database 2022. 1. 17. 16:24
앞선 포스트에서 Index(인덱스)에 대해 자세히 알아보았다. 인덱스는 크게 Clsutered Index와 Non-clustered Index로 나눌 수 있다. 이 두 종류의 인덱스에 대해 자세히 알아보자. Clustered Index와 Non-clustered Index Clustered Index Clustered Index는 테이블의 레코드를 지정된 컬럼에 대해 물리적으로 재배열한다. Clustered Index는 테이블 당 한 개만 존재할 수 있고, primary key 제약조건을 지정하는 컬럼에 대해 자동으로 Clustered Index를 생성한다. 이렇기 때문에 우리가 일반적으로 테이블을 생성할 때 특정 컬럼에 primary key 제약조건을 지정했다면, 데이터가 자동으로 정렬되는 것이다. C..
-
[Database] IndexCS/Database 2022. 1. 14. 22:55
Index란 우리가 실생활에서 자주 접해볼 수 있는 단어이다. 우리는 책에서 원하는 내용을 찾기 위해서 책의 처음부터 끝까지 원하는 내용을 찾아보는 것이 아니라 목차나 인덱스에서 원하는 내용을 먼저 찾은 뒤 해당 내용이 있는 페이지를 찾아간다. 이와 같은 방식으로 데이터베이스에서도 인덱스를 사용한다. Database에서 Index 란 ❔❔ 데이터베이스에서 인덱스란 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 데이터베이스에서 데이터 조회 요청을 하면, DB 서버 프로세스는 메모리(DB 버퍼 캐시)를 먼저 확인한다. 메모리에는 자주 사용되는 테이블이 캐싱되어 있는데, 메모리에 원하는 데이터가 없는 경우 디스크에서 데이터 파일을 복사해온 후 조회한 데이터를 찾아 반환한다. 이때 인덱스를 사..