김데이의 개발공부

[ TIL ] Day 59 - NodeJS 아키텍쳐 / SQL 실행 순서 정리 본문

코드잇 Node.js(BE) 부트 캠프/TIL (Today I Learn) 📑

[ TIL ] Day 59 - NodeJS 아키텍쳐 / SQL 실행 순서 정리

theday365 2025. 12. 17. 18:31
반응형

🗓️ 수업 일자 : 2025.12.17

✨ 오늘의 수업 평가 :  [ REVIEW ] 기본기 다시 점검 완료! 🧩📚

 

오전 수업은 정말 무슨 말인지 1도 모르겠..을.. ㅠㅠ 

오후에 다시 봐도 정말 모르겠..을.. ㅎㅎ 

 

일단 접어두고 스프린트 미션을 시작 해 본다!

Prisma로 이미 Schema 작업 해 둔거 쓰면 되겠구나 싶었는데,

생각보다 설정 해 줘야할 게 많았다 ㅎㅎ

 

역시 쉬운거 하나 없구만 😉

 

👩‍💻 [개인 프로젝트] 오늘 작업 내용 💻
- 스프린트 미션에 맞는 DB 구현 with SQL

- SQL 쿼리로 데이터 생성 / 수정 / 삭제

 

📝  오늘 배운 내용  

- NodeJs 아키텍쳐 

- SQL 실행 순서

- SQL 기본 setup

 


1. NodeJs 아키텍쳐 

- 수업 링크 : https://www.digitalocean.com/community/tutorials/node-js-architecture-single-threaded-event-loop

 

Node JS Architecture - Single Threaded Event Loop | DigitalOcean

 

www.digitalocean.com

 

NodeJS 아키텍쳐 핵심 요약 

Nodejs는 싱글 스레드 이지만, 백그라운드 작업 처리 후 결과만 가져오는 이벤트 루프 시스템 덕분에 많은 요청을 빠르게 처리.

 

이벤트 루프의 특징

  • CPU 연산은 바로 처리
  • IO 요청은 기다리지 않고 백그라운드에서 해결
  • 작업 끝나면 알림받아서 처리

이벤트 루프 작업 순서 (1~4 반복)

 

  1. 콜스택에 함수가 쌓인다
  2. 비동기 작업이 있다면 백그라운드로 보낸다
  3. 작업 끝나면 콜백/프로미스를 이벤트 큐에 넣는다
  4. 스택이 비면 큐에서 꺼내 처리 

NodeJs 싱글 스레드 특징

  • 논블로킹 + 이벤트 루프 작업 : IO(파일/DB/네트워크)를 기다리는 동안 멈추지 않음 → 비동기로 여러 작업이 계속 처리 가능
  • 메모리 사용량 적음 : 요청마다 스레드를 만들지 않아서 전통적인 멀티 스레드 서버보다 자원 효율 좋음

 

 

2. SQL 실행 순서

SQL 실행 순서

  • 쿼리 단위로 보았을 때, 먼저 입력한 쿼리가 우선 실행됨 
  • 메인 / 서브 쿼리가 있는 경우, 의존 관계에 의해 실행 순서가 정해짐.
  • 조회(Read) 쿼리의 경우 작성 순서와 무관하게 논리적 실행 순서가 적용 되지만, 
    생성(Create) / 수정(Update) / 삭제(Delete)의 경우 "대상 확정 → 값 계산 → 제약/트리거 → 반영" 순으로 이루어짐

 

Select (조회 쿼리) 논리적 실행 순서

 

  1. FROM : 데이터를 조회 할 테이블을 결정
    • JOIN : FROM 테이블과 함께 볼 추가 테이블 결합
    • ON : 결합 할 때 사용 할 조건, 매칭 방식에 따라 다른 결과 생성
  2. WHERE : FROM절에서 가져온 행에 대해 필터링 
  3. GROUP BY : WHERE절을 통과한 행에 대해 그룹화
    • HAVING : 그룹에 대해 한번 더 필터링
  4. SELECT : 최종 표현 될 데이터를 컬럼/표현식으로 계산, 별칭(AS, alias)을 생성하기도 함
    • DISTINCT : 중복 제거
  5. ORDER BY : 최종 데이터를 사용자가 지정한 순서로 정렬
    • LIMIT / OFFSET : 정렬 된 데이터를 기준으로 잘라내거나, 페이징화

 

SELECT DISTINCT u.id, u.name, COUNT(o.id) AS order_count
FROM users u
  JOIN orders o ON o.user_id = u.id
WHERE u.is_active = true
GROUP BY u.id, u.name
  HAVING COUNT(o.id) >= 1
ORDER BY order_count DESC
  LIMIT 10 OFFSET 0;

 

 

 

3. SQL 기본 setup

데이터 베이스 & 테이블 생성 / 삭제

-- 데이터베이스 생성
CREATE DATABASE "데이터베이스_이름";

-- 데이터베이스 삭제
DROP DATABASE "데이터베이스_이름";


-- 테이블 생성 
CREATE TABLE users ( ... 컬럼 입력 ... );

-- 테이블 삭제 
DROP TABLE users;

 

 

테이블 타입 종류 

  • table (테이블) 📊 
    • 실제 데이터가 저장되는 공간
    • 행(row)과 열(column)으로 구성 됨
  • sequence(시퀀스) 🔢 
    • 데이터 저장 없이 상태만 관리
    • 보통 id 자동 증가용 숫자 생성 객체로 사용

 

SQL 테이블 리스트 확인

 

테이블 데이터 타입 종류 with PostgreSQL (관련 링크 : https://www.postgresql.org/docs/current/datatype.html)

 


 

📃 내일은 뭘 배울까 🤔

- 중급 팀 프로젝트 작업!

반응형