본문 바로가기
반응형

nestjs20

[TypeORM] insert와 save TypeORM을 쓰다보면 데이터베이스에 데이터를 insert 해야될 때 어떤 걸 써야할지 고민을 할 때가 있다. 보통 구글에 검색하면 1차적으로 나오는게 .save() 인데 .save()는 기본적으로 select 작업을 한다. 그래서 해당 데이터가 있으면 update 작업을 하고 없으면 insert 작업을 한다. (그러한 이유로 따로 update 작업을 할 때 .save()를 쓰면 불편할 때가 있다.) .save() 를 쓰면 select 작업이 실행 되기 때문에 단순데이터를 저장하는데에도 많은 리소스를 사용하고 성능저하의 주 원인으로 꼽힌다. 그래서 이 부분을 제거하고 순수하게 insert 쿼리만 수행하는 기능이 바로 .insert() 이다. 그러면 불필요한 select 연산 없이 insert 쿼리를 수.. 2023. 1. 31.
[NestJS]NestJS에서 Transaction(트랜잭션) 활용 프로젝트를 개발하면서 한 객체를 데이터베이스에 넣고 해당 인덱스를 활용하여 또 다른 insert 작업을 해야하는 상황이 발생했다. 만약 중간 단계에서 에러가 난다면 해당 작업 도중 발생한 insert를 모두 되돌려야 하는데 이럴 때 트랜잭션 단위로 묶어서 처리를 해줄 수 있다. 트랜잭션이 무엇인지 정리하고 프로젝트 도중 트랜잭션을 활용한 내용으로 공유하도록 하겠다. 트랜잭션(Transcation) 트랜잭션의 사전적 정의는 시스템에서 사용되는 더 이상 쪼갤 수 없는 업무 처리의 최소 단위라고 말할 수 있다. 데이터베이스에서의 트랜잭션은 데이터베이스 서버에 여러 개의 클라이언트가 동시에 엑세스를 하거나 응용프로그램이 갱신을 처리할 때 중단 될 수 있는 등 데이터 부정합을 방지하고자 할 때 사용한다. 예를 들.. 2023. 1. 27.
[NestJS]캐시 및 NestJS에서의 캐시 사용 프로젝트를 하다가 정보를 띄워주는 페이지에서 속도가 느려지는 현상이 있었다. 그 현상을 해결하기 위해서 캐시를 공부하고 사용해보았기에 그 내용을 포스팅하려한다. 캐시(cache) 캐시란 컴퓨터 내부의 임시 저장공간이라고 할 수 있다. 인터넷에서 사이트에 방문했을 때 다운로드한 파일들이 캐시에 저장되는데 캐시를 사용하면 다음에 같은 사이트를 방문할 때 시스템이 모든 정보를 다시 로드하지 않아도 된다. 데이터를 미리 복사해 놓았기 때문에 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있어 브라우저가 사이트를 더 빠르게 로드할 수 있다. 캐시에 원하는 데이터가 존재할 경우 해당 데이터를 반환하며 이 상황을 Cache Hit라고 하며 원하는 데이터가 캐시에 존재하지 않을 경우에는 DBMS 또는 서.. 2023. 1. 18.
[NestJS] NestJS란? 요즘 Node 진영에서 핫한 프레임워크인 NestJS에 대해 간략히 알아보겠다. NestJS는 Node.js에 기반을 둔 웹 API 프레임 워크로 IoC, DI, AOP와 같은 객체 지향 개념을 도입하였다. 자바 진영의 스프링과 비슷한 위치로 스프링과 많은 유사성을 지닌다. 대표적으로 스프링의 어노테이션 같이 데코레이터를 사용하여 관점 지향 프로그래밍을 적용한 코드를 작성 가능하다. Express와의 비교 그 동안 노드 진영의 서버 프레임워크로는 express가 많이 사용되었다. express는 배우기 쉽고 빠르게 서버를 띄울 수 있으며 구조를 짜기에 매우 자유롭다. 하지만 너무 자유로운 나머지 사람들마다 모두 구조가 다르고 협업을 하거나 유지 보수하기에 어려움을 겪는 문제가 있었다. NestJS는 비교.. 2023. 1. 16.
반응형