2022년 3월 TypeORM이 0.3 버전으로 새롭게 배포되면서 많은 것이 달라진 듯하다. 이전에 봤던 함수들이 deprecated 되었고 DB 설정 방식이나 repository 이용 방법 등이 달라졌다. 오랜만에 TypeORM을 사용하면서 기존과 많이 달라졌고 구글링 해도 예전 방식의 설명이 많아 혼란스러웠기에 어떤 점이 바뀌었는지 간단하게 적어보려고 한다. @EntityRepository EntityRepository는 repository 패턴을 이용해 Active Recorder에 없는 함수를 정의할 때 사용하던 Decorator이다. @EntityRepository() class UserRepository extends Repository {} 기존에는 위와 같이 사용되었지만 deprecated..
Backend/DataBase
관계형 DB는 수직확장(Scale Up)에 유리하고 NoSQL은 수평 확장(Scale Out)에 유리하다고 한다. 이를 추상적으로만 알고 있었기에 시각적으로 표현해 확실히 하고자 기록해두려고 한다. Scale Up과 Scale Out Scale Up은 간단하게 이야기해 기존의 서버를 이전보다 높은 사양으로 업그레이드하는 것을 말한다. 이는 하드웨어 적으로 보면 용량을 늘리기 위한 목적으로 디스크를 늘리거나 혹은 성능을 높이기 위한 목적으로 CPU 또는 메모리를 업그레이 하는 등의 예시를 들 수 있다. Scale Out은 서버를 추가하는 방식을 말한다. 기존 서버의 용량 혹은 성능이 한계를 도달했을 때, 성능이 비슷한 혹은 낮은 성능을 가진 서버를 추가로 연결하는 방식이다. 이는 데이터의 저장 용량을 늘릴..
이전에 프로젝트를 진행하면서 회원의 정보를 하루가 지날 때마다 수정을 해야 하는 작업을 했어야 했다. 처음엔 어플리케이션을 돌리는 서버에서 배치 프로그램을 돌리거나 crontap을 돌려야 되나 싶었지만 찾아보니 mongodb는 친절하게 Trigger라는 기능을 제공해 주고 있었다. 나는 예약 작업만 걸어주면 mongodb가 알아서 쿼리를 정해준 시간에 돌려준다. 방법이 복잡하지 않아서 남겨두려고 한다. 내가 할 작업은 우리나라 기준 0시마다 "test"라는 DB의 모든 User의 quizChance를 3으로 바꿔줄거다. 우선 웹 mongodb atlas 관리 페이지로 들어가 준다. 그러면 위처럼 왼편에 "Triggers"라는 것이 있다. 저곳에서 trigger를 등록할 수 있다. "Add Trigger"..