일단 씻고 나가자

25.02.25 본문

Study/닥치는 대로 주워 담기

25.02.25

일단 씻고 나가자 2025. 2. 25. 23:50

2025. 02. 25 화요일

 

- [DB] connection, session? 차이?

: 커넥션은 WASDB의 물리적인 연결이고, 세션은 논리적인 실행단위이다.

 

커넥션이란 TCP의 커넥션과 같으며, 클라이언트(WAS)와 서버(DB)가 지속해서 데이터를 주고받기 위해 유지하는 통로이다.

 

세션은 커넥션 내에서 개별 요청을 수행하는 개별 개체이며, 일반적으로 하나의 커넥션이 하나의 세션을 수행하고 회수된다. (멀티쿼리 등의 특수한 경우에서 하나의 커넥션이 여러 세션을 수행할 수도 있다)

세션은 해당 커넥션에서 수행한 트랜잭션 및 쿼리에 대한 문맥(context)을 유지하고 필요하다면 재사용될 수 있으며 (= 여러 트랜잭션 수행 가능), 이때 세션이 저장하는 문맥이란 트랜잭션 수행 상태, 임시 테이블 유지, 변수 유지 등이 있다.

 

보통 DBCP에 의해 WAS 최초 실행 시 일정 개수의 커넥션이 미리 맺어지고,

DB를 통하는 요청이 있을 때마다 커넥션을 부여하고 요청이 끝나면 connection pool로 수거하여 DB와 연결될 때의 자원을 절약한다.

 

세션 또한 작업 중이지 않은 inactive 한 상태라면 자원 활용을 위해 회수할 수도 있다.

 

 

- HTTP session?

: Server 측에서 DB 등을 통해 관리하는, Client의 접속 상태를 유지하기 위한 기술.

 

인터넷은 stateless 기반이기에 특정 사용자의 정보를 다음 페이지에서 유지할 수 없다.

하지만 로그인 상태/권한에 따른 페이지, 혹은 활동에 의한 응답 차이 등을 주어야 하므로,

애플리케이션에서 stateful 한 기능(ex. 장바구니)session으로 구현하게 되었다.

 

session의 활용 방식 예시는 다음과 같다.

클라이언트에서 id, pw를 서버에 전달하며 로그인 request.

서버는 DB를 통해 id, pw를 조회하고 확인.

서버는 해당 사용자의 식별을 위한 uuid, session_id를 생성하고,
Redis DB[session_id : {해당 사용자는 로그인 상태임 + 해당 사용자 정보}] 저장
response headerset-cookie 필드에 session_id를 넣어 response.

4. 클라이언트는 response에 의해 cookie에 자동으로 session_id가 저장,
해당 session_id는 브라우저(cookie)의 종료, 혹은 세션 종료 시까지만 유지됨.
이후 request의 헤더에 자동으로 session_id가 담기어 요청됨.

5, 서버는 회원 인증 혹은 로그인 상태를 확인할 때마다 request 헤더의 session_id를 확인,
해당 idRedis 혹은 DB에 저장된 회원 정보를 조회.

 

https://okky.kr/questions/680128

https://88240.tistory.com/190

 

 

- UUID?

: Universally Unique Identifier. 범용 고유 식별자.

분산 컴퓨팅 환경, 혹은 네트워크에서 세션에 id를 부여할 때 중복 여부 확인이 불가하므로,

개별 시스템이 id를 발급하더라도 유일성이 보장되는, 겹칠 확률이 희박한 id 생성을 위해 개발된 표준 규약.

 

8-4-4-4-12 형태의 난수 형태로 제작되며, 하이픈을 포함한다.

난수는 timestampnano second 자릿수를 활용하며, 버전에 따라 조금씩 달라진다.

 

https://mattmk.tistory.com/31

https://kotlinworld.com/417

 

'Study > 닥치는 대로 주워 담기' 카테고리의 다른 글

25.02.26  (0) 2025.02.26
25.02.24  (0) 2025.02.24
25.02.21  (1) 2025.02.21
25.02.07  (0) 2025.02.07
25.01.18  (0) 2025.01.18