paging이란 page 처리를 해주는 것을 말하는데, 쉽게 말해 데이터 양을 잘라서 출력하는 것이다.
구글에 어떤 검색어를 입력했을 때, 엄청 많은 결과가 나올 것이다.
이때 모든 결과를 한 페이지에 담으려고 하면 페이지의 크기도 너무 커지고 로딩 시간도 길어질 것이다.
그래서 paging을 이용하여 한 페이지에 나오는 데이터의 양을 제한한다.
예를 들어, 데이터 베이스에서 아래 코드를 실행시켰을 때,
SELECT *
FROM User
LIMIT 0,5;
1페이지에는 idx 0부터 5개의 데이터를 출력해준다.
이때 시작 데이터의 idx를 offset이라고 한다.
Transaction이란 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위를 말한다.
은행에서 송금을 할 때를 생각해보자.
A에서 출금 하여 B에게 보내려는데, 출금만 된 시점에서 에러가 발생한다면 A의 돈이 공중분해 된다.
그래서 출금과 입금 자체를 하나의 단위로 만들고, 둘 다 무사히 실행되었을 때 데이터 베이스의 상태가 변화 되게 된다.
이때 commit
과 rollback
연산은 transaction의 성공과 취소를 반영하는 명령어이다.
트랜잭션 안의 여러개의 연산을 수행하고 있는 상태가 Active 상태이다.
위에서 부분 완료는 명령어 중 몇 개만 성공했다는 뜻이 아니라, 모든 명령어를 성공한 후 commit을 하기 직전의 상태를 말한다.
출처: https://mommoo.tistory.com/62 [개발자로 홀로 서기:티스토리]
HTTP 프로토콜은 요청에 대한 응답을 수행할 뿐, 특정 상태를 저장하지 않는다.
이것을 stateless라고 한다. 다른 예로는 UDP가 있다.
stateless 형태의 경우 로그인을 한다고 해도 로그인을 한 순간 딱 한 번만 로그인이 입증 되고, 그 후에는 상태를 저장하지 않기 때문에 로그인이 유지되지 않는다.
그러나 우리가 사용하는 어플리케이션에서는 로그인이 유지되어야 하기 때문에 여러가지 방법을 써서 상태를 저장한다.
그 중 한 가지 방법이 쿠키와 세션을 이용하는 것이다.
쿠키(Cookie)는 웹 사이트에 접속할 때 생성되는 정보를 담은 임시 파일!
서버가 사용자의 웹 브라우저에 저장하는 데이터를 말한다.
즉, 쿠키는 사용자가 가지고 있다가 사용자가 요청을 할 때 쿠키 정보를 함께 보내서 사용자를 식별할 수 있게 한다.
세션(Session)은 웹 브라우저 당 1개씩 생성되며 웹 컨테이너에 저장되어 브라우저 종료 시 함께 소멸된다.
쿠키와 달리 세션은 서버가 가지고 있는다. 서버의 쿠키라고 생각할 수 있다.
ID, 닉네임 등을 세션에 담아두면 요청이 있을 때마다 DB에 접근하지 않아도 되기 때문에 효율적이다!
출처 : https://devuna.tistory.com/23
또 다른 방법은 JWT를 이용하는 것이다.
JWT는 유저를 인증하고 식별하기 위한 토큰 기반 인증 방법이다.
이 토큰에는 사용자의 권한 정보나 서비스를 이용하기 위한 정보가 담겨있다.
Header(인코딩 방식), Payload(사용자의 정보), Signature(전자 서명 즉, 암호화 된 키)로 구성된다.
토큰은 클라이언트에 저장되기 때문에 메모리나 스토리지 등을 통해 세션을 관리하던 서버의 부담을 덜 수 있다.
다만 보안이 취약해서 HTTPS가 필수로 요구된다.
OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는 프로토콜이다.
쉽게 설명하자면, 카카오 계정으로 로그인 등과 같이 간편히 회원가입 할 수 있는 기능을 구현할 때 사용되는 프로토콜이다.
보안이 좋지만 복잡한 과정을 가지고 있다.
설명을 찾아보다가, 설명이 정말 잘 되어 있는 블로그를 찾아서 아래 링크를 첨부한다.