[PostgreSQL] postgres SCAN 종류 (Bitmap SCAN)
·
공부/Database
개요postgres에서는 데이터를 찾을 때 다양한 SCAN을 사용합니다. 그 중 Sequential SCAN, Index SCAN, Bitmap SCAN에 대해 알아보려고 합니다. 쿼리를 실행할 때 쿼리 계획을 살펴보면 해당 쿼리가 어떠한 SCAN을 사용하는지 확인할 수 있습니다. 테스트를 할 page 테이블을 생성합니다.CREATE TABLE page(id serial PRIMARY KEY, content TEXT); 랜덤한 값 100만개를 넣어줍니다.INSERT INTO page (content)SELECT md5(random()::text || clock_timestamp()::text) -- 랜덤한 문자열 생성FROM generate_series(1, 1000000); Sequential S..
[Node.js] HTTP POST로 SSE 구현하기 + nginx buffering 문제 해결
·
카테고리 없음
개요저희 프로젝트는 LangChain을 활용하여 AI 응답을 반환하는 API를 만들어서 사용하고 있습니다. AI가 생성한 응답을 그대로 HTTP 응답으로 반환해주는 API입니다. 하지만 이러한 형태는 AI의 응답이 길어질 경우 클라이언트가 기다리는 시간이 늘어나고 UX가 저하된다고 판단했기 때문에 streaming 기능을 적용하기로 결정했습니다.  Language Model들의 대부분은 token 단위로 응답을 반환하는 스트리밍 기능을 제공합니다. token 단위로 받은 응답을 차례대로 클라이언트에게 뿌려주기만 하면 됩니다. 기술 선택사용자가 한 번 요청을 보내고 난 뒤 추가적인 요청을 보낼 필요가 없습니다. 서버는 요청에 해당하는 응답을 생성하고 token 단위로 사용자에게 보내주면 되기 때문에 web..
[백준 1781][Java] 컵라면
·
백준 알고리즘/그리디
https://www.acmicpc.net/problem/1781 문제 풀이그리디로 풀 수 있는 문제입니다. 변수는 두 가지가 존재합니다.데드라인컵라면 수가장 단순하게 생각해보면 단위 시간을 늘리면서 해당 데드라인에서 얻을 수 있는 최대 컵라면 수를 고를 수 있습니다. 하지만 이 방법은 현재 시점에서 최적의 선택이 최적의 해를 보장할 수 없습니다.예를 들어 데드라인이 1이고 컵라면 수가 1인 것과 데드라인이 2이고 컵라면 수가 9인 것이 있다고 합시다.데드라인이 1일 때 최적의 선택은 데드라인이 2인 문제를 푸는 것입니다.그런데 데드라인이 2인 문제를 풀어버리면 다음 데드라인 2일 때 아무것도 선택하지 못 합니다.데드라인이 1일 때 1인 문제를 풀고 2일 때 2인 문제를 풀어야 최적의 해가 됩니다. 즉 ..
[PostgreSQL] PostgreSQL Full Text Search
·
공부/Database
tsvector @@ tsquerytsquery @@ tsvectortext @@ tsquerytext @@ textPostgreSQL 공식 문서를 정리한 포스팅입니다.https://www.postgresql.org/docs/current/textsearch-intro.html 12.1. Introduction12.1. Introduction # 12.1.1. What Is a Document? 12.1.2. Basic Text Matching 12.1.3. Configurations Full Text Searching (or just text search) …www.postgresql.org Full Text Search란?Full text search를 사용하면 쿼리의 조건을 만족하는 자연어 문서를..
[Java] java 기초 자료구조 (Map, Set, Queue)
·
카테고리 없음
Mapjava에서 Map 인터페이스를 구현한 클래스들은 key, value 형식으로 데이터를 하나의 쌍으로 저장한다**.**요소의 순서를 유지하지 않는다.key의 중복을 허용하지 않는다.HashMapHashMap은 Map 인터페이스의 구현체이고 해싱(hashing)을 사용한다. 해싱(hashing) : 해시 함수를 사용하여 입력 값을 고정된 크기의 문자열로 만든다. 순차적 접근 방식을 사용한다면 O(N)의 시간 복잡도가 필요하다. 만약 배열을 사용하여 인덱스로 접근을 한다면 O(1)의 시간 복잡도가 필요하다. HashMap에 들어온 key 값을 해시 함수로 정수로 바꾸어서 배열의 인덱스로 사용한다면 O(1) 시간 복잡도로 값을 찾을 수 있다. 해시 함수로 변환한 정수의 값이 너무 클 경우 배열의 크기가 ..
[Nest] Nest 기초 사용법
·
카테고리 없음
nest js 세팅Nest CLI를 설치한다.npm i -g @nestjs/cli 새로운 nest 프로젝트를 생성한다.nest new [프로젝트 이름] 사용할 패키지 매니저를 선택한다. (npm 선택)npm run start 명령어로 서버를 실행할 수 있다.npm run startDependency Injection (의존성 주입)DI란 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴이다. 예를 들어 A 객체에서 B 객체를 사용한다고 하면 A 객체에서 직접 B 객체를 생성하지 않고 외부에서 B 객체를 생성해서 넣어주는 것이 DI라고 할 수 있다. nest js에서는 B 객체처럼 다른 객체에 주입할 객체들을 Provider라고 한다. nest 기본 프로젝트를 보면 DI를 적용하는 방식을 알 수 있다...