📌 EdgeQL 반복 삽입 코드 완전 분석
·
기술블로그-Fastapi편
📌 EdgeQL 반복 삽입 코드 완전 분석🎯 목표EdgeDB에서 FOR ... IN ... UNION 문법을 사용해 수만 개의 데이터를 한 번에 삽입하는 방법과, 그 과정에서 사용되는 int64의 개념을 함께 이해합니다.✅ 전체 코드FOR x IN range_unpack(range(1, 100000)) UNION ( INSERT Movie { title := "Movie " ++ x });🧩 코드 분석1. range(1, 100000)의미: 1부터 99,999까지의 정수 범위 객체 생성Python의 range()와 유사하지만, 결과는 "range 타입"이지 실제 숫자 목록은 아님2. range_unpack(...)역할: range 객체를 하나씩 숫자로 풀어줌결과: 1, 2, ..
📌 데이터베이스 검색 방식: Seq Scan vs Index Scan 정리
·
기술블로그-Fastapi편
📌 데이터베이스 검색 방식: Seq Scan vs Index Scan 정리데이터베이스는 쿼리를 실행할 때, 테이블에서 데이터를 어떻게 읽을지 자동으로 결정합니다. 이때 사용되는 대표적인 두 가지 방식이 바로 Sequential Scan(Seq Scan)과 Index Scan입니다.✅ 1. Seq Scan (Sequential Scan / Table Scan)🧾 개념테이블의 모든 행을 처음부터 끝까지 순차적으로 읽는 방식인덱스를 사용하지 않음📦 특징빠르게 설정되고, 간단한 쿼리 계획작은 테이블이나 인덱스가 없는 컬럼에서 유리대용량 테이블에서는 느릴 수 있음📉 예시 상황SELECT * FROM users WHERE name = 'Alice';→ name 컬럼에 인덱스가 없다면 → Seq Scan 실행..
📌 데이터베이스 인덱스(Index)와 B-Tree 구조 정리
·
기술블로그-Fastapi편
📌 데이터베이스 인덱스(Index)와 B-Tree 구조 정리데이터베이스에서 Index는 검색 성능을 획기적으로 향상시키는 핵심 도구이며, 내부적으로는 주로 B-Tree 구조로 구현됩니다. 이 글에서는 인덱스의 개념과 B-Tree 구조를 함께 정리합니다.✅ 1. Index란?Index(인덱스) 는 책의 목차처럼, 원하는 데이터를 빠르게 찾기 위해 사용하는 보조 구조입니다.📚 비유책을 처음부터 끝까지 읽으며 찾는 것 → 전체 스캔(Full Scan)목차를 보고 바로 페이지로 이동 → 인덱스 사용📌 주요 목적검색 속도 향상 (O(n) → O(log n))WHERE 절, JOIN, ORDER BY 등 성능 최적화💬 SQL 예시CREATE INDEX idx_name ON Person(name);→ 이후 아..
📌 EdgeQL 쿼리 패턴 완전 정복
·
기술블로그-Fastapi편
📌 EdgeQL 쿼리 패턴 완전 정복EdgeQL은 PostgreSQL 기반의 차세대 쿼리 언어로, 객체지향적인 문법과 JSON 친화적인 결과를 특징으로 합니다. 다음은 실무에서 자주 쓰이는 EdgeQL 쿼리 패턴과 개념입니다.✅ 1. 기본 SELECT 문select Movie { title, year};특정 타입(Movie)에서 원하는 필드만 선택JSON 형태로 반환됨✅ 2. 링크(Link)를 통한 중첩 조회select Movie { title, actors: { name }};actors는 Movie → Person을 잇는 link 타입{ name }처럼 내부 필드를 중첩해서 선택 가능객체 관계를 자연스럽게 탐색✅ 3. 조건 필터링 (FILTER)select Person { name}..
📌 EdgeDB 마이그레이션 꼬임 해결: 전체 초기화 루틴
·
기술블로그-Fastapi편
📌 EdgeDB 마이그레이션 꼬임 해결: 전체 초기화 루틴EdgeDB 프로젝트 작업 중 마이그레이션 파일이 꼬이거나, 기존 데이터베이스와 스키마가 불일치할 경우 아래와 같은 초기화 루틴을 따라 진행하면 깔끔하게 리셋할 수 있습니다.✅ 1단계: 기존 인스턴스 강제 삭제기존 인스턴스와 연결된 프로젝트까지 삭제되므로 주의가 필요합니다. 개발 환경일 때만 사용하세요.gel instance destroy -I "when2meet_vod" --force-I는 인스턴스 이름 지정--force는 연결된 프로젝트가 있어도 강제로 삭제✅ 2단계: 새 인스턴스 생성gel instance create when2meet_vod동일한 이름으로 재생성 가능또는 새 이름으로 생성 후 gel init 시 선택 가능✅ 3단계: 프로젝..
📌 WSL + VS Code 연동 및 'code' 명령어 설정 방법 정리
·
기술블로그-Fastapi편
📌 WSL + VS Code 연동 및 'code' 명령어 설정 방법 정리이 문서는 Windows + WSL 환경에서 VS Code를 활용하기 위해 필수적인 설정 과정들을 정리한 가이드입니다.✅ 1. VS Code 설치 후 필수 확장 설치Windows에서 Visual Studio Code 설치WSL 확장 설치VS Code 좌측 확장 탭에서 wsl 검색 후 설치 (Microsoft 공식)설치 후 VS Code를 재시작✅ 2. WSL 내에서 'code' 명령어 사용 설정1️⃣ WSL에서 code 명령어가 안 될 때:❯ code .zsh: command not found: code2️⃣ 실제로는 Windows 경로에 있음:❯ ls /mnt/c/Users/LG\ 울트라PC/AppData/Local/Program..
📌 WSL 기반 Gel(EdgeDB) 설치 및 실습 정리
·
기술블로그-Fastapi편
📌 WSL 기반 Gel(EdgeDB) 설치 및 실습 정리✅ 1. 설치 환경 확인uname -sm출력 예시: Linux x86_64 → WSL 64bit 환경임을 확인✅ 2. Gel CLI 설치curl --proto '=https' --tlsv1.2 -sSf https://www.geldata.com/sh | sh설치 위치: /home/사용자/.local/bin환경 변수 PATH 자동 포함 (추가 설정 불필요)✅ 3. zsh 자동완성 설정 (선택)nano ~/.zshrc맨 위에 추가:fpath+=~/.zfunc※ 반드시 oh-my-zsh 설정 이전에 위치해야 자동완성 적용됨✅ 4. 설치 확인gel --version정상적으로 버전 출력되면 설치 완료✅ 5. Gel 서버 설치gel server install..
📌 ORM과 EdgeDB의 차이점 정리
·
기술블로그-Fastapi편
📌 ORM과 EdgeDB의 차이점 정리1. ORM이란 무엇인가요?ORM(Object Relational Mapping)은 객체지향 언어(Python 등)와 관계형 데이터베이스(MySQL, PostgreSQL 등)를 연결해주는 도구입니다.✅ 예를 들어, Django ORM을 사용하면 아래처럼 쓸 수 있습니다.class Movie(models.Model): title = models.CharField(max_length=100)movie = Movie.objects.get(title="Dune")print(movie.title)Movie 클래스는 데이터베이스의 movie 테이블과 매핑됩니다.movie.title처럼 객체의 속성으로 데이터를 읽을 수 있습니다.내부적으로는 SQL 쿼리(SELECT, IN..