목록2025/01/20 (8)
내 잡다한 노트
Unix Domain Socket은 동일한 호스트에서 실행 중인 프로세스 간 통신(Inter-Process Communication, IPC)을 지원하기 위한 소켓 통신 방식입니다. 일반적으로 네트워크 소켓(TCP/IP)을 사용하는 것과 달리, Unix Domain Socket은 동일한 운영 체제 내에서만 작동하며, 네트워크 스택을 거치지 않으므로 더 빠르고 효율적입니다.1. Unix Domain Socket의 특징1.1 파일 시스템 기반Unix Domain Socket은 파일 시스템의 소켓 파일(예: /tmp/my_socket)을 통해 통신합니다.소켓 파일은 특별한 유형의 파일로, 프로세스가 소켓에 데이터를 읽거나 쓰면 다른 프로세스가 이를 받을 수 있습니다.1.2 빠른 통신네트워크 스택(TCP/IP)..
일단 IPC ( Inter-Process Communication ) 에는 공유메모리, 소켓, 파이프, DBus, 메세지 큐 등이 있다. 1. IPC 방식에 따른 속도 비교1.1 공유 메모리(Shared Memory)속도:공유 메모리는 가장 빠른 IPC 방식 중 하나입니다.이유는 두 프로세스가 동일한 물리적 메모리 영역을 직접 액세스하기 때문입니다.메모리 접근 속도는 나노초(ns) 수준입니다.사용 사례:대량의 데이터 전송이 필요할 때.고성능 실시간 애플리케이션(예: 멀티미디어, 고속 트레이딩 시스템).제약:동기화(뮤텍스, 세마포어)가 필요하며, 이를 잘못 관리하면 경쟁 조건이나 데드락 문제가 발생할 수 있음.1.2 파이프(Pipes)속도:파이프는 메모리 기반 버퍼를 사용하여 데이터를 전달합니다.일반적으로..
순차 쓰기 ( Sequential Write ) 와 랜덤 쓰기 ( Random Write ) 이거는 디스크(스토리지)에 데이터를 기록할 때의 접근 방식을 구분하는 용어이다.디스크가 데이터를 쓰는 물리적, 논리적 패턴에 따라 성능 차이가 생기기 때문에, 데이터베이스, 파일시스템, 어플리케이션 설계 시 이 둘의 특성을 잘 이해하는 것이 중요하다. 1. 순차 쓰기(Sequential Write)개념디스크의 연속된 공간(논리 주소/물리 주소)에 순서대로 데이터를 기록하는 방식입니다.예: 파일 마지막 위치에 데이터를 계속 이어붙이거나(Append), 로그 파일을 순차적으로 기록하는 형태.장점디스크 구조 관점에서, 자기 디스크(HDD)는 **디스크 헤드(헤드 암)**를 이동(시크, seek)할 필요 없이 연속 구역..
B-Tree는 데이터베이스나 파일시스템 등에서 디스크 접근 횟수를 최소화하고, 검색·삽입·삭제 연산을 효율적으로 처리하기 위해 고안된 균형 트리(Balanced Tree) 구조입니다. 노드 한 개가 다수의 **키(key)**와 자식 포인터를 보유할 수 있어, 이진 탐색 트리(Binary Search Tree)보다 더 넓은 폭(branching factor)을 가집니다. - 쉽게 말해, 디스크 블록 크기에 맞춰 한 노드 안에 여러 키를 묶어 저장하고, 이를 통해 트리 높이를 낮추어 디스크 I/O 횟수를 줄이는 것이 핵심 아이디어입니다. 1. B-Tree의 기본 개념Self-Balancing(균형 유지)B-Tree는 삽입·삭제 연산 후에도 노드 분할(split) 또는 병합(merge)을 통해 트리 높이가 ..
Log-Structured Merge Tree 의 줄임말이다.대규모 쓰기 작업을 효율적으로 처리하기 위해 고안된 데이터 구조로, 주로 NoSQL DB(예: Cassandra, HBase, LevelDB, RocksDB 등)나 검색 엔진(예: Lucene)에서 스토리지 엔진으로 활용됩니다. 일반적인 B-Tree 기반 스토리지 엔진과 달리, 쓰기 작업을 메모리에 먼저 로그 구조 형태로 누적(버퍼링)한 뒤, 주기적으로 디스크에 순차적으로 반영(머지)함으로써 랜덤 쓰기를 순차 쓰기로 전환하는 것이 핵심 아이디어입니다. 1. LSM Tree의 기본 개념쓰기(Write) 최적화전통적인 B-Tree는 노드 안에서 데이터를 삽입/삭제할 때 랜덤 접근이 자주 발생하며, 특히 디스크 기반 환경에서 성능 저하가 발생하기 쉽..
컬럼(Column)형 DB는 데이터를 열(컬럼) 단위로 물리적으로 저장하는 데이터베이스를 가리킵니다.이는 전통적인 행(Row) 지향 DB와 달리, 특정 컬럼에만 집중하는 집계·분석(OLAP) 쿼리를 매우 빠르게 처리할 수 있도록 최적화된 구조입니다.1. 컬럼 지향 DB의 기본 개념데이터 저장 구조전통적인 행(Row) 기반 DB에서는 한 레코드(행)에 속한 모든 컬럼 값이 연속해서 저장됩니다.반면, 컬럼 지향 DB에서는 동일한 컬럼 값들을 연속해서 저장(예: 모든 레코드의 ‘고객ID’만 모아서 저장)합니다.주된 목적: OLAP/집계 성능 향상대규모 데이터에 대해 SUM, COUNT, AVG 등 집계 연산을 수행할 때, 필요한 컬럼만 읽으면 되므로 디스크 I/O를 크게 줄일 수 있습니다.압축(Compress..
ClickHouse가 가진 철학과 추구하는 방향성 및 특징을 설명하는 글.1. 초고속 대화형 분석(OLAP)에 최적화컬럼 지향(Column-Oriented) 구조일반적인 행(Row) 지향 DB가 아닌 컬럼 단위로 데이터를 저장·압축·인덱싱함으로써,분석 쿼리에서 특정 컬럼들만 읽으면 되므로 I/O 양과 메모리 사용을 최소화합니다.집계(aggregation) 함수나 그룹화 쿼리에서 매우 빠른 성능을 낼 수 있습니다.실시간(근실시간) 대량 데이터 처리를 위한 설계트래픽 로그, 이벤트 로그, IoT 시계열 데이터 등 고속으로 유입되는 대규모 데이터를 수 초 이내에 쿼리할 수 있는 구조로 만들어졌습니다.OLAP + 대화형 쿼리(Interactive Query) 환경을 목표로 하며, 임의의 시점에 대해 초 단위 이..
**OLTP(Online Transaction Processing)**와 **OLAP(Online Analytical Processing)**는 데이터베이스 활용 관점에서 서로 다른 목적과 특징을 가진 두 가지 대표적 워크로드(Workload) 유형입니다.아래에서는 각각의 정의, 특징, 대표적인 사용 사례, 그리고 서로 다른 점을 자세히 정리해보겠습니다.1. OLTP(Online Transaction Processing)1) 개념OLTP는 주로 온라인 서비스/업무에서 발생하는 실시간 트랜잭션을 처리하는 데 초점을 맞춘 시스템입니다.예: 전자상거래 주문 처리, 은행 계좌 이체, 항공권 예약, 증권 매매 등.2) 주요 특징트랜잭션 지향(ACID 보장)데이터를 다루는 과정에서 원자성(Atomicity), 일관..