Codeit Sprint/Weekly_Paper 21

위클리 페이퍼 #17 - BigQuery에서 쿼리 성능을 최적화

BigQuery에서 쿼리 성능을 최적화하는 방법은 여러 가지가 있으며, 데이터 구조와 쿼리 패턴을 효과적으로 설계하는 것이 중요합니다. 아래는 주요 전략들입니다:1. 데이터 스캔 최소화파티셔닝과 클러스터링: 데이터를 날짜, 범주 등으로 파티셔닝하여 필요한 데이터만 읽도록 합니다. 클러스터링을 통해 특정 열을 기준으로 데이터를 정렬하면 쿼리 비용과 실행 시간이 감소합니다.SELECT 최적화: 필요한 열만 선택합니다. SELECT *를 피하고 특정 열을 명시하여 비용과 처리 시간을 줄입니다.2. 쿼리 작성 최적화조인 순서와 유형: 작은 테이블을 왼쪽에 두어 Broadcast Join을 활용하거나, 큰 테이블 간 조인 시 Hash Join을 사용합니다. 데이터 크기가 비대칭적일 경우, 미리 필터링하거나 WHE..

위클리 페이퍼 #17 - On-premise, Cloud, Serverless 데이터 웨어하우스의 특징

1. 온프레미스 데이터 웨어하우스특징하드웨어 소유 및 관리조직 내 물리적인 서버에 직접 데이터 웨어하우스를 구축하고 운영합니다.초기 비용 높음하드웨어 구매 및 설치, 유지보수 비용이 발생합니다.제어력데이터 보안, 성능 최적화 및 접근 제어를 직접 관리할 수 있습니다.확장성 제한하드웨어 업그레이드가 필요하며, 확장이 어렵고 시간 소요가 큽니다.성능 최적화 가능특정 워크로드에 최적화된 구조를 설계할 수 있습니다.인터넷 의존성 없음네트워크 외부 의존성이 없어 오프라인 환경에서도 운영 가능합니다.적합한 경우민감한 데이터로 인해 강력한 보안이 필요한 경우 (예: 금융, 의료)정해진 예산 내에서 장기적으로 사용하려는 경우2. 클라우드 데이터 웨어하우스특징유연성 및 확장성사용량에 따라 자원을 동적으로 확장하거나 축소..

위클리 페이퍼 # 16 - Airflow Operators

Airflow에서의 Operator에 대해서 설명을 하자면 DAG의 Task를 정의하는 기본요소로, 다양한 작업을 수행 할 수 있습니다. 1. 기본 OperatorOperatorDescriptionDummyOperator아무 작업도 하지 않는 더미작업. DAG의 흐름 테스트나 작업 분기점에서 주로 사용PythonOperatorPython 함수를 실행, 주로 Python 코드로 작업을 하는 경우에 사용BashOperatorBash 명령어 또는 스크립트를 실행.BranchPythonOperatorif문과 같은 조건문을 사용하거나 다른 조건문을 이용해 조건에 따른 실행될 Task를 분기 2. 데이터베이스 OperatorsOperatorDescriptionPostgresOperatorPostgreSQL 쿼리를 ..

위클리 페이퍼 #16 AIRFLOW - DAG와 Task

Apache Airflow에서 DAG와 Task는 워크플로우를 정의 및 실행을 하는 핵심 개념으로 사용됩니다. DAG(Directed Acyclic Graph)- 정의 :작업(Task)들의 흐름을 나타내는 구조로, 방향성이 있으면서 사이클이 없는 그래프 입니다.- 역할 : 워크플로우의 전체 구조를 정의작업 간의 순서와 의존성을 나타냄지정된 시간(Schedule)에 따라서 실행됨- 특징 : Directed(방향성) : 작업은 항상 지정된 순서로만 실행됩니다.Acyclic(비순환성) : 작업 순환이 없어 무한루프가 발생되지 않습니다.from airflow import DAGfrom airflow.operators.dummy_operator import DummyOperatorfrom datetime impo..

위클리 페이퍼#15 - 엔터티, 속성, 관계

논리적 모델링에서 사용하는 주요 구성 요소는 엔터티(Entity), 속성(Attribute), 그리고 관계(Relationship)으로 데이터를 체계적으로 구조화하고, 데이터간의 연관성을 명확하게 하는 방법으로 아래에서 하나씩 설명하도록 하겠습니다. 엔터티(Entity)- 독립적으로 존재하며, 데이터베이스에서 저장하고 관리하고자 하는 객체를 의미 하는데 간단히 예시를 들어서 설명하자면, 학생, 강의, 교수 등 여러 가지가 있습니다. - 예시)학생 : 학생은 엔터티로서, 각 학생 개체가 개별적으로 데이터베이스에 저장됩니다.강의 : 강의는 엔터티로서, 각 강의 개체가 개별적으로 데이터베이스에 저장됩니다.속성(Attribute)- 엔터티의 특성을 나타내며, 엔터티의 데이터를 구체화하는 역할을 하는데, 학생의 ..

위클리 페이퍼#15 - 데이터베이스 정규화

데이터베이스 정규화란 무엇인가요? 또, 정규화의 장단점은 무엇인가요? 정규화란?데이터베이스에서 정규화는 데이터를 구조화하고, 중복을 줄이며, 데이터의 무결성을 유지하기 위한 과정으로 여러 단계로 나뉘게 되는데, 각 단계별 특정 규칙에 따라서 나뉘게 됩니다. 이때 정규화 과정을 거치는데 1차 정규형(1NF), 2차 정규형(2NF), 3차 정규형(3NF)가 있으며, 단계가 높아질수록 무결성이 높아지게 됩니다. 정규화를 거치는 이유중의 하나로. 이상종류에 의해서 발생되어지는 문제들이 있기 때문에 이를 해결하기 위해서 정규화를 진행합니다. 삽입 이상, 삭제 이상, 갱신 이상과 같이 데이터의 중복성과 무결하지 않은 상태에 의해서 문제들이 야기될수 있습니다. 제1 정규화(1NF)데이터베이스의 각 COLUMN(열)이..

위클리 페이퍼 #14 - GROUP BY와 HAVING 절

GROUP BY절과 HAVING절은 SQL에서 그룹화된 데이터를 필터링할 때 사용하는 명령어이지만 용도와 위치의 차이가 존재함에 따라서 아래에서 설명을 진행하겠습니다.GROUP BY 절'GROUP BY'는 데이터를 특정 컬럼 값에 따라 그룹으로 묶을 때 사용 되고 SELECT 절에서 SUM, COUNT, AVG와 같이 각 그룹에서 원하는 통계적 정보를 추출할 때 사용이 가능합니다. SELECT name, SUM(value)FROM sales_dataGROUP BY name; HAVING 절'HAVING'절은 GROUP BY절로 그룹화된 데이터에 조건을 부여하여 필터링 할 때 사용합니다. WHERE절과 비슷하게 보이지만, 그룹화된 데이터에만 적용시킬수 있고, 위에서 설명한 집계 함수인 SUM, COUNT,..

위클리 페이퍼 #12 - K-폴드 교차검증

교차검증(Cross Validation)이란?ML에서 데이터를 이용해 학습시키고 이에 대한 예측 성능을 평가를 위한 테스트 데이터 셋을 필요로 한다. 하지만 이 과정중에 과적합(Overfitting)에 약점을 가지게 되는데, 편향된 모델을 해결하기 위해서 교차검증의 방법을 이용하여 다양한 학습과 평가를 수행하는 방법이다. 별도의 여러 세트로 구성된 학습 데이터 세트와 검증 데이터 세트를 학습과 평가를 수행하는 방법을 사용하는데, 교차 검증 과정에서 각 세트별 수행한 평가 결과에 따른 하이퍼 파라미터 튜닝등을 통해서 모델의 최적화를 쉽게 진행 할 수 있다. K 폴드 교차 검증(K-Fold Cross Validation)가장 보편적으로 사용되는 교차 검증 기법으로, 데이터 셋을 K 개의 데이터 폴드 세트를 ..

위클리페이퍼 #12 - 모델학습에서의 편향과 분산

모델 학습(ML) 시 편향(bias)와 분산(Variance)은 중요한 오류 요소이다. 편향(Bias)이란?모델이 학습데이터를 단순화 하여 학습하는 정도를 의미한다. 편향이 높은 경우에 모델이 데이터를 충분히 설명하지 못하여, 일반화 성능이 떨어지는 '과소적합(underfitting)'상태가 될 수 있다. 추정 결과가 한 쪽으로 치우치는 경향을 보임에 따라서 발생하는 오차이다. 예를 들어, 선형 모델을 아주 복잡한 데이터에 적용한다면 데이터의 복잡성을 충분히 방영하지 못해 높은 편향을 나타낼수 있다.  분산(Variance)이란?분산은 모델이 학습 데이터의 노이즈에 민감하게 반응하여 학습된 정도를 나타내고 분산이 높은 경우에 모델이 학습 데이터에 과하게 맞춰져, 다른 유형의 데이터에 대해서 예측 정확도가..

위클리 페이퍼 #11 - 손실함수(Loss function)

손실함수(Loss Function)손실함수(Loss function)이란 머신러닝과 딥러닝에서 주요 지표로 볼수 있는 것중의 하나로, 모델링을 평가할때 해당 ML 모델이 global loss에 도달했는지, local loss에 빠져서 못나오는지에 대해서 판단할수 있는 지표입니다. 즉, 훈련 데이터셋이 모델링에 잘 적응하고 개선이 되는지 파악할수 있다. 손실 함수는 머신러닝이나 딥러닝 모델이 예측한 값과 실제 값 사이의 차이를 측정하는 함수로, 모델의 성능평가 및 개선 방향성을 알려주는 역할을 하게 된다. loss function의 값이 최소화 될수록 데이터에 맞게 최적화가 잘된 모델이라고 판단할 수 있다. 수 많은 종류의 손실함수가 존재하며. 대표적으로 사용하는 몇가지 함수는 아래와 같다. MSE(Mea..