CS 지식

데이터베이스에서 사용되는 트랜잭션은 기본 동작의 단위가 되므로 중요한 개념이다. 트랜잭션에 대해 알아보자.트랜잭션 (Transaction)이란?단일한 논리적인 작업 단위, 즉 더이상 분할이 불가능한 업무처리 단위이다.데이터베이스에서 트랜잭션의 의미를 적용해본다면 한꺼번에 수행되어야 할 일련의 연산 모음집이라고 생각하면 되겠다. SQL문을 실행할 때, 일부의 쿼리만 성공한다면 DB에 실제로 반영되는 일은 일어나지 않는다. 하나의 SQL 쿼리문이 트랜잭션이기 때문이다. 커밋 (Commit)지금까지 작업한 내용을 DB에 영구적으로 저장한다.트랜잭션을 종료한다. 롤백 (Rollback)지금까지 작업들을 모두 취소하고 트랜잭션 이전 상태로 되돌린다.트랜잭선을 종료한다. 자동 커밋 (Autocommit)각각의 SQ..
데이터베이스에서 인덱스는 성능 향상의 열쇠라고 할 수 있을 정도로 핵심적인 요소 중 하나이다. 인덱스가 무엇이고, 어떻게 적용되어 있는지 알아보자.인덱스란?추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조 인덱스를 쓰는 이유만약 다음과 같은 기본적인 조회 쿼리문이 있다고 해보자.SELECT *FROM UESRSWHERE NAME = "GAMJA";WHERE문을 통해 NAME 열을 조회할 때, 만약 단순히 완전탐색(Full scan)을 한다면 데이터의 개수만큼의 시간이 걸릴 것이다. 즉 데이터의 개수가 N개라면 시간복잡도는 O(N)이 된다. 이는 데이터가 많아지게 되면 쉽게 부하가 올 수 있을 것이다. 이를 인덱스를 통해 좀 더 효율적인 방법으로 개선한다..
데이터베이스 정규화는 그 정도에 따라 같은 양의 데이터를 보다 적은 비용으로 관리할 수 있게 해준다. 정규화에 대해 알아보자.정규화란?정규화란 데이터 중복과 insertion, update, deletion anomaly를 최소화하기 위해 일련의 normal forms(NF)에 따라 relational DB를 구성하는 과정이다.  정규화의 목적1. 불필요한 데이터(data redundancy)를 제거하여 불필요한 중복을 최소화2. 삽입/갱신/삭제 시 발생할 수 있는 각종 이상 현상(Anomaly)를 방지하기 위해서 테이블의 구성을 논리적이고 직관적으로 한다.  정규화 과정정규화는 실제로 6NF까지 존재하지만, 보통 3NF까지 도달하면 '정규화 됐다'라고 표현하며 BCNF 이후의 단계는 실무에서는 많이 사..
2024.01.09 - [CS 지식/Operating System] - [OS] Process Scheduling (프로세스 스케줄링) 앞선 글에서 프로세스 스케줄링에 대해서 알아보았다. 여느 것들과 마찬가지로 프로세스 스케줄링에도 여러가지 기법들이 존재한다. 어떤 것들이 있고 각각의 장단점을 살펴보자. FCFS (First-Come-First-Service) scheduling Non-preemptive scheduling → time quantum X Scheduling criteria 도착 시간 (ready queue) 먼저 도착한 프로세스가 우선순위를 가진다. 높은 자원 이용률을 가진다. batch systems에 적합하지만, interactive systems엔 적합하지 않다. 단점 Convoy..
운영체제는 프로세스를 효율적으로 가동시켜 작업 효율을 늘리기 위해 스케줄링 기법을 사용한다. 스케줄링이 무엇인지 알아보자. 배경 Multiprogramming (멀티 프로그래밍) 시스템에는 소수의 프로세서에 다수의 프로세스가 존재한다. 시스템은 많은 양의 프로세스를 최대한 효율적으로 프로세서에 할당하려고 하고, 결국 프로세서의 사용률을 최대한 증가시켜야 한다. 2가지 자원을 관리하는 측면에서 이를 살펴보자. 자원 관리 시간 자원 공유 (Resources for time sharing) 다수의 프로세스가 프로세서를 시간을 할당 받아 사용한다. (이 할당 받은 시간 단위를 time quantum 또는 time slice라고 한다.) 프로세스 스케줄링의 핵심이다. 공간 자원 공유 (Resources for s..
프로세스 간의 통신, IPC는 왜 필요하고 어떻게 이루어지는지에 대해 알아보고자 한다. IPC의 대표적인 모델 Message passing과 Shared memory를 알아보고, 분산 시스템에서 자주 사용되는 RPC에 대해서도 알아보고자 한다. IPC (Inter-Process Communication) 프로세스 간의 통신을 제공하는 이유 프로세스 사이에서 통신을 한다는 의미는 서로 협력하여 좋은 시너지를 낸다는 것인데, 이를 통해 아래의 이점을 얻을 수 있다. Information sharing (정보 공유): 여러 애플리케이션이 동일한 정보에 흥미를 느낄 수 있으므로, 그러한 정보를 병행적으로 접근할 수 있는 환경을 제공한다. Computation sppedup (연산 속도 증가): 만일 특정 태스크..
컴퓨터 네트워크의 핵심은 데이터를 '전달'하는 것이다. Fowarding과 Routing 모두 데이터를 전달하는 건 동일한데, 어떻게 다를까? 한번 알아보자. Forwading과 Routing Forwarding(포워딩) 라우터의 입력 링크부터 알맞은 라우터 출력 링크까지 패킷을 이동시키는 것 local action switching으로 불리기도 한다. Routing(라우팅) 패킷의 출발지에서 목적지까지의 경로를 결정하는 것 global action 다양한 라우팅 알고리즘이 존재한다. 실제로 라우팅 알고리즘에 의해 포워딩 테이블이 만들어진다. 즉, 패킷은 라우팅 알고리즘에 의해 만들어진 포워딩 테이블을 연속적으로 참조하여 출발지에서 목적지까지 운반되어진다. 실생활 예시 San Jose에서 Northamp..
실행해야 하는 프로그램은 많지만 사용할 수 있는 CPU 자원은 한정적이기에 이를 해결하기 위한 방안이 필요하다. 프로세스들의 CPU 쟁탈전, 그것은 Context Switching의 무수한 반복 안에서 일어난다. Context Switching이 무엇인지 알아보자. Context Switching 실제 물리적인 CPU는 한정적이지만, 일반적으로 여러 프로그램이 동시에 실행되는 경우가 많다. 이렇게 프로그램들은 어쨌든 CPU의 자원을 사용해야 하는데, 모든 프로그램들이 원하는만큼 자원을 사용할 수 없으므로 운영체제에서 사용되는 대표적인 기법이 Time sharing이다. 예를 들어 1개의 CPU를 가진 사용자가 A, B, C 3개의 프로그램을 동시에 실행하고 싶다고 하면 단순하게 하나의 프로그램을 1ms씩..
말도 못하는 감자
'CS 지식' 카테고리의 글 목록