SQL SQL 관계형 데이터베이스에서 사용하기 위해 설계된 언어이다. 표준적인 SQL 명령어들이 있으며 이것은 모든 관계형 데이터베이스에 의하여 지원된다. SQL 명령어들은 두 가지의 카테고리로 나누어진다. 데이터 정의 명령어(Data Definitnion Language) 테이블을 생성하거나 변경 대표 명령어 : CREATE, ALTER, DROP, USE 데이터 조작 명령어(Data Manipulation Language) 데이터를 추출, 추가, 삭제, 수정 대표 명령어 : SELECT, INSERT, DELETE, UPDATE SQL이 사용되는 분야 관계를 맺고 있는 데이터가 자주 변경되는 프로그램이나 변경될 여지가 없으며 명확한 스키마가 더 중요할 때 사용하면 좋다. NoSQL는 변경될 때마다 여..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ch2Rdq/btrQQbiqCNN/8qrBBGPAp4uebHNzxFTi80/img.png)
인덱스는 RDBMS에서 검색 속도를 높이기 위한 자료구조 Index는 DB 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료 구조 음반(music) row id 제목 가수 발매일 1 aaaaaa a 2022.03.04 2 bbbbbb e 2021.03.03 3 cccccc b … 52222 dddddd b 2021.03.03 52223 eeeeee a 2021.03.03 52224 ffffffff b 2021.03.03 … 99999 ggggggg c 2021.03.03 100000 hhhhhhh d 2021.03.03 어떤 사람이 가수가 a인 모든 음반을 구매하려고 한다고 가정하자! SELECT * FROM music WHERE 가수 = 'a'; index가 없는 경우, 100000개의 데이터를..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/YsCfp/btrNYUYfwgt/WPzSwenOOHBaW0yM9weuWK/img.png)
JWT : JSON WEB TOKEN 토큰 : 특정 규칙에 맡게 문자열 JWT(JSON Web Token)란 인증에 필요한 정보들을 암호화시킨 JSON 토큰을 의미한다. 그리고 JWT 기반 인증은 JWT 토큰(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트를 식별하는 방식이다 JWT는 JSON 데이터를 Base64 URL-safe Encode 를 통해 인코딩하여 직렬화한 것이며, 토큰 내부에는 위변조 방지를 위해 개인키를 통한 전자서명도 들어있다. 따라서 사용자가 JWT 를 서버로 전송하면 서버는 서명을 검증하는 과정을 거치게 되며 검증이 완료되면 요청한 응답을 돌려준다. 개요 브라우저와 SB(Spring Boot)가 통신할 때 최초 요청에는 쿠키에 대한 JSessionID가 없다. 새..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bPQ1DT/btrNXMth6g7/upPBCNoBHjOGqdaBkgblzK/img.png)
HTTP 프로토콜의 특징 비연결 지향(Connectionless) 클라이언트가 request를 서버에 보내고, 서버가 클라이언트에 요청에 맞는 response를 보내면 바로 연결을 끊는다. keep-alive 옵션을 주어 커넥션을 재활용하게 한다. 상태정보 유지 안 함(Stateless) 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태 정보를 유지하지 않는다. 쿠키와 세션의 필요성 HTTP 프로토콜은 위와 같은 특징으로 모든 요청 간 의존관계가 없다. 즉, 현재 접속한 사용자가 이전에 접속했던 사용자와 같은 사용자인지 아닌지 알 수 있는 방법이 없다. 계속해서 연결을 유지하지 않기 때문에 리소스 낭비가 줄어드는 것이 큰 장점이지만, 통신할 때마다 새로 연결하기 때문에 클라이언트는 매 요청마다 인..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bEawOo/btrMZDiQbNC/5E0Su9ZTt65GkE7iw00taK/img.png)
깃허브, 네이버, 카카오등을 통해 우리는 소셜 로그인을 만들 수 있다. 나의 서비스와 이들은 서로에 대해서는 사실 모른다고 표현할 수 있고 그들 가운데 oauth라는 표준 인터페이스 역할을 하는 것이 있다. 이것에 의하여 묶여 소셜 로그인이 된다. oauth를 활용하면 우리가 만든 서비스가 그들의 서비스와 상호작용 할 수 있게 된다. 우리가 만든 서비스는 ID나 PW가 아닌 access Token이라는 것을 oauth를 통해 획득하고 그 토큰을 활용하여 다른 서비스에 접근해서 데이터를 가져오고 생성하고 수정하는 등의 작업이 가능하다. 이 access Token이 사용자를 식별할 수 있는 것이다. 이 때 Their을 담당하는 다른 서비스를 Resoure Server, 그리고 우리가 만든 서비스(mine)를..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/r7r5O/btrJqakJsCS/THDKCTtkBTuuW3Yw0Wjx4K/img.png)
트리거 정의 💡 트리거(TRIGGER)란 테이블에 대한 이벤트에 반응해 자동으로 실행되는 작업을 의미한다. 테이블에 대한 이벤트 ⇒ INSERT, UPDATE, DELETE과 같은 작업이 발생되면 자동으로 실행되는 코드로 DML의 데이터 상태 관리를 자동화하는 데 사용된다. 예시 1) 구글 로그인 시 예전 비밀번호를 입력하면 몇개월 전 변경되었다는 알림이 나온다. ⇒ 비밀번호를 변경함과 동시에 이전의 비밀번호를 트리거를 활용하여 삭제될 데이터를 자동으로 저장해주는 용도로 사용됨을 볼 수 있다. 예시 2) 대학교를 자퇴했는데 추후에 내가 다녔던 기록을 알고 싶으면 조회할 수 있다. ⇒ 대학교를 자퇴함에 학교 테이블에서 삭제함과 동시에 트리거를 활용하여 다른 곳에 자동으로 저장할 수 있음 종류 설명 행 트리..