분류 전체보기 160

star schema VS snowflake schema

star schema는 분석 성능을 높이고 사용자가 이해하기 쉬운 단순한 분석 환경을 구축하기 위해 필요하며,snowflake schema는 복잡한 데이터 간의 관계를 체계적으로 정리하고, 데이터 중복을 막아 저장 효율을 높이기 위해 필요한 구조이다. 대표적으로 활용되는 스키마의 특징을 알아야 프로젝트 상황(속도가 중요한지, 관리가 중요한지)에 맞는 아키텍처를 설계할 수 있으므로,우선 이 두 가지 스키마에 대해 정리해보고자한다. star schema 구조: 중앙의 팩트 테이블을 중심으로 여러 차원 테이블이 직접 연결된 단순한 형태임.특징: 데이터가 비정규화되어 있어 중복이 존재하지만 테이블 간 조인이 적음.제품 테이블 하나에 '브랜드'와 '공급타입' 정보가 모두 들어 있음. 데이터 분석가가 "어떤 공급타..

[dbt] Jinja in dbt

Jinja란?python으로 작성된 템플릿 언어로, dbt에서는 SQL 기능을 향상시키기 위해 사용된다.Jinja는 SQL 스크립트 내에서 조건부 논리, 루프, 변수 관리를 가능하게 해 dbt 프로젝트에 유연성 및 재사용성을 향상시켜주는 역할을 한다.따라서 엔지니어는 실시간 조건이나 커스텀 파라미터에 따라 동적으로 SQL을 변경 및 실행할 수 있다. Jinja 기본 문법* Jinja 사용 팁1. 실무에선 SQL에 Jinja로직을 너무 많이 넣지 않는 것을 권장 (for. 복잡성 down)2. 로직이 복잡해질경우 매크로로 분리하여 사용하는 것을 권장 구분자{{...}} : 값 출력. 더블 괄호 내에 포함된 내용은, 실제 값으로 대체되어 사용됨.SELECT organization_idFROM ..

[dbt] dbt는 무엇이고, 언제 활용될까?

(생성 AI를 사용한 내용은 🤖 아이콘으로 표기해두었습니다) I. dbt란?Data Build Tool의 약자로, 데이터 웨어하우스에 있는 데이터를 신뢰할 수 있는 분석용 데이터로 변환하기 위한 transformation workflow 툴임.dbt를 통해 다양한 환경에서 쌓이는 raw 데이터를 중복 없이, 검증된 규칙에 따라 구조화된 형태로 만듦으로써 downstream BI/도구에서 쓸 수 있도록 변환함. dbt의 작동 방식1) ELT 워크플로우에서 “T”단계 담당dbt는 “Extract → Load → Transform” 중에서 Transform 단계만 담당.즉, 데이터를 다른 시스템에서 추출하거나 로드하지는 않고, 이미 데이터 웨어하우스에 들어온 데이터를 변환(transformation) 하는 ..

OLAP & Data Warehouse

OLAP vs OLTP구분OLTP (트랜잭션 중심)(Online Transaction Processing)OLAP (분석 중심)(Online Analytical Processing)목적실시간으로 발생하는 수많은 트랜잭션을 빠르고 정확하게 처리하는 것이 목표의사결정을 돕기위해 복잡한 데이터를 분석하고 리포트를 생성하는 것이 목표주요 작업데이터 삽입, 수정, 삭제데이터 조회, 집계사용자현업 직원, 고객 (매우 많음)데이터 분석가, 경영진 (적음)데이터 범위최신 데이터, 상세한 개별 기록과거 이력 데이터, 요약 및 집계 데이터응답 속도밀리초(ms) 단위 (매우 빠름)수 초 ~ 수 분 (복잡도에 따라 다름)데이터 구조중복을 최소화한 정규화 구조분석 성능을 높인 비정규화(스타 스키마 등) 구조저장소관계형 데이터베..

[BigQuery] BigQuery With Partitioning & Clustering

BigQuery란?서버리스(Serverless) 대규모 데이터 웨어하우스. "서버리스"라는 말은 사용자가 서버를 사고 관리할 필요 없이, 그냥 데이터를 넣고 SQL로 질문만 던지면 된다는 뜻 BQ 핵심 특징① 초고속 성능 (분산 컴퓨팅)빅쿼리는 수천 대의 컴퓨터가 동시에 작업하는 Dremel이라는 엔진을 사용하여 테라바이트(TB) 단위의 데이터도 단 몇 초 만에, 페타바이트(PB) 단위도 몇 분 안에 분석함. ② 저장소와 연산의 분리 (Separation of Storage and Compute)데이터를 저장하는 곳과 계산하는 엔진이 완전히 떨어져 있어서, 각각 필요한 만큼만 확장하고 비용을 낼 수 있음.따라서, 데이터를 많이 저장한다고 해서 분석 엔진 비용이 올라가지 않고분석을 많이 한다고 해서 저..

ELT vs ETL 언제 사용하면 좋을까?

ETL vs ELT ETL (Extract - Transform - Load)소스에서 데이터를 추출하고 사전에 데이터를 변환한 후, 데이터베이스에 로드하는 프로세스Extract (HTTP 요청 등..)Transform (python 스크립트 등을 활용해 로컬에서 데이터 변환)Load (로컬 DB 등에 로드) ETL은 어떤 상황에 쓰기 좋을까?적합한 상황예시✔ 레거시 환경 또는 규제/컴플라이언스가 중요한 경우✔ 데이터 품질과 일관성을 사전에 엄격하게 관리해야 할 때✔ 데이터가 주로 **정형(structured)**이고, 스키마가 자주 변경되지 않을 때✔ 변환 로직이 복잡하고 미리 정제된 데이터를 필요로 할 때- 금융/헬스케어 업계처럼 민감 데이터 사전 검증이 중요한 경우- 데이터 웨어하우스로 보고용 정제 ..

[Kestra] Workflow Orchestration / Kestra 알아보기

Workflow Orchestration이란?워크플로우 오케스트레이션은 독립적인 데이터 도구들을 하나의 파이프라인으로 통합하고, 실행 순서를 지시하며, 오류 로깅, 복잡한 로직 구현(병렬 실행, 반복), 자동 실행(스케줄 또는 이벤트 기반)을 통해 데이터 파이프라인을 강화하는 것을 의미함. Kestra 란?Kestra는 workflow orchestration을 위한 도구로,Kestra는 데이터 소스에서 데이터를 추출하고 Python 스크립트에서 변환 후, 최종 데이터베이스에 로드하는 모든 과정을 조율하여 수동 작업 없이 데이터 흐름을 자동화하고 관리할 수 있도록 함. Kestra의 장점Kestra는 다음 장점들을 가지고 있음.1. 오픈소스 플랫폼이므로 엔지니어가 코딩, 노코드, AI를 활용하여 비즈니스..

[Docker] Docker + port & network 이해하기

docker 환경 구성을 하다보면 port, network 설정 등을 하게되는데,port는 내 컴퓨터와 컨테이너를 연결해주는것.. network는 컨테이너끼리 통신할 수 있게 해주는 것..정도로만 얘기할 수 있기에, 두 가지 개념에 대한 이해가 부족하다고 느꼈다. 그래서 이번 포스팅에서는 port, network 와 같은 개념에 대해서 짚어보고, 이를 기반으로 실습용으로 작성한 docker-compose.yaml 파일을 이해해보고자 한다.Port + DockerPort 란?하나의 컴퓨터에는 여러개의 서버가 설치될 수 있음. 클라이언트가 컴퓨터와 접속할 때 어떤 서버와 접속하려고 하는지 구분할 수 있는 방법이 필요한데, 이때 이를 구분해주는 수단이 포트임. 비유로 들자면,컴퓨터가 건물이라고 했을 때,- I..