DB 25

[DB] Postgresql 과 MySQL schema 구분 차이

Schema 란 스키마(schema)는 데이터베이스 내에서 객체(테이블, 뷰, 함수, 인덱스 등)를 논리적으로 구분 한 컨테이너이다. 하나의 데이터베이스 안에 여러 스키마를 포함하며, 스키마를 활용해  여러 namespace 공간을 제공하고, 각각의 공간에서는 동일한 이름의 객체를 가질 수 있다. public과 service1이 다른 schema라는 가정하에 다음과 같이 정의 할 수 있다.ex) public.user_table / service1.user_table Mysql mysql 에서 스키마(Schema)는 Database와 동일한 의미로 사용된다.즉, MySQL의 스키마(Schema)는 데이터베이스(Database) 하나 자체를 지칭하며,필요시 다른 데이터베이스(Database)를 활용하여 논리..

DB/이론 2024.12.21

[SQLAlchemy] (5-2) DB driver 종류 (postgresql)

개요해당 글은 Sqlalchemy 공식문서를 정리한 것이다.Sqlalchemy에서 postgresql에 지원하는 여러가지 Driver 들에 대해 알아본다.postgresql은 psycopg2, pg8000, asyncpg 다.  1. psycopg2공식 문서 : https://pypi.org/project/psycopg2/특징- fast-executions-helpers 라는 성능 개선 가능 (https://www.psycopg.org/docs/extras.html#fast-execution-helpers)- batch insert 관련 유연, 강점 (관련 키워드 insertmanyvalues 등)- psycopg  연결 방법 # 연결 string# postgresql+psycopg2://user:pas..

DB/Sqlalchemy 2024.09.18

[SQLAlchemy] (5-1) DB driver 종류 (mysql/maria)

개요해당 글은 Sqlalchemy mysql 파트 공식 문서  을 정리한 것이다. Sqlalchemy에서 mysql, mariadb에 지원하는 여러가지 Driver 들에 대해 알아본다.대부분의 라이브러리들은 mysql, maria 같이 지원한다.MySQL은 5.0.2 버전 ~ 최신 릴리스까지 지원, MariaDB는 모든 최신 버전 지원한다.MySQL과 MariaDB는 기본적인 호환성을 유지하지만 개발은 계속해서 갈라지고 있음, SQLAlchemy에서는 두 DB간 가벼운 차이만 있어, DB 연결 URL 등을 변경할 필요 없음. 1. mysqlclient공식 문서 : https://pypi.org/project/mysqlclient/특징- maria db에서도 사용 가능- SQLAlchemy 공식적으로 지원..

DB/Sqlalchemy 2024.09.16

[SQLAlchemy] (4) DML 예시 (by sqlalchemy 2.0)

sqlalchemy 2.0 특징SQL Core의 select(), insert(), update(), delete()- DML 함수들이 Core와 ORM 상호작용 공통의 방식으로 채택됨 Query 객체- defrecated 되었음. (링크)from sqlalchemy.orm import Query# legacy 처리 됨 (2.0 에서)q = session.query(SomeMappedClass) execute- core방식, orm 방식 둘다 사용 가능- core 방식 : conn.execute(stmt)- orm 방식 : session.execute(stmt)- session.execute(stmt) => Result 객체를 반환- Result 객체를 이용해 다양한 형태의 결과 처리 및 제어 가능 ex..

DB/Sqlalchemy 2024.09.08

[SQLAlchemy] (3) 모델 선언 방법 (선언형, 명령형)

개요SQLAlchemy에서 모델과 DB를 연결하기 위해서는, 객체-관계 매핑 (ORM)을 수행하는데 '사용 방법(문법)과 코드 스타일'에 있어 명령형, 선언형 두가지 방향성을 제시한다.물론 뻔한말로 프로젝트의 요구사항과 팀 방향성에 따라 선택 될 수 있다. Declarative Mapping은 더 간결하고, 유지보수가 쉬우며, 대부분의 일반적인 사용 사례에 적합한 반면,Imperative Mapping은 더 복잡하고, 맞춤형 데이터베이스 매핑이 필요한 경우 등에 유리두 방법을 혼합하여 사용할 수도 있으며, 상황에 따라 적절한 방식을 선택하는 것이 중요 Declarative Mapping 방식에서도 기존에 사용하던 방식 외에 2.0이 되면서 Mapped, mapped_column 이란 문법을 통해 좀더 o..

DB/Sqlalchemy 2024.09.08

[SQLAlchemy] (2) Core 방식 vs ORM 방식

개요SQLAlchemy를 통해 DB와 상호 작용하는 코드를 작성할 때 작성 방법에는 크게 2가지 방향이 있다. Core 방식과 ORM 방식. Core 방식은 SQL 문을 보다 직접적인 컨셉으로 활용하여, 성능에 이점이 있는 방법이며, ORM 방식은 Python 클래스를 데이터 베이스의 테이블에 매핑한 추상화된 방식을 제공하여 더 사용하기 쉽게 만드는 방법이다. 1. SQLAlchemy Core 방식SQL 추상화 계층을 제공하고, 데이터베이스와 직접 작업할 수 있는 저수준 SQL 툴킷보다 직접적인 SQL 쿼리 작성을 통해 표현 하는 방법Session 객체 보다는 직접적인 커넥터를 통한 연결 방법과 비슷트랜잭션 및 연결 풀링에 대해 수동으로 처리 문법적인 차이- SQL 추상화 계층 함수(SQL 친화적인)들도..

DB/Sqlalchemy 2024.08.25

[SQLAlchemy] (1) 기본 개념 및 동작 방식

SQLAlchemy 란?SQLAlchemy는 파이썬 데이터베이스 ORM(Object Realtaional Mapping) 라이브러리Python 코드를 이용해 직관적으로 DB에 대한 CRUD 를 조작 하고, 직관성 높은 코드로 개발 가능 SQLAlchemy 기본 객체1. engine- 데이터베이스와의 연결을 관리 (URL 형식의 DB 접근 주소를 필요로 함 (create_engine)from sqlalchemy import create_engine# 1. engine 생성 engine = create_engine('mysql+pymysql://:@{HOST}:{PORT}/' echo=True, pool_size=2, pool_recycle=3600, max_overflow=0, ..

DB/Sqlalchemy 2024.08.24

[DB, Django] Migration 이슈 해결 모음

migration 이슈 발생시 주로 파악해야 될 연관 부분migration 이슈는 각 개별 환경마다 특수하기 때문에, django에서 특정 DB에 migrations시 어떤 과정으로 반영되는지 직접 이해하는 것이 트러블 슈팅이나 디버깅에 좋다.django의 migrations/ 내 migrations 파일들DB의 django_migrations 테이블 히스토리 사례 1 - 모델이 해당 DB에 없다고 나오는 경우👉 오류 메시지table ~ does not exist 👉 사례 / 해결방법1) migration 파일이 없어서 안생겼을 경우- django의 migration 파일이 잘 생성되었는지 확인 (django makemigrations 시 migrations/__init__.py가 있는지 등) 2) ..

DB/경험 공유 2023.07.08

[Celery] Celery 비동기 작업 큐 예제 (by. FastAPI)

Celery 란? Celery 란 비동기 방식의 작업 큐로, Broker에게 받은 메시지 작업(Task)을 수행하는 Worker 이다. 👉 Celery를 사용하는 이유? 동기적으로 처리할 경우 오래 걸리는 메일 전송 / 대용량 파일 업로드 등의 Task를 비동기 처리하기 위함 Worker들을 병렬적으로 실행 하여 동시에 처리도 가능 일반적으로 비동기 이벤트 기반 처리의 구조는 Producer (Server Framework) => Broker (RabbitMQ, Redis 등) => Consumer (Celery) 로 이루어지는데, Celery는 Consumer 역할을 수행한다. 👉 Broker Broker로는 일반적으로 RabbitMQ(Message Queue)를 많이 사용하고, Redis와 같은 Pu..

DB/기본 실습 2022.11.29

[MQ] 메시지 지향 미들웨어 (by. RabbitMQ, Redis)

메시지 지향 미들웨어(Message Oriented Middleware, MOM) 란? 메시지 지향 미들웨어(Message Oriented Middleware, MOM)이란, 응용 프로세스 간 비동기 방식의 데이터 통신을 통해, 메시지를 전달 해주는 시스템을 뜻하며, 주로 대용량 배치 처리, 이메일 전송, 채팅 서비스 등에 주로 많이 사용됨 👉 메시지를 전달하는 방식의 모델 2가지 Message Queue 기반 모델 발행(Publish)-구독(Subscribe) 기반 모델 📌 메시지 지향 미들웨어 시스템 사용시 장점 비동기성 작업 처리 프로세스간 결합도(의존성)가 낮음 메시지 생산자(Producer)나, 메시지 소비자 (Consumer)에 대한 확장성이 좋음 메시지 생산자의 서버가 다운되도, Messag..

DB/이론 2022.11.26