분류 전체보기 273

주니어 DBA를 위한 InnoDB 상태 조회 및 설정 관련 쿼리 모음

-- MySQL InnoDB 상태 조회show engine innodb status\G;-- MySQL 서버 내에서 실행중인 프로세스 목록 가져오기SHOW PROCESSLIST;-- FULL SCAN 탐지 쿼리select db, query, exec_count, sys.format_time(total_latency) as "formatted_total_latency", rows_sent_avg, rows_examined_avg, last_seenFROM sys.x$statements_with_full_table_scansORDER BY total_latency DESC;-- Check engine type of specific tableSHOW TABLE STATUS WHERE Name = 'table_..

DB/MySQL 2025.06.13

pgdog

pgdog은 Rust + Tokio로 작성된 PostgreSQL 트랜잭션 풀링 + 샤딩 + 로드밸런싱 도구, 수백 개의 데이터베이스와 수십만 개의 연결을 효율적으로 관리PgBouncer처럼 동작하면서도, 쿼리 분석과 복제까지 지원하는 PostgreSQL 전문 애플리케이션 계층(OSI L7) 프록시Kubernetes 및 Docker로 쉽게 배포 가능하며, 클러스터 구성, 로드밸런싱, 복제, 다중 샤드 관리까지 단일 구성으로 처리 가능자체적인 논리적 복제 관리 기능과 함께, 기존 PostgreSQL 클러스터를 중단 없이 샤딩 확장할 수 있음주요 기능로드 밸런싱OSI Layer 7에서 PostgreSQL 쿼리 기반으로 트래픽 분산SELECT는 복제본으로, INSERT/UPDATE 등은 기본 노드로 자동 라우팅..

DB/PostgreSQL 2025.06.13

Llama-index 기반 CRAG 워크플로우 만들기

Corrective Retrieval Augmented Generation(CRAG)는 평가기와 대규모 웹 검색을 통해 검색된 문서의 관련성을 평가하고 증강하여 언어 모델 생성의 견고성을 높이고, 보다 정확하고 신뢰할 수 있는 정보를 생성에 사용하도록 설계된 방법이다. llama-index는 RAG를 구현하기 위한 특화형 프레임워크이다.이 llama-index를 활용해 CRAG 워크플로우를 구현해보려 한다.라마인덱스 워크플로우는 기본적으로 'event'라는 객체를 전파하는 방식으로 순차적으로 진행하는 방식으로 동작한다.Workflow 객체는 step 단위로 실행을 하며 각 step간에 Event를 통해 다음 step을 결정하게 된다. CRAG의 핵심 요소인 웹 검색 평가 엔진에는 관련성 평가기로 GPT-..

Python/llama-index 2025.06.12

NGINX ingress controller 생성 실패 시 전부 삭제하기

Kubernetes 가지고 놀다 보면 nginx를 서비스나 ingress로 자주 사용하게 되는데, 이 ingress-nginx 관련 pod나 서비스를 모두 삭제해야 하는 경우가 발생할 때가 있다.이런 상황에서 그냥 편하게 긁어다 실행시키기 위해 (까먹기 전에 관련 커멘드를 기록해 놓기) 간단히 작성해본다.kubectl delete namespace ingress-nginxkubectl delete serviceaccount ingress-nginxkubectl delete configmap ingress-nginx-controllerkubectl delete clusterrole ingress-nginxkubectl delete clusterrolebinding ingress-nginxkubectl de..

벡터 검색 알고리즘 살펴보기 - HNSW, SPANN

Introduction어떤 벡터 q가 들어왔을 때, 현재 데이터베이스가 가지고 있는 벡터들 중 가장 가까운 벡터 k개를 반환하는 알고리즘들을 K-NN(K-nearest neighbor search)이라고 한다. 가장 가까운 벡터 k개를 반환하려면 q와 모든 벡터의 거리를 계산해야 하기 때문에 K-NN 알고리즘은 시간이 오래 걸리는 단점이 있다.그래서 널리 사용되는 벡터 검색 알고리즘은 ANN(approximate nearest neighbor search)이다. ANN은 가장 가까운 벡터 k개를 반환하는 것은 보장하지 못하지만 최대한 반환하려고 노력하는 알고리즘이다. ANN의 정확도는 반환한 k개 중 정말 가장 가까운 벡터들은 몇 개 들어있는지(recall)로 평가할 수 있다.벡터 검색 알고리즘은 메모리..

DB/Vector DB 2025.05.01

NASA의 소프트웨어 개발 10가지 규칙

NASA의 소프트웨어 개발 10가지 규칙원문NASA의 10가지 소프트웨어 개발 규칙에 대한 비판적 분석이 규칙들은 극도로 중요한 임베디드 시스템(예: 우주선 소프트웨어)을 위한 것하지만 이러한 규칙이 다른 개발 환경에서도 적절한지, 또는 다른 언어(C가 아닌 언어)에서도 적용 가능한지에 대해 논의가 필요함기본적으로 '하드웨어적 에러'가 흔하게 벌어질 수 있는 '우주'라는 환경에서도 안정적으로 동작하는 시스템을 개발하기 위한 방법론이라는 점을 기억에 두어야 할 것이며, 이러한 규칙들이 일반적인 개발팀에서는 어떤 비판을 받을 수 있는지를 생각해볼 수 있다.1. 단순한 제어 흐름 유지 (goto, setjmp/longjmp, 재귀 금지)이 규칙은 예외 처리(setjmp()/longjmp())와 재귀를 금지함...

IoT 2025.04.30

Postgres 메모리 설정을 최대한 활용하는 방법

Postgres 메모리 설정을 최대한 활용하는 방법Postgres 데이터베이스는 많은 양의 RAM을 사용함. 결과 집합을 만들 때 인덱스 매칭, 테이블에서 관련 행 검색, 튜플 병합/필터링/집계/정렬 등의 단계를 거치며, 이 모든 단계에서 메모리에 의존Postgres의 메모리 사용량을 최적화하기 위해서는 사용 가능한 RAM을 최대한 활용하면서도, 다양한 유형의 메모리 할당을 효율적으로 조정하고, OS가 과도한 메모리 사용으로 프로세스를 종료시키는 것을 방지해야 함Sharing is CaringPostgres와 관련된 RAM의 가장 큰 부분은 shared_buffers라고 불리며, 가장 자주 검색되는 모든 테이블과 인덱스의 행을 나타냄. 사용 빈도에 따라 점수를 매기는 휴리스틱에 의해 지원됨shared_b..

DB/PostgreSQL 2025.04.27

쿠버네티스의 CoreDNS

DNS란?DNS는 Domain Name System의 약자이다. DNS는 사람이 쉽게 해석할 수 있는 도메인명(ex, www.bluewhale.com)을 IP 주소(179.10.2.10)로 변환하는 기능을 의미한다. DNS는 /etc/hosts 파일에 저장된 도메인-IP 맵핑 정보를 읽거나, 이를 갖고 있는 네임 서버와의 통신을 통해 이루어진다.DNS in LinuxLinux 환경에서 DNS를 사용하는 방법은 크게 2가지가 있다./etc/hosts/etc/hosts 파일은 컴퓨터가 도메인명으로 IP를 찾을 때 가장 먼저 열어보는 파일이다. 윈도우에서는 C:\Windows\System32\drivers\etc\hosts 경로에 파일이 위치한다.파일을 열어보면 아래와 같이 localhost가 이미 추가되어 ..

Spegel: 클러스터 로컬 OCI 레지스트리 미러

쿠버네티스 클러스터에 20개의 파드 복제본이 있는 StatefulSet이 있다고 가정해 보자.파드의 컨테이너에 사용되는 이미지가 상당히 큰 경우, 워커 노드에서 이미지를 가져오는 데 시간이 걸린다.따라서 StatefulSet의 모든 파드가 하나씩 실행되는 데 많은 시간이 걸립니다. 다른 시나리오에서는 워커 노드 중 하나가 비정상 상태가 되어 그 노드에서 실행 중인 파드가 퇴거되었다고 가정해 보자.따라서 다른 노드에서 파드가 다시 스케줄되지만, 인터넷을 통해 컨테이너 레지스트리에서 이미지를 다시 가져와야 하므로 중단 시간이 길어지게 된다. 이 때 Spegel이 도움이 된다.Spegel은 상태 비저장 클러스터 로컬 OCI 레지스트리 미러이다.Spegel은 쿠버네티스 클러스터의 각 노드가 로컬 레지스트리 미러..

Python의 새로운 `t-strings`

t-문자열(t-strings) 은 Python 3.14에서 새롭게 도입될 안전하고 유연한 문자열 처리 기능임기존 f-string과 달리, t-string은 문자열이 아닌 Template 객체로 반환되어 자동 출력 없이 안전한 처리 가능t-string은 HTML, SQL 등 동적 입력을 안전하게 이스케이프할 수 있는 구조를 갖고 있음JavaScript의 **태그 템플릿(tagged templates)**과 유사한 개념으로, 다양한 변환 및 처리 확장이 가능함Python 개발 도구 생태계가 이 기능을 잘 지원한다면, 웹/보안 중심의 문자열 처리 방식에 큰 변화를 줄 수 있음Python의 새 기능: t-문자열(Template Strings)Python 3.14부터 t"..." 문법으로 사용하는 Template..

Python 2025.04.22