일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- SQL
- 구현
- Vue.js
- 모의SW역량테스트
- SWEA
- programmers
- spring boot
- Priority Queue
- 코딩테스트
- Back tracking
- Data Structure
- Trie
- JavaScript
- 알고리듬
- 알고리즘
- Python
- aws
- 코테
- Bruth Force
- CSV
- Linked list
- GitHub
- BFS
- boj
- django
- Algorithm
- gpdb
- 시뮬레이션
- hash table
- DFS
- Today
- Total
hotamul의 개발 이야기
Star Schema, Snowflake Schema 본문
Start Schema ⭐️
What is Start Schema?
Star Schema란 data warehouse, data marts와 같은 OLAP(Online Analytical Processing)에 적합한 multi-dimensional 데이터 모델이다. Star Shcema는 주로 대용량 데이터 셋을 조회하는데 최적화되어있다.
1990년대 Ralph Kimball에 의해 소개된 Star Schema는 데이터의 저장, history 유지, 데이터 업데이트를 효율적으로 처리하면서 반복적인 비즈니스의 정의의 중복을 줄이고 data warehouses에서 데이터를 집계하고 필터링하는데 빠르게 도와준다.
Fact Tables and Dimension Tables
Star Schema는 데이터를 Dimension 테이블과 Fact 테이블로 구성된 비정규화 데이터 모델링 방법이다.
Fact 테이블을 중심으로 Dimension 테이블이 확장되는 패턴을 가지며 별 모양처럼 보이기 때문에 Star Schema라는 이름이 붙은 것으로 보인다.
위 예시 이미지에서 중앙에 위치한 Fact 테이블은 거래 금액 또는 수량과 같은 비즈니스 데이터를 포함하고 있다. Fact 테이블은 시간 또는 제품과 같은 Dimension을 따라 여러 다른 Dimension 테이블과 연결된다. Star Schema를 사용하면 원하는 데로 데이터를 잘라낼 수 있어, 상황에 따라 필요한 Dimension 정보만 JOIN 해서 사용할 수 있다.
Denormalized Data (비정규화 데이터)
Start Schema는 데이터를 비정규화하는데, 이는 데이터를 더 빠르고 쉽게 조회하고 연산하기 위해 일부 Dimension 테이블에 중복 열을 추가하는 것을 의미한다. 즉 계산적으로 비용이 많이 발생하는 JOIN 연산을 피하고 쿼리 속도를 증가시키기 위해 데이터 모델에서 일부 중복을 허용하는 것이다.
Star Schema는 정규화된 Fact 테이블과 데이터 중복을 허용한 Dimension 테이블로 구성되며, 데이터 중복을 허용하여 JOIN 연산으로 인한 비용을 최소화하는 방법이라고 할 수 있다.
Star Schema 장점
Star Scheme과 같은 Fact/Dimension 모델은 이해하기 쉽고 구현하기 쉬우며 최종 사용자가 필요한 데이터를 쉽게 찾을 수 있게 해 준다. 정규화된 Snowflake Schema와 비교했을 때 데이터 조회 시 JOIN에 대한 의존성이 줄어 간단한 쿼리를 작성할 수 있다.
즉 Star Schema는 계산적으로 비용이 많이 드는 JOIN을 피하고 최종 사용자가 원하는 Dimension만 선택해서 쉽게 조회할 수 있다는 장점이 있다.
3NF(Third Normal Form)과의 차이점은?
3NF(3차 정규형)는 기본키를 제외한 속성들 간의 이행적 함수 종속이 없는 것이다. 풀어서 말하자면, 기본키 이외의 다른 컬럼이 그 외 다른 컬럼을 결정할 수 없는 것이다.
3NF는 정규화를 통해 데이터 중복을 줄이는 방법으로 일반적으로 conventional database에서 사용되는 정규화 표준이다. 3NF는 데이터 정규화로 인해 Star Schema보다 일반적으로 더 많은 테이블을 가지고 있으며 대형 테이블 간 JOIN의 증가로 쿼리가 복잡해지고 연산 비용이 높을 수 있다.
(반면 Star Schema는 Fact 테이블은 정규화되어 있지만 Dimension 테이블에 데이터 중복을 허용한다.)
Snowflake Schema ❄️
What is a Snowflake Schema?
Snowflake Schema는 Dimension 테이블이 Sub Dimension 테이블로 분해된 Star Schema의 확장 버전이다. Snowflake Schema도 OLAP data warehouses, data marts에 적합하고 relational database에도 적용될 수 있다.
아래의 ERD(Entity-Relationship Diagram)을 보면 "Snowflake"(눈송이)처럼 보이기 때문에 Snowflake Schema라고 이름이 붙여졌다고 한다.
Star Schema vs Snowflake Schema
Star Schema와 마찬가지로 Snowflake Schema는 여러 Dimension 테이블과 외래 키를 통해 연결된 중앙 Fact 테이블로 구성된다. 하지만 큰 차이점은 Star Schema보다 "더 정규화"되어 있다는 것이다.
Snowflake Schema는 엄격한 정규화 기준을 준수하여 더 많은 "저장 효율성"을 제공하지만 쿼리 성능은 Star Schema에 보다 좋지 않을 수 있다.
Snowflake Schema 장/단점
장단점은 아래와 같다고 한다.
Benefits of snowflake schemas
- Fast data retrieval
- Enforces data quality
- Simple, common data model for data warehousing
Drawbacks of snowflake schemas
- Lots of overhead upon initial setup
- Rigid data model
- High maintenance costs
'etc.' 카테고리의 다른 글
Data Consistency in Distributed Systems (microservices) (0) | 2023.10.13 |
---|---|
Prometheus Pulling (pros and cons) (0) | 2023.04.24 |
DevOps와 SRE(Site Reliability Engineering) 차이 (0) | 2023.04.17 |
왜 빠르게 개발하고 적용해야 할까? (0) | 2023.04.14 |
Big data/event-driven Architecture (0) | 2023.03.17 |