💾 Data

💾 Data/SQL

[MySQL] 변수 선언 시 @의 의미

[MySQL] 변수 선언 시 @의 의미 이전에 MySQL의 변수에 대해서 포스팅을 한 적이 있었다. [MySQL] SQL 변수 선언 및 사용[MySQL] SQL 변수 선언 및 사용MySQL에서 변수를 사용하는 것은 데이터베이스 내에서 반복 작업을 자동화하거나, 복잡한 쿼리를 간결하게 만드는 데 매우 유용하다. MySQL에는 주로 세 가지 종류의heywantodo.tistory.com해당 포스팅에서 사용자 정의 변수에 대해 설명할 때, `@`를 붙여야 한다고 설명을 했는데왜 붙여야 하는지에 대한 설명이 부족했던 것 같아 보충하고자 한다. 세션 변수 (User-defined Variable)`@` 변수명 형식으로 선언하면, 세션이 유지되는 동안 값을 저장하고 사용할 수 있는 변수다.일반 쿼리에서는 `@` 없..

💾 Data/etc

[자료구조] 해시(Hash)와 해시 테이블(Hash Table)

[자료구조] 해시(Hash)와 해시 테이블(Hash Table)해시는 데이터 보안, 검색 최적화,, 암호화, 분산 시스템 등 다양한 분산 시스템에서 활용된다.해시 테이블은 매일 사용하는 기술 속에 자리잡고 있지만, 그 원리에 대해 명확히 이해하고 있지 않은 것 같아서해당 포스팅에서 해시에 대해 조금 더 자세히 알아보고자 한다.해시(Hash)란?해시(Hash)란 어떤 데이터를 일정한 길이의 고유한 값(해시 값)으로 변환하는 과정을 의미한다.이때 사용되는 해시 함수(Hash Function)는 입력값을 특정한 규칙에 따라 변환하여, 짧고 고유한 숫자나 문자값(해시 값)으로 매핑하는 역할을 한다. 해시의 특징은 다음과 같다.고정된 길이 : 입력 크기에 관계없이 항상 동일한 길이의 해시 값을 반환한다.빠른 연산..

💾 Data/Airflow

[Airflow] Airflow에서 DAG 파일을 처리하는 법 (DagFileProcessor)

[Airflow] Airflow에서 DAG 파일을 처리하는 법 (DagFileProcessor)Airflow는 DAG(Directed Acyclic Graph) 파일을 통해 워크플로우를 정의하는 워크플로우 관리 도구다.DAG 파일은 Python 코드로 작성되는데, Airflow가 이를 어떻게 인식하고 실행하는 지에 대해 궁금점이 생겼다, Airflow에서 DAG 파일을 처리하는 핵심 컴포넌트 중 하나가 바로 DagFileProcessor다. 이 글에서는 DagFileProcessor가 무엇인지, 어떻게 동작하는지에 대해 알아보고자 한다. DagFileProcessor란?DagFileProcessor는 Airflow가 DAG 파일을 주기적으로 읽고 파싱하여, 메타 데이터를 저장하게하는 역할을 한다.Airf..

💾 Data/SQL

[MySQL] 문자열 다루기

[MySQL] 문자열 다루기MySQL에서 문자열 데이터를 처리해야 할 때가 종종히 발생하는데, MySQL은 강력한 문자열 처리 기능을 제공한다.이번 포스팅에선 MySQL에서 자주 사용하는 문자열 함수와 쿼리 예제를 알아보자. 문자열 결합 CONCAT() MySQL에선 `CONCAT()` 함수를 사용해서 여러 문자열을 결합할 수 있다.-- 성과 이름을 결합한다.SELECT CONCAT(first_name, ' ', last_name) AS full_nameFROM users; 문자열 길이 확인 LENGTH()`LENGTH()` 함수는 문자열의 바이트 길이를 반환하며, `CHAR_LENGTH()`는 실제 문자 개수를 반환한다.-- 문자열 길이에 따른 필터링SELECT nameFROM productsWHERE..

💾 Data/SQL

[MySQL] Prepared Statement

[MySQL] Prepared StatementMySQL 4.1 버전부터 Prepared Statment를 지원한다. 이는 쉽게 말해 SQL 쿼리를 미리 준비해 놓고,나중에 실행할 수 있도록 하는 미리 만들어 놓은 쿼리라고 보면 된다. 이는 클라이언트와 서버 간의 빠른 데이터 전송을 가능하게 하는 기술을 기반으로 한다. 해당 구문에 대해 조금 더 자세히 알아보자. 사용 용도준비된 문(Prepared Statement)은 다음과 같은 상황에서 유용하다. 프로그램에서 준비된 문이 어떻게 작동하는지 시험해보고 싶을 때특정 프로그램에서 문제를 해결하고 싶을 때버그를 찾기 위해 테스트 케이스를 만들고 싶을 때프로그래밍 API에 접근할 수 없을 때 SQL SyntaxPrepared Statement에 대한 SQL ..

💾 Data/SQL

[MySQL] 프로시저에서의 매개 변수(IN, OUT, IN OUT)

[SQL] 프로시저에서의 매개 변수(IN, OUT, IN OUT)SQL 프로시저를 작성할 때, 매개변수는 프로시저의 입력과 출력을 정의하는 중요한 요소가 된다.매개변수는 크게 `IN`, `OUT`, `IN OUT` 세 가지 모드로 나뉘며, 각각의 모드는 서로 다른 목적과 사용방식을 가지고 있다. IN`IN`은 프로시저에 입력 값을 전달하는 데 사용된다.프로시저가 호출될 때 외부에서 값을 받아들이며, 프로시저 내에서는 이 값을 읽기만 할 수 있습니다.읽기 전용 : 프로시저 내부에서 값을 변경할 수 없다.값 전달 필수 : 프로시저 호출 시 반드시 값을 전달해야 한다.DELIMITER //CREATE PROCEDURE GetEmployeeName(IN EmployeeID INT)BEGIN SELECT N..

💾 Data/SQL

[MySQL] 프로시저 변수(DECLARE, SET)에 대한 이해

[MySQL] 프로시저 변수(DECLARE, SET)에 대한 이해프로시저는 데이터베이스 내에서 여러 SQL 문을 그룹화라여 실행할 수 있는 저장된 프로그램이다.이 프로시저 내에서 변수를 사용하면 중간 결과를 저장하거나 조건에 따라 로직을 제어하는 것이 가능하다. SQL 프로시저 변수란?SQL 프로시저 변수는 프로시저 내에서 데이터를 저장하고 조작할 수 있는 메모리 공간이다.변수는 프로시저가 실행되는 동안 값을 저장하고, 필요에 따라 참조할 수 있다. 프로시저 변수에는 로컬 변수, 전역 변수 2가지의 변수가 있다.로컬 변수프로시저 내에서만 사용되며, 프로시저가 종료되면 메모리에서 사라진다.전역 변수데이터베이스 세션 동안 유지되며, 여러 프로시저에서 공유할 수 있다. 변수는 사용하기 전에 반드시 선언해야한다..

💾 Data/SQL

[MySQL] 실행중인 쿼리 확인하기

[MySQL] 실행중인 쿼리 확인하기MySQL 데이터베이스를 관리할 때, 실행 중인 쿼리를 확인하고 필요에 따라 종료하는 것이 중요하다. 이를 통해 시스템 성능을 개선하고 불필요한 자원 소모를 줄일 수 있다. 실행 중인 쿼리 확인아래 명령어는 현재 MySQL 서버에서 실행되고 있는 모든 프로세스의 목록을 보여준다.show full processlist; 실행 중인 쿼리 종료하기특정 쿼리를 종료하려면, 해당 쿼리의 ID를 사용하여 다음 명령어를 실행한다.kill [Query ID]; 쿼리를 종료하면 해당 쿼리에 의해 영향을 받는 모든 작업이 중단된다. 따라서 중요한 작업이 진행 중인 경우 종료를 피해야 한다.

💾 Data/etc

[Spark] Apache Spark

[Spark] Apache Spark Apache Spark란?Spark는 빠르고 범용적인 분산 데이터 처리 프레임워크로, 대규모 데이터를 병렬로 처리하는 데 최적화된 시스템이다.Spark는 Hadoop의 MapReduce 모델보다 더 높은 수준의 API를 제공하며, 처리 속도와 유연성 면에서 많은 장점을 가지고 있다. Apach Spark의 컴포넌트스파크는 다양한 컴포넌트를 통해 데이터 처리의 여러 요구를 충족시킨다.Spark CoreSpark의 기본 엔진으로, 작업 분산, Task 스케줄링, 메모리 관리 등을 담당한다.Spark SQL데이터 프레임과 SQL 쿼리를 지원하여, 구조화된 데이터를 처리할 수 있다.Hive와의 통합을 통해 기존 Hive 테이블을 Spark에서 사용할 수 있다.Spark St..

💾 Data/SQL

[MySQL] JSON_TABLE(), JSON_ARRAY()

[MySQL] JSON_TABLE(), JSON_ARRAY()MySQL은 JSON 데이터 타입을 지원하면서 더 강력하고 유연한 JSON 처리를 제공하고 있다.특히 JSON_TABLE 함수는 JSON 데이터를 SQL 테이블처럼 다룰 수 있는 매우 유용한 기능이다. JSON_TABLE과 JSON_ARRAY 함수의 사용법과 예제를 통해 어떻게 JSON 데이터를 더 쉽게 다룰 수 있는지 알아보자.JSON_ARRAY여러 값을 JSON 배열로 생성할 때 사용된다. 이 값은 인자로 들어온 값을 JSON 배열 형식으로 반환한다. 사용법JSON_ARRRAY([val1,[, val2, ...]]) 예시SELECT JSON_ARRAY(1, 'apple', true, NULL);위 쿼리의 결과는 다음과 같은 JSON 배열을 ..

💾 Data/SQL

[MySQL] 데이터를 구분자로 Split 하기

[MySQL] 데이터를 구분자로 Split 하기개요DB 테이블에 컬럼이 다음과 같은 형식으로 되어있는 데이터가 있었는데 구분자를 분리해서 개수가 몇개인지 카운트를 하고싶었다.test_columnsappleapple, bananabanana, pineapplepineapple MySQL에서 특정 문자를 기준으로 split 하는 함수에는 SUBSTRING_INDEX() 함수가 있는데,이 함수는 인덱스에 해당하는 라인만 뽑기 때문에 데이터가 많을 경우 원하는 결과를 얻기 위해선 프로시저를 사용해야 했다..😥 SELECT 문으로 데이터 하나 뽑자고 프로시저를 사용하는 건 너무 과한 것 같아 다른 방법을 알아보기로 했다. JSON_TABLE열심히 서칭한 결과 JSON_TABLE()이라는 아주 좋은 방법이 있었다..

💾 Data/SQL

[MySQL] INTERVAL

[MySQL] INTERVALINTERVALINTERVAL은 주로 날짜 또는 시간 데이터와 함께 사용되며, 다양한 시간 단위를 더하거나 빼는 역할을 한다.MySQL에서는 특정 날짜 필드에 연산을 수행할 때 매우 간단하게 사용할 수 있도록 지원하고 있다. 날짜 또는 시간에 값을 더하거나 빼기-- 특정 날짜에 값을 더함DATE_ADD(날짜, INTERVAL 값 단위)-- 특정 날짜에서 값을 뺌DATE_SUB(날짜, INTERVAL 값 단위)예를 들어, 다음과 같이 고객의 주문이 완료된 날짜에 3일을 더해 예상 배송일을 계산할 수 있다.SELECT DATE_ADD(order_date, INTERVAL 3 DAY) AS expected_deliveryFROM orders;또한 다음과 같이 주문일이 30일 이상 ..