Data 5

Airflow 파헤치기 - 아키텍쳐 구조

Airflow에는 4가지 종류의 로그가 존재한다.Task/Scheduler/WebServer/Worker하지만 Task 로그를 제외하고는정작 Airflow에 문제가 발생했을 때, 내가 원하는 로그가 대체 어디에 출력되는 건지 알기가 힘들다. 이에 각 상황별 로그가 어디로 흘러가는지에 대해 정리하고자 한다. Airflow Architecture에 대한 이해이를 위해서 우선적으로 해야할 것은 Airflow를 이해하는 것이다. Web ServerWeb Server는 Airflow의 UI(User Interface)로, 사용자가 DAG 및 태스크의 상태를 모니터링하고 관리이를 통해 DAG을 수동으로 트리거하거나, 실패한 태스크를 재실행하고, 로그를 확인하는 등의 작업이 가능웹 서버는 Flask 프레임워크를 기반..

Data 2024.11.13

트랜잭션 격리 수준 / Transaction Isolation Level

트랜잭션 격리수준(isolation level)이란 동시에 여러 트랜잭션이 처리될 때, 트랜잭션끼리 얼마나 서로 고립되어 있는지를 나타내는 것이다.크게 아래 4단계로 분류한다.READ UNCOMMITTED어떤 트랜잭션의 변경내용이 COMMIT이나 ROLLBACK과 상관없이 다른 트랜잭션에서 보여진다.사용되지 않는 격리수준READ COMMITTED어떤 트랜잭션의 변경 내용이 COMMIT 되어야만 다른 트랜잭션에서 조회할 수 있다.Oracle DB에서 사용NON-REPETABLE READ 정합성 문제 발생하나의 Transaction 내에서 READ를 여러 번 할 경우 결과가 다른 문제REPEATABLE READ트랜잭션이 시작되기 전에 커밋된 내용에 대해서만 조회한다.즉, 자신의 Transaction Id보다..

Data 2024.07.07

Spring JPA Transactional과 Transaction Isolation Level 격리수준 실습

2022.11.04 - [Backend & Spring (스프링)] - Spring Data JPA와 Hibernate. 그리고 Persistence Spring을 이용해 RDB를 다루면 JPA, Transactional과 DB 격리 수준에 대해서 많이 들어보았을 것이다.다만, 각각에 대해서는 잘 들어봤더라도서로 정확히 어떻게 동작하는지, 어떤 경우에 에러가 발생하는지에 대한 정보는 부족하다. 이 글에서는 특히 Transactional과 Database Isolation Level에 대한 관계를 실제 코드를 이용해서 실험해보고자 한다. 격리 수준에 대한 자세한 내용은 다음 링크 참고 - 2024.06.21 - [Data] - 트랜잭션 격리 수준 / Transaction Isolation Level 현재 ..

Data 2024.06.21

데이터베이스 정규화 - 제1, 제2, 제3정규형과 BCNF (RDB, Database Normalization)

용어 정리.슈퍼 키(Super Key): 행을 고유하게 식별할 수 있는 속성 또는 속성의 집합후보 키(Candidate Key): 슈퍼 키 중 더 이상 줄일 수 없는(irreducible) 형태를 가진 것기본 키(Primary Key): 설계자에 의해 선택, 정의된 후보 키 함수 종속성 (Functional Dependency): X 값에 의해서 Y의 값이 결정되는 경우 ( y = f(x) ) 완전 함수 종속(Full Functional Dependency): 후보 키를 제외한 모든 속성이 후보 키의 전체 집합에 종속되어야 한다.(= 기본 키의 부분 집합에 종속되어서는 안된다.)주문id아이템id할인가110100210801550(예를 들어, PK가 (주문id+아이템id) 인 경우 할인가는 2가지를 모두 알..

Data 2022.11.03

Airflow 정리 execution_date, data_interval_start, logical_date, start_date

airflow 사용 자체는 어렵지 않다. 용어나 date 처리 등에 대해서만 정리한다. start_date: DAG가 시작되는 기준 시점. 해당 시점을 기준으로 interval적용 execution_date: Task가 실행되는 시점이 아닌 Time Window의 시작 지점. schedule_interval: data처리 간격. cron 또는 date형식 (Timetable 형식이 도입되었다. https://airflow.apache.org/docs/apache-airflow/stable/concepts/timetable.html) 예를 들어, interval이 하루인 경우, execution_date = 2022-01-01 0시 인 작업은 2022-01-02 0시에 시작한다. 이러한 개념이 혼란을 주기..

Data 2022.11.03
반응형