본문 바로가기
반응형

전체 글130

[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.
HTTP와 HTTPS, SSL HTTP hyper transfer protocol의 약자로 www 상에서 정보를 주고 받는 프로토콜로 요청과 응답, 세션, 캐싱, 인증 등을 다룬다. 클라이언트인 웹 브라우저가 서버에 HTTP를 통해서 웹 페이지나 이미지 정보를 요청하면 서버는 이 요청에 응답하여 요구하는 정보를 제공하게 된다. 즉 웹 브라우저와 서버 간의 웹페이지 같은 자원을 주고 받을 때 쓰는 통신 규약이라고 할 수 있다. 하지만 결국엔 텍스트 교환이기 때문에 네트워크에서 신호를 가로채어 본다면 내용이 노출 될 수 있다. HTTPS 인터넷 상에서 정보를 암호화하는 SSL 프로토콜을 이용하여 웹 브라우저(클라이언트)와 서버가 데이터를 주고 받는 통신 규약이다. HTTPS는 http 메세지를 암호화 하는 것이다.(HTTPS의 s가 Se.. 2023. 1. 19.
[NestJS]캐시 및 NestJS에서의 캐시 사용 프로젝트를 하다가 정보를 띄워주는 페이지에서 속도가 느려지는 현상이 있었다. 그 현상을 해결하기 위해서 캐시를 공부하고 사용해보았기에 그 내용을 포스팅하려한다. 캐시(cache) 캐시란 컴퓨터 내부의 임시 저장공간이라고 할 수 있다. 인터넷에서 사이트에 방문했을 때 다운로드한 파일들이 캐시에 저장되는데 캐시를 사용하면 다음에 같은 사이트를 방문할 때 시스템이 모든 정보를 다시 로드하지 않아도 된다. 데이터를 미리 복사해 놓았기 때문에 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있어 브라우저가 사이트를 더 빠르게 로드할 수 있다. 캐시에 원하는 데이터가 존재할 경우 해당 데이터를 반환하며 이 상황을 Cache Hit라고 하며 원하는 데이터가 캐시에 존재하지 않을 경우에는 DBMS 또는 서.. 2023. 1. 18.
반응형