데이터베이스
Parent category
| Category name | Modified | Articles |
|---|---|---|
| 컴퓨터 과학과 프로그래밍 | 0 |
Subcategories
No items have been published yet.
Articles
데이터베이스 인덱스는 조건에 맞는 행을 효율적으로 찾도록 별도로 유지하는 접근 구조이다. 여기서는 PostgreSQL을 예로 설명한다. 열이나 식에 대한 검색 구조를 만들면 전체 행을 읽는 대신 필요한 위치를 좁힐 수 있다. 옵티마이저는 통계와 비용을 고려해 실제 사용 여부를 결정한다. 주문 번호로 한 건을 찾는 질의가 많다면 해당 열의 인덱스가 탐색 비용을 줄일 수 있다. 조인이나 갱신 대상 검색에도 활용된다. 인덱스는 저장
공통 테이블 식은 WITH 절에서 이름을 붙인 보조 질의를 정의하고 같은 SQL 문장 안에서 참조하는 기능이다. 복잡한 질의를 단계별로 나누어 읽기 쉽게 만들 수 있다. 이름을 붙였다고 항상 결과가 별도 저장되거나 한 번만 계산되는 것은 아니다. 월별 매출을 먼저 계산하는 CTE를 만들고 바깥 질의에서 특정 기준 이상의 월만 선택할 수 있다. 최적화와 물리화 여부는 DB 및 질의 형태에 따라 다르다. 읽기 쉬운 표현과 빠른 실
SQL HAVING은 그룹화 및 집계 결과에 조건을 적용하는 절이다. 개별 입력 행을 거르는 WHERE와 구별한다. WHERE를 통과한 행들이 그룹화된 뒤 HAVING 조건으로 결과 그룹을 선택한다. 집계 함수의 결과를 조건에 사용할 수 있다. GROUP BY customer_id HAVING COUNT(*) >= 3은 주문 수가 3 이상인 고객 그룹을 찾는 형태이다. 행 조건을 HAVING으로만 처리하면 의도가 흐려질 수 있
SQL GROUP BY는 같은 그룹 키를 가진 행을 묶어 그룹 단위 집계를 수행하는 절이다. SUM, COUNT, AVG 등의 집계 함수가 각 그룹에 적용된다. 윈도 함수와 다르다. SELECT category, COUNT(*) FROM products GROUP BY category는 분류별 상품 행 수를 구하는 예이다. COUNT(*)는 행을 세지만 COUNT(column)은 해당 열의 NULL을 제외한다. 그룹에 속하지
SQL SELECT는 테이블이나 질의 결과에서 필요한 열과 행을 선택하는 질의문이다. 표현식 계산과 집계 등도 함께 수행할 수 있다. FROM으로 입력 관계를 정하고 WHERE로 행을 거르며 SELECT 목록으로 결과 열을 표현한다. SQL의 논리적 처리 설명과 실제 실행 계획은 구별한다. SELECT name FROM users WHERE active = true는 활성 사용자 이름을 조회하는 예이다. 문법과 불리언 표현은
데이터베이스 교착 상태는 여러 트랜잭션이 서로가 가진 잠금의 해제를 기다려 어느 쪽도 진행하지 못하는 상태이다. 순환 대기가 원인이다. 데이터베이스는 교착 상태를 탐지해 관련 트랜잭션 중 하나를 중단시키는 방식으로 진행을 회복할 수 있다. T1이 행 A를 잠그고 B를 기다리며, T2가 B를 잠그고 A를 기다리면 순환이 생긴다. 여러 객체의 잠금을 일정한 순서로 획득하면 위험을 줄일 수 있다. 중단된 트랜잭션은 전체 업무 단위로
트랜잭션 격리 수준은 동시에 실행되는 트랜잭션 사이에서 어떤 읽기와 결과를 허용할지 정하는 보장 수준이다. 읽기 미커밋·읽기 커밋·반복 읽기·직렬화 가능 등이 대표적이다. 같은 이름이라도 데이터베이스 구현이 더 강한 보장을 제공할 수 있다. PostgreSQL의 반복 읽기는 같은 트랜잭션의 스냅샷을 유지하고 팬텀 읽기도 방지하지만 모든 직렬화 이상을 막지는 않는다. 강한 격리는 대기나 실패 후 재시도 비용을 만들 수 있다. 이
Apache Cassandra는 여러 노드에 데이터를 분산하고 복제하는 데이터베이스이다. 파티션을 중심으로 데이터를 배치하고, 쿼리에서 필요한 접근 경로에 맞추어 테이블을 설계한다. CQL의 표면적인 문법이 SQL과 비슷하더라도 관계형 데이터베이스의 조인 중심 설계와는 차이가 있다. Cassandra는 Dynamo 계열 분산 설계와 LSM 계열 로컬 저장 구조를 결합한다. 파티션 키에 따른 데이터 배치, 복제, 노드 상태 전파




