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로 설계하는 것보다는 데이터의 중요도나 크기를 충분히 고려해서 설계를 해야겠다는 생각이 들었다.