view는 가상 테이블처럼 동작하는 저장된 쿼리입니다 — 테이블처럼 조회하지만 매번 기저 쿼리를 실행합니다. materialized view는 쿼리의 결과를 물리적으로 저장하며(주기적으로 갱신), 최신성을 읽기 속도와 맞바꿉니다.
일반 view — 저장된 쿼리
active_users
id, name, email users active ;
active_users name ;
view는 가상 테이블처럼 동작하는 저장된 쿼리입니다 — 테이블처럼 조회하지만 매번 기저 쿼리를 실행합니다. materialized view는 쿼리의 결과를 물리적으로 저장하며(주기적으로 갱신), 최신성을 읽기 속도와 맞바꿉니다.
active_users
id, name, email users active ;
active_users name ;
view는 가상 테이블입니다 — 데이터 자체를 저장하지 않고, 쿼리 정의만 저장합니다. view를 조회할 때마다 기저 쿼리가 현재 데이터에 대해 실행됩니다(항상 최신).
✓ 복잡한 쿼리 단순화 — 복잡한 JOIN/집계를 이름 붙은 view로 캡슐화
✓ 추상화 — 깔끔하고 안정적인 인터페이스 제공; 기저 테이블 복잡성 숨김
✓ 보안 — 특정 컬럼/행만 노출하는 view에 접근 권한 부여 (나머지 숨김)
✓ 재사용성 — 공통 쿼리 로직을 한 번 정의하고 어디서나 재사용
✓ 일관성 — 모두가 동일한 "active_users" 정의를 사용
view는 복잡한 로직을 캡슐화하고, 테이블에 대한 안정적인 추상화를 제공하며, 보안(특정 데이터만 노출)에 훌륭합니다.
-- 빠른 읽기를 위해 결과를 물리적으로 저장 (사전 계산)
CREATE MATERIALIZED VIEW monthly_sales AS
SELECT month, SUM(amount) AS total FROM orders GROUP BY month;
SELECT * FROM monthly_sales; -- 빠름 — 저장된 결과를 읽음, 재계산 안 함
REFRESH MATERIALIZED VIEW monthly_sales; -- 필요할 때 저장된 데이터 갱신
materialized view는 쿼리 결과를 물리적으로 저장합니다 — 그래서 읽기가 빠르지만(재계산 없음), 데이터는 마지막 REFRESH만큼만 최신입니다. 자주 조회되지만 약간의 오래됨을 허용하는 비싼 집계에 이상적입니다.
view → 항상 최신, 하지만 매번 쿼리 재실행 (복잡한 쿼리는 느림)
materialized view → 빠른 읽기 (사전 계산), 하지만 갱신 전까지 데이터가 오래될 수 있음
→ 추상화/단순화에는 view; 자주 읽히고 실시간 최신성이 필요 없는 비싼
쿼리 결과 캐싱에는 materialized view.
view는 추상화, 단순화, 보안을 위한 유용한 데이터베이스 기능이며, 이를(그리고 materialized view를) 이해하는 것은 데이터베이스 접근을 조직하고 최적화하는 데 가치 있습니다.
일반 view(가상 테이블로 동작하는 저장된 쿼리)는 실질적 이점을 제공합니다: 복잡한 쿼리 단순화(복잡한 JOIN/집계를 깔끔한 이름 붙은 view로 캡슐화), 테이블에 대한 안정적 추상화 제공(애플리케이션 코드나 다른 쿼리가 일관된 인터페이스 사용), 보안 가능(민감한 데이터를 숨기면서 특정 컬럼/행만 노출하는 view에 접근 권한 부여), 재사용성 촉진(공통 쿼리 로직을 한 번 정의).
이는 view를 유지보수 가능하고 안전한 데이터베이스 설계에 가치 있게 만듭니다. materialized view는 다른 요구 — 성능 — 를 다룹니다: 사전 계산된 쿼리 결과를 물리적으로 저장함으로써(주기적 갱신) 비싼 집계 읽기를 빠르게 하며, 잠재적 오래됨을 대가로 합니다.
트레이드오프 — 일반 view는 항상 최신이지만 매번 쿼리를 재실행하고, materialized view는 빠르지만 갱신 전까지 오래될 수 있음 — 를 이해하는 것은 올바른 선택에 중요합니다(추상화/단순화에는 view, 약간의 오래됨을 허용하는 비싸고 자주 읽히는 결과 캐싱에는 materialized view).
쿼리 로직 조직(추상화와 보안을 위한 view)과 비싼 반복 쿼리 최적화(캐싱을 위한 materialized view)는 데이터베이스 작업의 실제 요구이고, 두 유형과 최신성/성능 트레이드오프를 이해하면 적절히 적용할 수 있으므로, view와 materialized view를 아는 것은 유지보수 가능하고 성능 좋으며 안전한 데이터베이스 접근을 구축하는 데 유용하고 실용적인 지식입니다.