코딩공부 142

시계열데이터 PostgreSQL Timescale 압축률과 조회속도

📦 압축률 (Compression Ratio)일반적으로 90~95% 감소 (원본 대비 5~10% 크기)가 대표적입니다.사례 유형 원본 크기 압축 후 크기 압축률금융 틱 데이터5694 MB75 MB89% ↓IoT 센서 데이터1100 GB~5-10 GB90-95% ↓시계열 로그 데이터71 TB~50-100 GB90-95% ↓핵심 메커니즘:컬럼 기반 압축(Array 형식 저장) + 중복 제거segmentby(그룹화 컬럼)와 orderby(정렬 컬럼) 설정에 따라 효율성 차이5⚡ 조회 성능 향상시간 기반 청크(Chunk) 사용 시 50~90% 쿼리 시간 단축이 일반적입니다. 주요 요인별 개선 효과:1. 시간 필터 쿼리SELECT * FROM sensor_data WHERE time >= NOW() - INTE..

코딩공부/DB 2025.04.23

PostgreSQL TimescaleDB의 청크와 압축 개념정리

✅ 1. 청크(Chunk)의 개념과 "물리적인 데이터 분리"🔹 청크란?하나의 큰 테이블 데이터를 시간/범위 기준으로 나누어 저장한 작은 단위주로 TimescaleDB와 같은 확장 모듈에서 사용예: test라는 테이블이 있다고 하면, test_chunk_1, test_chunk_2 등으로 나뉘게 됨🧱 “물리적인 데이터 분리”란?단순히 "논리적으로 구분된 데이터"가 아니라, 실제 디스크상에서 각각의 청크가 독립된 테이블로 생성되어 분산 저장되는 것을 말합니다.📌 쉽게 말하면:큰 창고(test 테이블)를 작은 박스들(test_chunk_xx 테이블)로 나눠 담는 것!🖼 그림 예시┌────────────────────────────┐│ test 테이블 │└────────────..

코딩공부/DB 2025.04.18

리눅스/유닉스 터미널 명령어 가이드

기본 명령어curl (Client URL)의미: 클라이언트 URL 도구기능: URL을 통해 데이터를 전송하거나 받는 명령어. 웹 페이지 내용 다운로드, API 호출, 파일 다운로드 등 다양한 네트워크 작업에 사용예시: curl https://example.com - example.com의 HTML 내용을 터미널에 출력자주 쓰는 옵션:-o - 다운로드한 내용을 파일로 저장-O - 서버의 파일 이름 그대로 저장-X - HTTP 메소드 지정 (GET, POST 등)vi (Visual Editor)의미: 비주얼 에디터기능: 유닉스/리눅스 시스템의 텍스트 편집기. 명령 모드와 입력 모드가 분리되어 있음주요 명령:q - 종료wq - 저장 후 종료wq! - 강제 저장 후 종료:exit - 종료i - 입력 모드 진입E..

npm 스케줄러 라이브러리: cron과 node-schedule의 차이점

cron과 node-schedule이란?cron과 node-schedule은 Node.js 애플리케이션에서 정해진 시간에 특정 작업을 실행할 수 있게 해주는 스케줄링 라이브러리입니다. 이메일 발송, 데이터베이스 백업, 알림 전송 등 주기적으로 수행해야 하는 작업에 매우 유용합니다.주요 차이점1. 문법과 사용 방식cron은 유닉스 crontab 문법을 직접적으로 사용합니다:const cron = require('cron');// 매일 오전 10시 30분에 실행const job = new cron.CronJob('30 10 * * *', function() { console.log('매일 오전 10시 30분에 실행되는 작업입니다.');});job.start();node-schedule은 더 유연한 자바스크..

[Next.sj & Node.js] Slack을 통한 메시지 발송 및 파일업로드

# 기존방법- Slack Webhooks를 통해 Slack채널로 HTTP 요청- Icoming Webhooks: 가장 간단한 방법중 하나로 Slack에서 발급된 URL로 HTTP POST 요청을 보냄- Slack 웹훅을 사용하기 위해선 앱을 생성해야함 https://velog.io/@sssssssssy/nextjs-slack-webhooks Next.js와 Slack Webhooks로 실시간 에러 알림 시스템 만들기[FE] Next.js + Slack Webhooks 실시간 에러 알림 설정velog.io위의 링크를 통해 개발에 필요한 bot 생성 및 토큰 발행에 큰 도움을 받았다 (+git을 통해 기초코드까지 있음) # 문자 발송은 바로 되지만 파일은 실패!- 메시지 발송하는 방법은 위 링크에서 git을..

[Next.js] URL: 쿼리파라미터와 동적라우팅 방식

쿼리파라미터와 동적라우팅 URL 방식의 차이쿼리 파라미터 방식URL에 ? 이후로 키-값 쌍으로 데이터를 전달합니다.API 라우트에서는 request.nextUrl.searchParams로 값을 추출합니다.라우트 파일 위치: /app/api/sensor/route.tsURL: `/api/sensor?sensorId=${sensorCodeId}` 동적 라우팅 방식URL 경로의 일부로 값을 전달합니다.API 라우트에서는 params 객체로 값을 추출합니다.라우트 파일 위치: /app/api/sensor/[sensorCodeId]/route.tsURL: `/api/sensor/${sensorCodeId}` 쿼리 파라미터가 적합한 경우선택적(optional) 파라미터가 여러 개일 때필터링, 정렬, 검색 등 부가적..

시계열 데이터베이스(TSDB)란?

시계열 데이터베이스(TSDB) 개요시계열 데이터베이스(Time Series Database, TSDB)는 시간에 따라 변화하는 데이터를 효율적으로 저장하고 처리하기 위해 설계된 특수 데이터베이스입니다.개념시계열 데이터베이스는 시간 순서대로 정렬된 데이터 포인트를 저장하는 데 최적화되어 있습니다. 각 데이터 포인트는 타임스탬프와 연관된 값으로 구성됩니다. 예를 들어, 주식 가격, 센서 측정값, 서버 모니터링 로그 등이 시계열 데이터에 해당합니다.중요성IoT와 모니터링의 증가: 점점 더 많은 기기와 시스템이 지속적으로 데이터를 생성하고 있습니다.실시간 분석: 빠르게 변화하는 데이터의 추세와 패턴을 실시간으로 파악해야 합니다.대용량 데이터 처리: 기존 데이터베이스로는 처리하기 어려운 대량의 시계열 데이터를 효..

코딩공부/DB 2025.03.04

useState vs useSWR vs Redux 비교

useState vs useSWR vs Redux1. useState장점간단한 로컬 상태 관리별도 설정 없이 사용 가능컴포넌트 내부 상태 관리에 최적단점복잡한 상태 관리에 부적합상태 공유가 어려움전역 상태 관리 불가2. useSWR특징데이터 페칭과 캐싱에 특화된 훅실시간 데이터 동기화자동 재검증 및 캐시 관리장점간편한 데이터 로딩 상태 관리캐시 및 재검증 기능성능 최적화단점주로 원격 데이터 페칭에 특화복잡한 상태 관리에는 부적합3. Redux장점복잡한 전역 상태 관리상태 변경의 예측 가능성디버깅 용이미들웨어 지원단점보일러플레이트 코드 많음초기 설정 복잡상대적으로 학습 난이도 높음사용 추천 상황useState:간단한 컴포넌트 내 상태 관리소규모 프로젝트useSWR:데이터 페칭이 주요 관심사실시간 데이터 동..

Next.js와 HeidiSQL을 사용한 파일첨부 방법

Next.js와 HeidiSQL을 사용하여 파일 첨부 및 데이터베이스 저장하는 방법파일 저장 접근 방법 파일을 데이터베이스에 저장하는 방법은 주로 두 가지가 있습니다1. BLOB 데이터 타입 사용2. 파일 경로 저장 및 실제 파일은 서버에 저장BLOB 데이터 타입을 사용한 직접 저장 방법 1. 데이터베이스 테이블 구조 설정CREATE TABLE uploaded_files ( id INT AUTO_INCREMENT PRIMARY KEY, filename VARCHAR(255), file_data LONGBLOB, file_type VARCHAR(100), uploaded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);2. Next.js API 라우트 구현..

Next.js의 서버 렌더링

서버 렌더링의 이점데이터 가져오기: 데이터를 서버에서 직접 가져오면 더 빨리 가져올 수 있고, 클라이언트에서 요청할 필요가 줄어들어 성능이 좋아짐.보안: 중요한 정보나 로직을 서버에만 두면 클라이언트에게 노출되지 않아 보안이 강화됨.캐싱: 서버에서 렌더링한 결과를 저장해서 나중에 재사용하면, 매번 새로 렌더링할 필요가 없어서 성능이 좋아지고 비용도 절감됨.성능: 인터랙티브하지 않은 부분을 서버에서 렌더링하면 클라이언트에서 처리할 JavaScript가 줄어들어서, 느린 인터넷이나 성능이 낮은 기기에서도 더 나은 경험을 제공할 수 있음.초기 페이지 로드: 서버에서 HTML을 미리 생성하면, 사용자가 페이지를 더 빨리 볼 수 있음.검색 엔진 최적화: 서버에서 렌더링한 HTML을 검색 엔진이 인덱싱하기 쉽고, ..