2025/03 9

[MySQL] Stored Procedure - 반복문

개요2025.02.28-[MySQL] Stored Procedure - 조건문에서 프로시저 내에서 조건에 따라 실행흐름을 제어해 보았다. 이번 글에서는 반복문을 사용해보려고 한다.  WHILEWHILE문은 조건문이 참인 경우 계속 반복하며 실행된다. 다시 말해 조건이 거짓이 되면 반복을 종료한다.[begin_label:] WHILE search_condition DO statement_listEND WHILE [end_label] 예시 )아래 예시는 입력으로 받은 문자를 입력받은 수만큼 반복하여 SELECT 하는 프로시저이다. DELIMITER &&CREATE PROCEDURE test_procedure( IN loop_str CHAR, IN loop_val INT)BEGIN declare..

Database 2025.03.14

[Python] itertools.groupby - 연속적인 부분 찾기

개요알고리즘 문제를 풀다 보면 문자열이나 리스트에서 연속적인 부분을 찾아야 하는 문제를 찾아볼 수 있다. 직접 순회하면서 확인하는 방법도 있지만, 이번 글에서는 itertools의 groupby를 사용해 찾아보려고 한다.  iterrtools.groupbygroupby는 연속적인 키과 그룹을 반환하는 iterator를 만든다. 키는 각 요소에 대한 키 값을 계산하는 함수로, 지정하지 않으면 항등 함수로 기본 설정된다. 키 값이 변경될 때마다 그룹이 새로 생성되기 때문에 기본적으로 정렬된 상태에서 사용해야 한다.  사용 예시예로 들어 abbbaaaa라는 문자열에서 연속적인 부분을 찾으려고 한다.from itertools import groupbystr_input = 'abbbaaaa'for k, val i..

Python 2025.03.13

[Python] sqlalchemy - Trino 다루기

개요운영 중인 서비스에서 Trino를 백엔드로 사용하고 있는데, 기존에는 Trino CLI나 별도의 프런트엔드를 사용해서 작업을 수행했었다. 최근 프로그래밍적인 방법을 사용해서 작업을 할 필요가 있어, 방법을 적어두려고 한다.사용 언어는 Python이다.  필요 라이브러리 설치Python으로 Trino를 다루기 위해서는 trino 클라이언트 라이브러리를 선택할 수 있다. trino 클라이언트 라이브러리는 아래와 같이 pip 명령어로 설치할 수 있는데…… pip install trino테스트 환경이 컨테이너 기반이라서 그런지 trino 라이브러리로는 연결이 잘 안 됐다. 때문에 이 글에서는 sqlalchemy를 사용해 다뤄보려고 한다.pip install sqlalchemy  사용법연결 URLsqlalch..

Python 2025.03.12

[MySQL] Stored Procedure - 조건문

개요2025.02.26-[Database] Stored Procedure - 정의/호출, 2025.02.27-[MySQL] Stored Procedure - 변수에서 MySQL에서 Stored Procedure, 그리고 Stored Procedure의 내부 변수를 선언하고 사용하는 방법을 알아보았다.Stored Procedure의 큰 장점 중 하나가 바로 프로그램처럼 조건 논리를 구현하여 실행 흐름을 제어할 수 있다는 것이다. 이번 글에서는 Stored Procedure에서 사용할 수 있는 조건문에 대해서 알아본다.   IFIF문은 기본적인 조건 구문을 구현한다.IF search_condition THEN statement_list [ELSEIF search_condition THEN stateme..

Database 2025.03.11

[MySQL] Stored Procedure - 변수

개요2025.02.26-[Database] Stored Procedure - 정의/호출에서 프로시저의 기본적인 정의와 사용 방법에 대해서 알아보았다. 이번 글에서는 프로시저에서 변수를 선언하고 사용하는 방법을 정리해둔다.  변수 선언프로시저 내에서 사용할 변수는 DECLARE 문으로 선언한다.DECLARE variable_name datatype(size);-- 기본값 지정DECLARE variable_name datatype(size) DEFAULT default_value;-- 여러 변수 한 번에 선언DECLARE variable_name, variable_name datatype(size) DEFAULT default_value;변수를 선언했을 때의 초기값은 Null이다. 만약 선언과 동시에 초기화..

Database 2025.03.10

[Database] Stored Procedure - 정의/호출

개요운영 서비스의 데이터베이스에서 프로시저를 사용하여 여러 테이블에 대한 작업을 한 번에 수행하고 있는데, 프로시저를 잘 알지 못하다 보니 동작 흐름 분석에 어려움이 있다.때문에 이번 글에서는 프로시저에 대한 개념이나 아주 기본적인 문법을 정리해보려고 한다. 참고로 MySQL을 기반으로 문법을 정리한다.  Stored Procedure프로시저는 여러 쿼리를 모아 하나의 함수처럼 실행하기 위한 쿼리 집합이다. 함수처럼 매개변수를 전달받아 반복적으로 상할 수 있는 블럭으로, 보통 구현이 복잡한 트랜잭션이나 연속 실행 등을 수행할 때 사용한다.프로시저를 사용하면 하나의 요청으로 여러 쿼리를 실행하여 네트워크 부담을 줄일 수 있다. 하지만 처리 성능이 높지  않고, 재사용성이 좋지 않아 업무 사양 변경 시 응용..

Database 2025.03.07

[GitLab] k8s gitlab-runner 구성

개요2025.02.07-[GitLab] Runner 설치 및 등록에서 Shell Executor인 Gitlab Runner를 설치해 봤는데, 실제 운영 서비스는 kubernetes 환경에서 동작한다. 이번 글에서는 호스트가 아닌 kubernetes 환경에서 gitlab runner을 설치해보고자 한다.방법을 적어둔다. 참고로 gitlab runner 설치 환경은 killercoda.com이고, gitlab 서비스는 gitlab.com이다.   프로젝트 러너 생성1. New project runner 버튼 클릭프로젝트의 CI/CD 설정 페이지에서 New project runner 버튼을 클릭한다. 2. 신규 프로젝트 러너 생성러너의 태그 값을 지정하고, 필요시 추가 구성 옵션을 설정한다. 설정이 완료되면 ..

Git | GitLab 2025.03.06

[GitLab] gitlab-runner 내에서 push 하기 - 파이프라인 구성

개요2025.02.23-[GitLab] gitlab-runner 내에서 push 하기 - SSH 인증 구성에서 gitlab-runner 내에서 gitlab 레포지터리에 push하기 위해 SSH 인증을 구성했다.이번 글에서는 이어서 SSH 인증을 사용한 git push 파이프라인을 구성한다.  1. SSH 인증 정의https://gitlab.com/gitlab-examples/ssh-private-key/ 참고하여 .gitlab-ci.yml 파일을 정의한다.test-job: stage: test before_script: ## ## Docker 사용 시 ssh-agent 설치 필요 ## 아래 명령은 debian 기반으로 작성됨. RPM 기반 이미지 사용 시 yum 사용 필요 ## ..

Git | GitLab 2025.03.05

[GitLab] gitlab-runner 내에서 push 하기 - SSH 인증 구성

개요GitLab을 사용하고 있는데, 레포지터리 내 특정 파일에 변경 사항이 발생하면 pipeline job 내에서 다른 파일을 변경하여 레포지터리에 push 하려는 요구사항이 있다.때문에 이번 글에서는 gitlab 레포지터리에 push를 수행하는 gitlab 파이프라인을 구성해보려고 한다. 다만, 파이프라인은 구성을 잘못하면 파이프라인이 동작할 때마다 파이프라인을 트리거하는 문제가 발생할 수 있기 때문에 주의해야 한다. 테스트 환경은 gitlab.com으로, 별도 러너 구성 없이 gitlab 제공 러너를 사용할 것이다.이번 글에서는 SSH 인증 구성 방법만 정리해둔다.   인증 구성 옵션gitlab 레포지터리에 작업을 수행하기 위해서는 인증이 필요하다.인증 방식에는 여러 선택지가 존재하지만, 이번 글에서..

Git | GitLab 2025.03.04
1