전체 글(326)
-
SQL 기본
데이터는 왜 초기화 되는가? 코드를 저장하면 코드는 컴퓨터를 아무리 껏다가 켜도 그대로 남아있다. 이것이 SSD 의 역할 SSD 같은 경우는 우리가 데이터를 저장하게 되면 그 데이터가 고장나지 않는 이상 영구적으로 저장된다. 만약 코드를 실행하게 되면 SSD 에 저장되어 있던 코드가 램으로 올라가게 된다. SSD에 있던 코드가 그대로 램에 올라오는 것 즉 실행되고 있는 것만 램에 올라온다. 그래서 램에 위치해 있는 이 데이터가 실행이 되어서 서버를 실행하게 된다. 그런데 램에 올라간 데이터는 프로그램이 재시작되면 리셋된다. 이는 하드웨어적인 문제이다. 램은 데이터를 영구적으로 들고 있지 못한다. 그렇기 때문에 실행 도중에 생성된 변수들이나 변경된 값들은 유지될 수가 없다. 왜 램을 사용할까? 램이 속도가..
2023.12.13 -
Dependency Injection / Inversion of Control [의존성 주입 / 제어의 역전] [NestJS]
인스턴스를 생성하지 않았는데 컨트롤러에서 어떻게 주입을 받고 어떻게 서비스에 대한 권한과 접근이 가능할까? 이는 NestJS의 가장 핵심이 되는 요소중 하나이다. 일반 인스턴스화 클래스 B 를 클래스 A에 사용해야 한다면? class A { const b = B(); } class B { } A라는 클래스를 인스턴스로 만들때마다 A 안에 클래스 B의 인스턴스를 매번 새로 생성하게 된다. DI (Dependency Injection) class A { constructor(instance: B) } class B { } B라는 클래스를 생성을 해서 constructor에 입력해준다. 이를 주입이라고 한다. 외부에서 클래스 A가 생성될 때 무조건 클래스 B에 해당되는 인스턴스를 넣어주도록 정의를 하는 것이다..
2023.12.13 -
Redis 트랜잭션 Isolation & Lock
트랜잭션이란? 트랜잭션으로 묶게 되면 트랜잭션 내부에서 하나의 로직이 실패하여 오류가 나게되면 모두 취소시키며 그렇지 않으면 모두 성공시키는 것입니다. Redis 에서 트랜잭션이라니 조금 어색하다고 생각 할 수 있다. 하지만 여러 자료구조를 사용할 수 있는 Redis 의 특성상 트랜잭션을 잘 이용한다면 더 유용하게 다양한 상황에서 Redis를 사용할 수 있다. 읽기 일관성과 데이터 공유를 위해 Data Sets(Key/Value) Lock 을 제공한다. 또한 트랜잭션 제어를 위해 Read Uncommitted와 Read committed 타입 2가지 유형을 제공한다. 빅데이터 처리를 위한 플랫폼에는 Hadoop 과 같은 파일 시스템 기반도 있지만 가장 기본적인 단위의 트랜잭션을 제어할 수 없기 때문에 데..
2023.12.12 -
Redis 확장 모듈
오픈소스로 개발된 Redis server는 빅데이터 저장 및 관리 기술을 제공하는 소프트웨어이다. 물론 RedisLabs co. 에 의해 Enterprise Edition 에 대한 유지 보수 및 기술 지원이 이루어 지고 있지만 최초 Community Edition이 먼저 개발되어 배포된 것이다. 그러다보니 Community Edition에 대한 지속적인 기능 추가 및 서버 확장에는 다소 한계가 있을 수 밖에 없게 되었고 이에 많은 개발자들이 Redis Server의 소스를 이용한 다양한 기능들을 개발하여 배포하게 되었는데 이를 Redis 확장 모듈이라고 한다. REJSON : JSON 데이터 타입을 이용해 데이터를 처리할 수 있는 모듈 RediSQL : Redis Server에서 SQLite(관계형 DB..
2023.12.12 -
Redis 데이터 타입
데이터 타입 종류 내용 strings 문자(text), Binary 유형 데이터를 저장 List 하나의 key에 여러 개의 배열 값을 저장 Hash 하나의 key에 여러 개의 Fields와 Value로 구성 된 테이블을 저장 Set Sorted Set 정렬되지 않은 String 타입 Set과 Hash를 결합한 타입 Bitmaps 0 & 1 로 표현하는 데이터 타입 HyperLogLogs Element 중에서 Unique 한 개수의 Element 만 계산 Geospatial 좌표 데이터를 저장 및 관리하는 데이터 타입 기존 관계형 DB뿐만 아니라 대부분의 NoSQL 제품들은 하나의 토탈 데이터 관리 시스템 기능을 제공하기 때문에 보편적으로 파일 시스템에 비해 효율적으로 데이터를 저장 관리 할 수 있다. R..
2023.12.12 -
NestJS 요청 라이프 사이클 (NestJS Request Lifecycle)
요청 라이프 사이클이란? 요청이 디바이스로부터 서버로 보내진 다음에 응답이 되어서 돌아오는 과정을 전부 표현한 것 NestJS Docs 들어오는 요청 미들웨어 - 전역적으로 바인딩 된 미들웨어 - 모듈 바인딩 미들웨어 가드 - 글로벌 가드 - 컨트롤러 가드 - 라우트 가드 컨트롤러 이전 인터셉터 - 글로벌 인터셉터(컨트롤러 이전) - 컨트롤러 인터셉터(컨트롤러 이전) - 라우트 인터셉터(컨트롤러 이전) 파이프 - 글로벌 파이프 - 컨트롤러 파이프 - 라우트 파이프 - 매개변수 파이프 경로 지정 컨트롤러(메서드 핸들러) 서비스(존재하는 경우) 요청 후 인터셉터 - 라우트 인터셉터(요청 후) - 컨트롤러 인터셉터(요청 후) - 전역 인터셉터(요청 후) 예외 필터(라우트, 컨트롤러, 전역) 서버응답 아래 사진..
2023.12.11