schema와 model을 사용할 때 속도

ideafy·2024년 6월 29일

프로젝트

목록 보기
1/25

fastapi에서 아주아주 간단하게 몽고 db를 사용해 저장할 데이터의 모델과 스키마를 구성해봤다.

스키마

class ChildInfoCreate(BaseModel):
    sex: str
    age: int = Field(gt=0, le=100)
    interests: List[str]

모델

class ChildInfo():
    def __init__(self, child_info_schema: ChildInfoCreate) -> None:
        self.sex = child_info_schema.sex
        self.age = child_info_schema.age
        self.interests = child_info_schema.interests
    def dict(self):
        return {
            "sex": self.sex,
            "age": self.age,
            "interests": self.interests
        }

그리고 postman을 이용해서 아래와 같은 json 데이터를 정해진 api로 post 해주었다.

{
    "sex": "boy",
    "age": 5,
    "interests": [
        "공룡",
        "초록색"
    ]
}

그리고 api의 속도를 측정해보았는데...

스키마 O + 모델 O : 0.5398106575012207
스키마 O + 모델 X : 0.1680610179901123

눈으로 대충 훑어보면 무려 5배차이가 나는 결과를 볼 수 있었다. 물론 데이터의 크기가 작아서 그렇게 차이나는 것 같지는 않지만 데이터 형식이 복잡해지고 크기가 커졌을 때는 꽤 유의미한 차이가 날 것 같다.

이로써 무지성 dto + entity로 설계하는 것보다는 데이터의 중요도나 크기를 충분히 고려해서 설계를 해야겠다는 생각이 들었다.

profile
재밌게 공부하고 싶어요

0개의 댓글