728x90
반응형
SMALL

Typescript 4

[Typescript/MongoDB] Part 4. MongoDB: Indexing

Part 3에서 조회의 응답 속도를 더 개선하기 위해 내장(Nesting)방법을 이용해서 조회 속도를 더 개선했었다. 그러니까 지금까지 배운 방법은 populate, virtual, nesting 이렇게 크게 3가지를 배워서 조회 속도를 개선해 봤는데 데이터가 정말 무수히 많아지면(몇백만개 또는 몇천만개 혹은 그 이상) 데이터를 내장시켜서 가져올 때 속도가 느려질 수 밖에 없다. 이는 내장시킨 데이터 때문이 아니라 스캔하는 방법에 더 가까운데 기본적인 데이터 스캔 방식은 처음부터 가지고 있는 데이터의 마지막까지 하나씩 가져와 데이터를 찾아내는 COLLSCAN(컬렉션 스캔) 이라는 스캔 방식을 취한다. 이게 데이터가 적을땐 거의 아무런 영향을 끼치지 않는다 (컴퓨터의 연산 속도는 정말 빠르기 때문에) 그러..

Typescript 2023.10.09

[Typescript/MongoDB] Part 3. MongoDB: Nesting

전 게시글에서 조회하는 데 걸리는 시간과 비용을 줄이기 위해 populate, virtual을 사용했었다. 또 다른 방법으로는 블로그 내 있는 유저와 코멘트 데이터를 처음부터 nested 하는 것이다. Blog Schema 위 이미지를 보면 Blog안에 User와 Comments 정보를 가지고 있는데 현재 내 Blog Schema에는 Comments는 아예 포함되어 있지 않고 User는 ObjectId만을 가지는 상태다. const blogSchema = new Schema( { title: { type: String, required: true }, content: { type: String, required: true }, isLive: { type: Boolean, required: true, de..

Typescript 2023.10.05

[Typescript/MongoDB] Part 2. MongoDB: populate, virtual

모든 데이터 조회 시 중요하게 생각할 것은 요청의 수를 줄일 수 있다면 최대한 줄이는 게 좋다. 다음 그림을 보자. 이런 구조를 가지고 있는 Blog Collection이 있다고 할 때, 블로그 전체를 조회하는 무식한 경우는 당연히 없겠지만 그런 경우가 있다고 가정해보고 전체 블로그를 가져오게 될 때, 만약 해당 블로그의 유저 정보와 커멘트들도 담아와야 한다면 블로그마다 유저와 커멘트들을 조회하는 비용이 발생한다. 아래 코드를 보자. import { IBlog } from '../models/blog/blog'; import axios from 'axios'; const URI = 'http://localhost:3000'; const test = async () => { console.time('loa..

Typescript 2023.10.03

[Typescript/MongoDB] Part 1. Typescript with MongoDB

RDBS를 사용해 개발하던 중에 칼럼 형식으로부터의 자유로움의 필요성을 느끼고 MongoDB를 공부하기 시작했다. MongoDB와 잘 맞는 Javascript를 사용해 간단한 Blog Service를 구축해 보면서 MongoDB와 친해져 보자. Getting Started npm init -y package.json 파일을 우선 만들고, dependencies를 추가하자. npm i typescript --save-dev npm i express --save 이후에 typescript 설정 파일을 생성하기 위해 아래 커맨드를 실행하자. npx tsc --init 이 커맨드는 tsconfig.json 파일을 작업하고자 하는 프로젝트 경로의 루트에 생성해 주는데, 어떤 식으로 typescript 코드를 ja..

Typescript 2023.09.30
728x90
반응형
LIST