[Node.js] nodemon 모듈
·
Programming Language
nodemon 모듈이란?● Node.js 개발할 때, 코드를 수정하고나서 다시 서버를 켜줘야 수정된 코드가 적용되는데  기존에는 터미널에서 종료한 다음 다시 켜줘야하는 번거로움이 있다. ● nodemon은 터미널에서 추가적으로 입력할 명령어, 단축키 없이 코드를 수정하고나서   저장만 하면 자동으로 서버를 재시작해주는 모듈이다. ● nodemon을 사용하다보니 서버를 자동으로 재시작할 때 도중에 다른 코드를 넣을 수 있을까?  라는 생각을 했고, 조사해보니 나온 코드 const shutdownHandler = () => { console.log('서버 종료 처리 중...'); server.close(() => { console.log('서버가 안전하게 종료되었습니다.'); process.e..
[JavaScript] Infinity
·
Programming Language/Javascript 공부기록
코드 문제를 풀다가 Infinity에 대해 궁금한 점Q1. Infinity는 무한대를 나타내는 숫자 값으로 알고 있는데, 이를 사용했을 때 실행 속도면에서       더 느리게 나오는 게 아닌가? ● Infinity에 대한 설명 :   - 전역 객체의 속성이며 전역 범위의 변수이다.  - 다른 어떤 수보다 더 크다.  - 숫자 데이터 타입으로 분류된다. ● 언제 사용하는가?  ○ 최솟값 및 최댓값 계산 :     - 'Infinity' or '-Infinity'를 초기값으로 설정하여 배열이나 데이터 구조에서 가장 큰 값 또는 작은 값을        효율적으로 찾을 수 있다.   ○ 조건 비교 :     - 특정 조건에서 임의의 큰 숫자를 대체할 수 있다.       → Math.min(), Math.ma..
[DB] Sharding
·
Programming Language
Sharding : 조각내다● 작은 접속자로 시작했던 DB가 이제는 1000, 2000명이 접속하는 서버로 성장했는데   동시 접속에 대한 처리를 하지 않아서 DB가 살려달라고 하는 중...   어떻게 해결해야 할까? ● Sharding, 대규모 데이터베이스나 네트워크 시스템을 효율적으로 관리하고 성능을 향상하기   위해 데이터를 여러 개의 작은 조각(=Shard)으로 나누어 분산 저장하는 기술  → 데이터베이스에서는 물리적으로 쪼개는 기술.  → 하나의 서버 데이터를 하나의 데이터베이스에서 관리하는 것이 아닌 여러 데이터베이스에서 관리 ● 수평적 샤딩(Horizontal Sharding)   - DB 한 개만 있을 경우에는 id가 1, 2, 3, 4, 5... 1000 한 곳에 전부 저장되었다면  - ..
[DB] Redis를 vscode에서 사용해보자
·
Programming Language
vscode에서 Redis 사용● yarn 패키지로 설치를 진행yarn add redis- 우선 redis를 사용하기 위해 패키지를 설치 ● 자주 사용할 수 있으니 디렉토리 분리src/inits/redis.js// src/inits/redis.jsimport { createClient } from 'redis';const redisClient = createClient({ url: 'redis://default:password@:',});(async () => { try { await redisClient.connect(); // Redis 서버에 연결 console.log('Connected to Redis'); } catch (error) { console.error('Error..
[DB] Redis
·
Programming Language
Redis (REmote DIctionary Server)● SQL 중에서 NoSQL 데이터베이스에 해당한다 ● 키-값(Key-Value) 구조를 기반으로 하는 NoSQL 데이터베이스 → 데이터를 메모리(In-Memory=RAM)에 저장하여 매우 빠른 읽기 및 쓰기 성능을 제공함 ● In-Memory 기반 : 데이터를 메모리에 저장하여 SSD 같은 디스크 기반 데이터베이스보다                                 훨씬 빠른 성능을 제공● 다양한 데이터 구조 지원 : 문자열(String), 리스트(List), 집합(Set), 정렬된 집합(Sorted Set),                                              해시(Hash) 등 다양한 데이터 타입을 다룰 ..
[DB] 트랜잭션 Transaction
·
Programming Language
트랜잭션(Transaction)이란?● 사전적 의미 : 거래● 컴퓨터 과학 분야에서는 "더 이상 분할이 불가능한 업무처리의 단위"● 한꺼번에 수행되어야 할 일련의 연산모음을 의미함 DB의 특성과 또 하나의 특성● 효과적인 데이터 인출이 가능● 백업/복구에 용이하다● 데이터 관리의 중앙화● 민감한 데이터 보안● 트랜잭션의 성질 === ACID  ACID란?● Atomicity(원자성) :  - 데이터베이스의 모든 트랜잭션은 원자성을 보장. (은행에서 돈을 보내던지 안 보내던지)  - 애매한 상태는 존재하지 않음 (보내야하나... 말아야하나... 상태는 존재하지 않음)  - 예를 들어서 B가 A의 계좌에 100만원을 입금 할 수 없다면 B의 계좌에서도 100만원을 빼지 않는다!  - 즉, '다 되거나', '..
[SQL] WITH 절
·
Programming Language
WITH 절?● 서브쿼리 기능 대신 WITH 절로 가독성 있고 재사용하기 쉽게 함● 어떤 기능을 제공하는가?  - 임시 테이블 정의  - 쿼리에서 마치 테이블처럼 사용할 수 있게 함  - 공통 테이블 표현식(CTE)  - 서브쿼리와 비슷한 역할을 하지만 가독성과 재사용성에서 더 좋음- 예시 사용법WITH player_total_hours AS ( SELECT player_id, SUM(hours_played) AS total_hours FROM player_activity GROUP BY player_id)SELECT pa.player_id, q.quest_name, q.difficulty, pa.hours_playedFROM player_activity paINNER JOIN quests q ON..
[SQL] 4-2. SQL과 제약조건
·
Programming Language
더 자세하게 제약조건에 대해 알아보기● 기본 키(Primary Key) 제약 조건 :  - 테이블에 있는 데이터를 고유하게 구분할 수 있는 정보를 나타내기 위해 사용  - 기본 키 설정하지 않은 테이블을 생성할 때 날 수 있는 Error ▼ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key - 어떤 식으로 SQL을 작성하는가? ▼CREATE TABLE Users( userId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, name varchar(255));- AUTO_INCREMENT : 데이터를 ..
[SQL] 4-1. SQL과 제약 조건
·
Programming Language
제약 조건(Constraint)이란?● 각 칼럼들 간의 제한사항을 관리하고, 조건을 위반하는 데이터를 방지  → 데이터베이스의 무결성(Intergrity)을 보장하는 규칙 ● 왜 필요할까?  - 사용자의 이메일이 중복되는 경우, 이메일이 아닌 다른 데이터로 사용자를    고유하게 구분할 수 없다면, 해당 사용자의 정보를 정확하게 알 수 없다.   → 이러한 문제를 해결하기 위해 제약 조건이 필요하다.   - 제약 조건은 데이터베이스 테이블을 분석할 때 설정된 칼럼의 속성을 바탕으로    해당 테이블이 어떤 역할을 하는지, 어떤 데이터를 저장하고 있는지 명확하게    인지할 수 있도록 도와준다. 제약 조건의 종류● 고유(Unique) 제약 조건 (=Unique)  - 테이블에 소속된 특정 칼럼이 중복된 키..
[SQL] 3. DDL, DML, DCL, TCL
·
Programming Language
DDL (Data Definition Language)● 데이터를 정의할 때 사용하는 언어  - 테이블, 데이터베이스를 생성, 수정, 삭제 ●  CREATE  - DATABASE, TABLE, VIEW, INDEX 등을 생성할 때 사용CREATE DATABASE 데이터베이스명;CREATE TABLE 테이블명{ 컬럼명 컬럼속성} ●  DROP   - DATABASE, TABLE, VIEW, INDEX 등을 삭제할 때 사용DROP DATABASE 데이터베이스명;DROP TABLE 테이블명;●  ALTER   - DATABASE, TABLE 등의 속성을 변경할 때 사용ALTER DATABASE 데이터베이스명 변경조건;ALTER TABLE 테이블명 ADD 변경조건; -- 테이블에 새로운 컬럼을 추가ALTER T..