MySQL 6

FastAPI에서 MySQL 연결

FastAPI에선 SQLAlchemy ORM 라이브러리로 DB를 조작할 수 있다. 먼저 MySQL과 연결하기 위해 sqlalchemy를 설치한다. pip install sqlalchemy ✅ 설정 파일 추가하기 FastAPI에 ORM을 적용하려면 데이터베이스 설정이 필요하다. database.py 파일을 생성하고 아래와 같이 코드를 작성한다. # app/database/conn.py from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from common.config import Settings SQLALCHEMY_DAT..

Python/FastAPI 2023.12.24

Spring Boot + JPA + MySQL연동(Gradle)

1️⃣ 프로젝트 의존성 추가 가장 먼저 build.gradle에 의존성을 추가한다. dependencies { // MySQL implementation 'mysql:mysql-connector-java:8.0.33' // JPA implementation 'org.springframework.boot:spring-boot-starter-data-jpa' compileOnly 'org.projectlombok:lombok' implementation 'org.springframework.boot:spring-boot-starter-web' developmentOnly 'org.springframework.boot:spring-boot-devtools' annotationProcessor 'org.proj..

Java 2023.07.23

[MYSQL] 3월에 태어난 여성 회원 목록 출력하기(프로그래머스/Level 2)

# 3월에 태어난 여성 회원 목록 출력하기 https://school.programmers.co.kr/learn/courses/30/lessons/131120 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ⭐ 코드 SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') FROM MEMBER_PROFILE WHERE (MONTH(DATE_OF_BIRTH) = 3) AND (GENDER = 'W') AND (TLNO IS NOT NULL) ORDER BY MEMBER_ID A..

Database/MySQL 2023.05.17

[MySQL] 클러스터 인덱스

클러스터 인덱스는 아래와 같이 3줄로 요약이 가능하다. 1. 클러스터 인덱스는 데이터 위치를 결정하는 키 값이다. 2. MySQL의 PK는 클러스터 인덱스다. 3. MySQL에서 PK를 제외한 모든 인덱스는 PK를 가지고 있다. 클러스터 키는 정렬된 자료구조이고 클러스터 키 위치에 따라서 데이터의 주소가 결정된다. 이를 다르게 말한다면 클러스터 키 순서에 따라서 데이터 저장 위치가 변경된다는 뜻이고 데이터 저장 위치가 변경된다는 것은 클러스터 키 삽입 / 갱신 시에 성능이슈가 발생한다. 인덱스를 만들 때마다 pk를 만들게 되므로 PK의 사이즈가 인덱스의 사이즈를 결정하게 된다. 🔎 클러스터 인덱스의 장점 1. PK를 활용한 검색이 빠름(특히 범위 검색) 2. 세컨더리 인덱스들이 PK를 가지고 있어 커버링..

Database/MySQL 2023.03.07

[MySQL] 인덱스 자료구조

인덱스의 핵심은 탐색 범위를 최소화 하는 것이다. 그렇다면 탐색이 빠른 자료구조들은 어떤 것이 있을까? Hash Map, List, Binary Search Tree 등이 있는데, 하나씩 간단하게 살펴보도록 하자. ✅ HashMap - 단건 검색 속도 O(1) - 범위 탐색 O(N) - 전방 일치 탐색 불가 Ex) like 'AB%' 해시맵은 키와 밸류가 있다. 그렇기 때문에 단건 검색 속도는 빠른편이며 상수 시간이 걸리게 된다. 범위 탐색에는 O(N) 시간이 걸리게 된다. ✅ List - 정렬되지 않은 리스트의 탐색은 O(N) - 정렬된 리스트의 탐색은 O(logN) - 정렬되지 않은 리스트의 정렬 시간 복잡도는 O(N) ~O(N * logN) - 삽입 / 삭제 비용이 매우 높음 정렬되지 않은 리스트는..

Database/MySQL 2023.03.06

[MySQL] MySQL 아키텍처

✅ MySQL 아키텍처 데이터베이스는 파일을 관리하는 서버이다. Client가 Server에게 데이터를 요청하는 것처럼 서버는 데이터베이스에 데이터를 요청하게 된다. Client는 JSON을 통해 Server에게 데이터를 요청하는 것과 같이 Server는 SQL을 통해서 MySQL 서버에 데이터를 요청하게 된다. 위 그림에서 MySQL엔진은 사람으로 비유하면 판단과 명령을 하는 두뇌라고 생각하면 되고, 스토리지 엔진은 판단을 수행하는 팔과 다리라고 보면 될 것 같다. ✅ MySQL엔진 MySQL엔진을 세부적으로 살펴보면 쿼리 파서, 전처리기, 옵티마이저, 쿼리 실행기로 이루어져 있다. 🔎 쿼리파서 SQL을 파싱하여 Syntax Tree를 만듬 이 과정에서 문법 오류 검사가 이루어짐 🔎 전처리기 쿼리파서에..

Database/MySQL 2023.02.03
728x90