목록2025/01/21 (8)
내 잡다한 노트
Lock은 데이터베이스에서 **동시성 제어(Concurrency Control)**를 위해 사용하는 메커니즘으로, 여러 트랜잭션이 동일한 데이터에 동시에 접근하거나 수정하는 상황에서 데이터의 무결성과 일관성을 보장합니다. 1. Lock의 역할데이터베이스에서 Lock은 다음과 같은 문제를 방지합니다:Dirty Read:하나의 트랜잭션이 아직 커밋되지 않은 데이터를 읽는 문제.Lost Update:두 트랜잭션이 동일 데이터를 수정하여 하나의 수정 내용이 덮어씌워지는 문제.Non-Repeatable Read:동일 트랜잭션 내에서 같은 데이터를 두 번 읽었을 때 결과가 달라지는 문제.Phantom Read:동일 트랜잭션 내에서 쿼리를 여러 번 실행했을 때, 새로운 행이 나타나거나 사라지는 문제.Lock은 이러..
**트랜잭션(Transaction)**은 데이터베이스 관리 시스템(DBMS)에서 하나의 논리적인 작업 단위를 말합니다. 트랜잭션은 데이터의 일관성과 무결성을 보장하기 위해 여러 작업(쿼리)을 하나로 묶어서 처리하며, 모든 작업이 성공적으로 수행되거나, 실패 시 모두 취소(롤백)되도록 보장합니다. 1. 트랜잭션의 주요 특징 (ACID)트랜잭션의 동작은 보통 ACID라는 네 가지 속성을 만족해야 합니다.1.1 Atomicity (원자성)트랜잭션은 모두 실행되거나, 전혀 실행되지 않아야 합니다.작업 중 하나라도 실패하면, 이미 실행된 작업도 모두 되돌려(롤백) 초기 상태로 복구합니다.예:송금 시, A 계좌에서 돈을 빼고 B 계좌에 입금. 하나라도 실패하면 둘 다 취소.1.2 Consistency (일관성)트..
Shard는 데이터베이스나 분산 시스템에서 데이터를 수평적으로 분할하여 저장하는 방법입니다. 데이터를 여러 **샤드(Shard)**라는 단위로 나누어 저장하고 처리함으로써, **확장성(Scalability)**과 **성능(Performance)**을 개선하고 데이터 용량을 효율적으로 관리할 수 있습니다.1. Shard의 핵심 개념데이터 분할:데이터셋을 작은 조각(Shard)으로 나누어 여러 서버에 분산 저장.각 샤드는 전체 데이터의 부분 집합(subset)을 포함.독립적 관리:각 샤드는 독립적인 데이터베이스나 스토리지 단위로 작동하며, 샤드 간에는 데이터가 중복되지 않음.확장성:데이터가 증가하면 새로운 샤드를 추가하여 시스템 용량을 확장 가능.2. Shard의 장점수평적 확장성 (Horizontal Sc..
Hot/Warm/Cold Architecture는 데이터를 저장하거나 처리하는 시스템에서 데이터를 접근 빈도와 중요도에 따라 분류하고, 이에 따라 적합한 스토리지 계층 및 처리 전략을 사용하는 아키텍처입니다. 이는 데이터의 비용 효율적 관리, 성능 최적화, 장기 보관을 가능하게 합니다.1. 핵심 개념Hot (핫 데이터):특징:가장 자주 접근되거나 실시간으로 처리해야 하는 데이터.낮은 지연 시간(Latency)과 높은 처리 속도 필요.예:실시간 대시보드 데이터.현재 활성화된 사용자 세션 정보.최근 생성된 로그 데이터.저장소 예:In-Memory DB (예: Redis, Memcached).고성능 SSD 기반 데이터베이스 (예: PostgreSQL, MySQL).클라우드 스토리지에서 고속 액세스 계층 (예:..
ClickHouse는 기본적으로 OLAP(분석) 용도 DB로 설계되었으며, 멀티 노드 구성을 통해 **고가용성(HA)**을 실현할 수 있습니다.그 핵심은 ReplicatedMergeTree 엔진(또는 변형: ReplicatedReplacingMergeTree, ReplicatedCollapsingMergeTree 등)을 사용해 서로 다른 노드에 테이블을 복제(Replication) 하고, **클라이언트(또는 Distributed 테이블)**에서 읽기 쿼리를 요청할 때 건강한(접근 가능한) 노드 중 하나에 연결하는 구조입니다.아래에서는 ClickHouse HA 아키텍처의 주요 요소와 구현 방법을 단계별로 정리해 봅니다.1. ReplicatedMergeTree로 테이블 복제ReplicatedMergeTree..
전통적인 RDBMS(예: MySQL, PostgreSQL, Oracle, SQL Server 등)에서도 **HA(High Availability)**를 위해 다양한 기술과 아키텍처가 있습니다. 일반적으로는 아래와 같은 패턴이 널리 쓰입니다.1. 단일 리전 내 HA1) Shared Disk Clustering (예: Oracle RAC)여러 DB 인스턴스가 동시에 하나의 스토리지(공유 디스크)를 사용.노드 중 하나가 죽어도 다른 노드들이 계속 같은 물리 디스크/스토리지를 바라보며 DB 서비스를 이어감.대표적으로 Oracle RAC(Real Application Clusters), MSSQL Server FCI(Failover Cluster Instance) 등이 있음.스토리지가 단일 지점(Single Po..
데이터베이스에서 **그룹화(Grouping)**는 데이터를 특정 기준(컬럼 값)에 따라 묶어서 집계(Aggregation) 작업을 수행하기 위해 사용됩니다. 그룹화는 주로 데이터를 요약하고 분석하는 데 유용합니다.SQL에서는 GROUP BY 명령어를 사용하여 그룹화를 수행합니다. 1. 그룹화의 목적1.1 데이터 요약그룹화는 개별 데이터 항목을 집계하여 전체 데이터를 요약하는 데 사용됩니다.예: 각 부서별 평균 급여 계산SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department; 1.2 데이터 분석그룹화는 데이터의 특정 패턴이나 경향을 파악하기 위해 자주 사용됩니다.예: 월별 판매량 집계SELECT MONTH(order_d..
1. 데이터 조작어 (DML: Data Manipulation Language)데이터를 조회, 추가, 수정, 삭제하는 데 사용됩니다.1.1 데이터 조회 (SELECT)SELECT column1, column2 FROM table_name; 조건 조회:SELECT * FROM employees WHERE department = 'Sales'; 정렬:SELECT name, salary FROM employees ORDER BY salary DESC; 중복 제거:SELECT DISTINCT department FROM employees; 그룹화 및 집계:SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department HAVING A..