본문 바로가기

Computer-Sience41

[Database] 이상 / 정규화 / 반정규화 DB를 이용할 때, 특정 조건을 충족하면 여러 문제를 야기할 수 있다. 이를 이상이라고 하며, 아래 내용을 통해 그 종류를 알 수 있다. 1. 이상 (Anomaly) 이상이란 DB에서 중복된 데이터 구조로 인하여 예기치 못하게 발생하게 되는 현상이다. 이상의 종류에는 3가지가 있다. 삽입 이상 : 데이터를 DB에 Insert 할 때, 의도하지 않은 값들이 같이 입력이 되는 현상 - Ex : 특정 속성의 값만 추가하고자 할 때, 다른 속성 값이 비게 되며 부분이 Null 값으로 입력되거나 데이터의 삽입이 실패하는 현상을 볼 수 있다. 삭제 이상 : 하나의 튜플을 삭제할 때, 의도하지 않은 값들과 함께 삭제되는 현상 - Ex : 특정 속성 값을 기준으로 튜플을 삭제하면 다른 속성들과 함께 삭제가 돼버리는 현.. 2023. 4. 11.
[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.
[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.