분류 전체보기(301)
-
[React] JWT
JWT의 이해 JSON Web Token의 약자로 데이터가 JSON으로 이루어져 있는 토큰을 의미한다. 두 개체가 서로 안전하게 정보를 주고받을 수 있도록 웹 표준으로 정의된 기술이다. 세션 기반 인증 vs. 토큰 기반 인증 세션 기반 인증 서버가 사용자가 로그인 중임을 기억하고 있다는 뜻 세션 기반 인증 시스템에서 사용자가 로그인을 하면, 서버는 세션 저장소에 사용자의 정보를 조회하고 세션 ID를 발급한다. 발급된 ID는 주로 브라우저의 쿠키에 저장한다. 그 다음에 사용자가 다른 요청을 보낼 때마다 서버는 세션 저장소에서 세션을 조회한 후 로그인 여부를 결정하여 작업을 처리하고 응답을 보낸다. 세션 저장소로는 주로 - 메모리 - 디스크 - 데이터베이스 단점 서버를 확장하기가 번거로워질 수 있다. 만약 ..
2022.04.03 -
비동기가 과연 효율적일까?
Stack Overflow에서 비동기에 관해 쉽게 설명해주는 글을 보아서 번역을 해보았다. Async는 speed에 관한 것이 아니라 초당 요청에 관한 개념과 연관되어있다. Aysnc는 오직 한 가지의 일만 수행한다. 만약 Task가 대기되어진다면, 그 Task는 CPU Bound 작업(CPU 사용시간 > I/O 대기 시간)이 아니라면 (즉 I/O Bound 작업이라면) 그 결과적으로 해당 Thread는 가동되지 않고 놀게 되고,(Thread becomes Idle) 다른 작업을 할 수 있도록 pool로 돌아간다. 바로 여기서 Async의 핵심은 리소스를 효율적으로 쓰는 것이다. Thread가 묶여서 있을 수 있는 상황에서 일부 I/O 작업이 완료되기를 기다리는 대신 다른 작업을 수행할 수 있다. 1. ..
2022.03.31 -
[SQL] 그룹함수
RANK 함수 ORDER BY를 포함한 QUERY 문에서 특정 항목(칼럼)에 대한 순위를 구하는 함수이다. 이 때 특정 범위(PARTITION) 내에서 순위를 구할 수도 있고, 전체 데이터에 대한 순위를 구할 수도 있다. 또한 동일한 값에 대해서는 동일한 순위를 부여한다. ex) 사원 데이터에서 급여가 높은 순서와 JOB별로 급여가 높은 순서를 같이 출력한다. SELECT JOB, ENAME, SAL, -- 급여가 높은 순 RANK() OVER (ORDER BY SAL DESC) AS ALL_RK -- JOB 별로 급여가 높은 순 RANK() OVER (PARTITION BY JOB ORDER BY SAL DESC) AS JOB_RK FROM EMP; ex) 앞 SQL 문의 결과는 JOB 과 SALARY..
2022.03.30 -
[SQL] 그룹 함수
ROLLUP 함수 Grouping Columns의 수를 N이라고 했을 때 N + 1 Level의 Subtotal이 생성된다. 중요한 것은 ROLLUP의 인수는 계층 구조이므로 인수 순서가 바뀌면 수행 결과도 바뀌게 되므로 인수의 순서에도 주의해야 한다. SELECT B.DNAME, A.JOB, COUNT(*) AS EMP_CNT, SUM(A.SAL) AS SAL_SUM FROM EMP A, DEPT B WHERE B.DEPTNO = A.DEPTNO GROUP BY ROLLUP(B.DNAME, A.JOB); CUBE 함수 ROLLUP에서는 단지 가능한 Subtotal만을 생성하지만, CUBE는 결합 가능한 모든 값에 대해 다차원 집계를 생성한다. 이로 인해 ROLLUP에 비해 시스템에 많은 부담을 주므로 ..
2022.03.30 -
[SQL] 집합 연산자
두 개 이상의 테이블에서 조인을 사용하지 않고 연관된 데이터를 조회하는 방법이 있다. 조인 vs. 집합 연산자 - 조인: 조인 조건을 사용해 여러 테이블의 행과 행을 서로 연결한다. - 집합 연산자: 여러 개의 결과 집합 간의 연산을 통해 결합하는 방식 용도 - 서로 다른 테이블에서 유사한 형태의 결과를 반환하는 것을 하나의 결과로 합치고자 할 때 - 동일 테이블에서 서로 다른 질의를 수행해 결과를 합치고자 할 때 집합연산자를 사용하기 위해서는 다음 조건을 만족해야 한다. - SELECT 절의 칼럼 수가 동일 - SELECT 절의 동일 위치에 존재하는 칼럼의 데이터 타입이 동일 집합 연산자 연산자의 의미 UNION 합집합 연산 단, 결과에서 모든 중복된 행은 하나의 행으로 만든다. UNION ALL 합집..
2022.03.30 -
[SQL] 서브쿼리
JOIN과의 차이 조인은 조인에 참여하는 모든 테이블이 대등한 관계에 있기 때문에 조인에 참여하는 모든 테이블의 칼럼을 어느 위치에서라도 자유롭게 사용할 수 있다. 그러나 서브쿼리는 메인 쿼리의 칼럼을 모두 사용할 수 있지만, 메인 쿼리는 서브 쿼리의 칼럼을 사용할 수 없다. 질의 결과에 서브 쿼리 칼럼을 표시해야 한다면 조인 방식으로 변환하거나 함수, 스칼라 서브 쿼리 등을 사용해야 한다. SQL 문에서 서브 쿼리 방식을 사용해야 할 때 잘못 판단해 조인 방식을 사용하는 경우가 있다. 예를 들어 결과는 조직레벨이고, 사원 테이블에서 체크해야할 조건이 있다면.... 이 때는 조인 방식이 아니라 서브 쿼리 방식을 사용해야 한다. 메인 쿼리로 조직을 사용하고 서브 쿼리로 사원 테이블을 사용하면 결과 집합은 ..
2022.03.29