전체 글
-
쿼리의 동작 과정CS/DB 2024. 11. 23. 22:45
SQL 실행 과정의 중요성이전에 SQL문의 실행순서를 정리했는데, 해당 순서는 논리적 순서일뿐 실제 쿼리 순서와는 약간의 차이가 있다.예를들면 order by 절이 select 보다 먼저 실행되는데 실제 쿼리 작성시 select에 포함되지 않은 컬럼으로 order by를 실행해도 정상적으로 정렬되는것이 그 예이다.이번에는 실제 물리적으로 어떻게 작동하는지 정리해본다.SQL 쿼리 실행 단계1. 파싱 (Parsing)문법 확인: SQL 문법에 오류가 있는지 확인Syntax Tree 생성: 쿼리를 구문 트리(Syntax Tree)로 변환객체 확인: 테이블, 컬럼, 함수 등의 존재 여부와 사용 권한 점검2. 바인딩 (Binding)데이터 타입 확인: 테이블과 컬럼의 데이터 타입을 분석스키마 대조: 데이터베이스 ..
-
SQL 논리적 실행 순서CS/DB 2024. 11. 15. 21:09
Introduction쿼리의 동작 원리를 이해하는 것은 최적화와 디버깅에 매우 중요하다.나또한 과거 모 기업의 면접에서 물어보기 전 까진 동작순서에 대해 모른채로 INDEX관련 쿼리튜닝만 수행하고있었는데 동작순서를 알고나니 튜닝할 수 있는 범위가 늘어난걸 느꼇었다.그때 공부한 내용을 정리해본다.SQL 실행 순서란?일반적인 SQL 쿼리에서는 SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY와 같은 여러 절들이 혼합되어 사용된다.하지만 SQL의 실행은 우리가 작성한 쿼리문에 나열된 순서와 다르게 진행되며, 진행 순서에따라 어떤 데이터를 어떻게 조회하고 가져오는지가 정해져, 쿼리 최적화를 위해선 알고있어야 하는 개념이다.SQL 실행 순서1. FROMSQL은 가장 먼저 FRO..
-
[Airflow/Warning] The auth_backends setting in [api]has had airflow.api.auth.backend.session데이터/Airflow 2024. 11. 14. 23:29
상황Airflow의 인증 방식을 basic_auth로 변경해준 후 아래와 같은 문구가 나타났다. /home/airflow/.local/lib/python3.10/site-packages/airflow/configuration.py:761 FutureWarning: The auth_backends setting in [api] has had airflow.api.auth.backend.session added in the running config, which is needed by the UI. Please update your config before Apache Airflow 3.0.[ 환경Airflow 2.9.1Python 3.10 원인3.0버전 이상부턴 session방식이 적용된다는 경고이다. 해..
-
Git 전체 파일의 커밋 해시 값이 변경되는 버그기타/개발환경 2024. 11. 14. 22:06
1. 문제상황Git을 사용하다 보면 변경사항이 없는데 전체 파일의 커밋 해시가 변경되어 커밋하라고 나올때가있다. 내경우 특히 Windows 환경에서 주로 발생했는데 찾아보니 파일의 라인 엔딩, 파일 권한 설정을 원인으로 지목하고 있었다.. 2. 해결법모든 파일을 Git 인덱스에 추가하여 현재 작업 디렉토리와 Git의 인덱스를 일치시킨다. 이 과정에서 Git은 파일의 라인 엔딩과 권한 설정을 재평가하고, 설정에 따라 자동으로 조정된다git add -A다시 인덱스에서 내리게되면 변경사항이 없다고 인식된 파일들은 unstaged 상태로 되돌아가고, 인덱스와 작업 디렉토리의 상태가 정리된다. 이로 인해 실제 변경이 있는 파일만 남게되는 원리다.git reset
-
Debezium데이터/기타 2024. 11. 13. 22:56
1. 들어가면서DB의 이밴트를 캡쳐해서 로직이 도는 방법이 없을까 찾아보던중 Debezium 이라는 것과 CDC에대해 알게되었다.그중 Debezium 에 대해 내가 공부한 내용을 정리해본다.2. Debezium이란?Debezium은 데이터베이스의 변경 사항을 감지하고 이를 실시간 스트리밍으로 전달하는 CDC 플랫폼이다.Debezium은 Kafka Connect의 플러그인 형태로 작동하여, MySQL, PostgreSQL, MongoDB와 같은 데이터베이스의 변경 사항을 캡처하여 Kafka 에 이벤트를 푸시하고, 특정 이벤트에 관심을 가지는 서비스들이 소비하는 구조이다. Debezium을 통해 데이터가 발생하는 순간 이를 실시간으로 처리할 수 있는게 장점이다.Debezium의 주요 역할데이터 변경 사항 감..
-
FLOAT vs DECIMAL기타/Python 2024. 11. 6. 22:06
1. 들어가면서입사후 며칠안되었을때, 수치 데이터를 다뤄야 하는 미션이 있었는데 그때 정리한 글을 올려본다. 2. FLOAT (부동소수점)부동소수점 연산: 소수를 근사치로 표현하며, 상대적인 정확성을 가진다.( 즉 정확하지 않다 )메모리 효율성: 데이터 저장 시 메모리 사용량이 적다.성능: 연산 속도가 빠르며, 대규모 데이터 처리에 유리하다.( 하드웨어 레벨에서 부동 소수점만 연산하기 위한 FPU가 있다..) 2. DECIMAL (고정소수점)고정소수점 연산: 정확하게 소수를 표현하며, 정확성을 가진다메모리 사용량: 더 많은 메모리를 사용하여 정확성을 보장한다.성능: 부동소수점에 비해 연산속도가 느리다.3. 이런 현상이 벌어지는 이유2진법으로 소수를 정확하게 표현할 수 없기때문이다.예를들어 0.1을 이진법..
-
알파인(Alpine Linux)기타/인프라 2024. 11. 5. 22:39
0. 들어가면서개발서버로 온프레미스 환경에 알파인 리눅스를 세팅하게 되어 이걸 왜 쓰는지에 대한 내용을 정리해본다. 1. 알파인이란?알파인 리눅스는 보안성과 경량성에 초점을 맞춘 머슬 라이브러리( C 표준 라이브러리 )와 비지박스(리눅스 유틸리티) 기반의 리눅스 배포판이다.알파인은 최소한의 리소스로 최대의 효율을 내는 것을 목표로 하며, 기본 이미지 크기가 몇 메가바이트에 불과해, 디스크 공간 절약과 빠른 배포가 가능하다. 2. 알파인의 특징장점: 매우 가볍고 보안성이 높으며, 컨테이너 환경에 최적화 되어있음 ( 일반적으로 단순하면 보안성이 높다 왜냐면 취약점이 그만큼 없기때문..)단점: 글리브시(glibc)가 아닌 머슬 라이브러리를 사용하므로, 일부 앱의경우 호환성 이슈가 있을 수 있다. 3. 왜 ..
-
스토리지 엔진 InnoDB vs MyISAMDataBase/Mysql 2024. 11. 4. 22:23
0. 들어가면서Mysql을 사용하기전 서비스에 가장 최적화된 스토리지엔진이 무엇인지 탐구한 결과를 정리해보았다.여기선 자주쓰는 InnoDB와 MyISAM를 비교해보겠다. 1. InnoDB특징트랜잭션 지원: ACID 특성을 만족하여 데이터 무결성 보장외래 키 지원: 관계형 데이터베이스의 장점을 활용 가능행 수준 잠금: 동시성 처리에 유리하여 다중 사용자 환경에서 성능 우수충돌 복구 기능: 예기치 않은 오류 발생 시 데이터 복구가능장점데이터의 일관성과 무결성이 중요한 애플리케이션에 적합합니다.동시 읽기/쓰기에 강함: 블로그의 다중 사용자 접근 시에도 안정적인 성능을 제공합니다.단점상대적으로 메모리 사용량이 높다 ( 당연하다.. 무결성 보장과 성능을 어느정도 끌어올려야하니 해당하는 데이터를 캐시값으로 가지고..