Database에서 ACID
·
Interview/DB
Database에서 ACIDACID는 데이터베이스 트랜잭션의 신뢰성과 무결성을 보장하기 위한 4가지 주요 특성을 나타내는 약어입니다. 트랜잭션은 데이터베이스에서 일어나는 작업의 단위로, 하나의 트랜잭션이 성공하면 그 작업이 영구적으로 반영되고, 실패하면 전체 작업이 취소됩니다. ACID는 이러한 트랜잭션이 안전하게 처리되도록 하는 기본 원칙을 의미합니다.1. ACID의 4가지 특성원자성(Atomicity)원자성은 트랜잭션이 모두 반영되거나 전혀 반영되지 않음을 보장하는 특성입니다. 즉, 트랜잭션 내에서 실행된 작업들이 모두 성공해야 하며, 하나라도 실패하면 전체 트랜잭션이 취소되고, 데이터베이스는 트랜잭션이 실행되기 전 상태로 돌아갑니다.예시: 은행에서 A 계좌에서 B 계좌로 돈을 이체하는 경우, 돈이 ..
DB에서 데이터 무결성
·
Interview/DB
DB에서 데이터 무결성데이터 무결성(Data Integrity)는 데이터베이스 내의 데이터가 정확하고, 일관되며, 신뢰할 수 있는 상태를 유지하도록 보장하는 개념입니다. 데이터 무결성은 데이터의 품질을 유지하고, 데이터베이스의 효율적인 운영을 위해 필수적입니다. 이를 위해 다양한 무결성 제약을 사용하며, 데이터의 저장, 수정, 삭제 등이 이루어질 때에도 데이터의 정확성과 일관성을 유지하는 것이 중요합니다.1. 데이터 무결성데이터 무결성은 크게 세 가지 유형으로 나눌 수 있습니다.개체 무결성(Entity Integrity): 각 테이블의 행을 고유하게 식별할 수 있는 키(예: Primary Key)를 사용하여, 중복되지 않는 고유한 데이터를 보장합니다. 예를 들어, 하나의 레코드가 중복되거나 누락되지 않도..
Database에서 DDL DML DCL
·
Interview/DB
Database에서 DDL DML DCL데이터베이스 관리 시스템(DBMS)에서 사용하는 SQL은 크게 세 가지 범주로 나눌 수 있습니다: DDL, DML, DCL. 이들은 각각 데이터 정의(DDL), 데이터 조작(DML), 데이터 제어(DCL)와 관련된 명령어들을 의미합니다. MySQL을 예시로 각 범주에 대해 설명하고 예시를 들어보겠습니다.1. 정의 기능(DDL: Data Definition Language)Definition 정의DDL은 데이터베이스의 구조를 정의하는 데 사용됩니다.테이블, 인덱스, 뷰, 스키마 등 데이터베이스 객체의 생성, 수정, 삭제 등을 할 때 사용합니다.주요 명령어:CREATE: 새로운 데이터베이스 객체(테이블, 인덱스 등)를 생성ALTER: 기존 데이터베이스 객체를 수정DRO..
Database View 가상 테이블
·
Interview/DB
Database View 가상 테이블데이터베이스에서 **View(뷰)**는 하나 이상의 테이블을 기반으로 한 가상 테이블입니다. 물리적으로 데이터를 저장하지 않으며, 쿼리를 통해 생성된 결과 집합을 나타냅니다. 쉽게 말해, View는 복잡한 쿼리의 결과를 테이블처럼 사용할 수 있게 해주는 도구입니다.1. View를 사용하는 이유(1) 데이터 접근 단순화복잡한 쿼리를 반복적으로 작성하는 대신 View를 사용하여 데이터 접근을 간단하게 할 수 있습니다. 예를 들어, 복잡한 조인, 서브쿼리 등을 통해 데이터를 조회해야 할 때, 이를 View로 만들어두면 간단하게 SELECT * FROM ViewName;으로 데이터를 조회할 수 있습니다.(2) 보안 및 데이터 접근 제어View를 통해 테이블의 특정 열이나 특정..
Python Yield
·
Interview/Python
Python Yieldyield는 Python에서 generator를 만드는 데 사용되는 키워드로, 함수의 실행을 일시 중단하고 값을 반환하며, 필요할 때 함수의 상태를 그대로 유지하면서 실행을 재개할 수 있습니다. 이를 통해 메모리를 효율적으로 사용하면서도 데이터를 순차적으로 처리할 수 있게 합니다.yield를 이해하려면 우선 generator와 iterator의 개념을 알아야 합니다.1. Generatoryield를 사용하는 함수는 generator 객체를 반환합니다. 이 generator는 __iter__()와 __next__() 메서드를 가진 이터러블 객체입니다. 즉, 반복 가능한 객체처럼 사용할 수 있으며, 한 번에 하나의 값을 생성(또는 반환)하고 다음 호출 때 그 상태를 기억합니다.def m..
Python ASGI vs WSGI
·
Interview/Python
ASGI vs WSGIPython 웹 프레임워크인 Django나 Flask에서는 웹 서버와의 통신을 효율적으로 처리하고, 서버의 요청을 애플리케이션으로 전달하기 위해 WSGI 또는 ASGI라는 인터페이스를 사용합니다.이 인터페이스는 Python 웹 애플리케이션의 표준 방식으로, 웹 서버와 Python 애플리케이션 사이에서 중간 역할을 합니다.WSGI (Web Server Gateway Interface)WSGI는 동기적인 웹 애플리케이션과 웹 서버 간의 인터페이스를 정의한 Python의 표준입니다. WSGI는 Python 웹 애플리케이션이 웹 서버와 소통할 수 있도록 도와주며, 동작 방식은 매우 단순합니다.동기 처리: WSGI는 기본적으로 동기 방식을 지원합니다. 즉, 요청이 들어오면 해당 요청이 완전히..
Python GIL과 Thread
·
Interview/Python
Python GIL과 ThreadPython이 기본적으로 단일 프로세스 환경에서 동작하는 주요 이유 중 하나는 GIL(Global Interpreter Lock)이라는 메커니즘 때문입니다.GIL은 Python 인터프리터가 한 번에 하나의 스레드만 실행되도록 제한하는 락(Lock)으로, 다중 스레드 환경에서 메모리 관리의 안전성을 보장하는 역할을 합니다.GIL은 동시에 하나의 스레드만 Python 바이트코드를 실행할 수 있도록 하여, 멀티코어 CPU의 성능을 제대로 활용하지 못하는 상황을 유발합니다. 다만, GIL은 충돌을 방지하고, Python의 메모리 관리 시스템(CPython)의 안정성을 보장하기 위해 필요합니다.1. GIL(Global Interpreter Lock)의 배경Python은 기본적으로 ..
Golang Channel
·
Interview/Golang
Golang에서 CSP?Go 언어의 채널(Channel)은 Goroutine 간에 안전하게 데이터를 주고받을 수 있는 메커니즘입니다. 채널은 동시성 프로그래밍에서 중요한 역할을 하며, Go 언어의 동시성 모델인 Communicating Sequential Processes (CSP)를 구현하는 데 사용됩니다.Communicating Sequential Processe(CSP)CSP (Communicating Sequential Processes)는 동시성을 다루기 위한 수학적 모델로, 1978년 영국의 컴퓨터 과학자 Tony Hoare에 의해 제안되었습니다. 이 모델은 여러 개의 독립적인 프로세스들이 서로 통신을 통해 협력하여 작업을 수행하는 방식으로 동시성을 표현합니다. 프로세스는 각기 독립적으로 실행..
김 정출
'Interview' 카테고리의 글 목록