g6 icon indicating copy to clipboard operation
g6 copied to clipboard

데이터베이스 관련 개선안

Open KimTom89 opened this issue 2 years ago • 0 comments

개요

  • FastAPI문서에서 SQL 관련 문서가 곧 SQLAlchemy v2.0 기준으로 업데이트 된다는 설명을 보고 개선할 점을 전반적으로 파악함
  • https://fastapi.tiangolo.com/tutorial/sql-databases/

개선안

1. ORM 연관관계

  • 현재는 ORM 연관관계를 사용하지 않고 있음.
  • ORM 연관관계를 사용하면 코드량 & Query 요청감소/속도증가 효과를 보일 것으로 예상됨
  • 데이터베이스에 연관관계가 물리적으로 존재하지 않아도 사용이 가능함.

2. SQLAlchemy 표현식

  • 현재 1.4버전의 표현식을 사용하고 있음. 2.0버전 부터는 현재 사용 중인 db.query(model)이 legacy 표현식으로 분류됨.
  • https://docs.sqlalchemy.org/en/20/orm/session_api.html#sqlalchemy.orm.Session.query

3. SQLModel

  • FastAPI 에서 Pydantic과 SQLAlchemy를 기반으로 만들고 있는 SQL 라이브러리
  • https://sqlmodel.tiangolo.com/

장점

  • Pydantic과 SQLAlchmey를 동시에 사용할 수 있다. => 초기에 고민했던 모델 선언의 번거로움을 줄일 수 있다.
  • Alembic을 활용한 데이터베이스 마이그레이션을 지원할 예정이다.
  • https://sqlmodel.tiangolo.com/tutorial/fastapi/simple-hero-api/#the-sqlmodel-advantage

단점

  • 개발이 진행 중이다.
  • 기본적인 메뉴얼만 제공되고 있다. => 사용법을 익히는데 어려울 가능성이 있다.

결론

  • ORM 연관관계는 초기에 적용해야 할 것으로 판단됨. (성능/코드)
  • SQLModel의 도입과 함께 표현식도 변경하는 것이 좋다고 판단됨.
    • 표현식을 변경하기 위해선 작업량이 많은 것으로 예상됨.
  • SQLModel의 도입 시기를 잘 정해야 할 듯 하다..

KimTom89 avatar Dec 07 '23 10:12 KimTom89