본문 바로가기

전체 글96

SQL 1 이번 글에서는 SQL에 대해서 다뤄볼 것이다. SQL은 모든 주요 상업 DBMS에서 사용이되며, 표준화되어있다. GUI나 프롬프트 등으로 상호작용이 가능하고 관계대수를 기반으로 declarative(선언형)한 프로그래밍 언어이다. 여기서 선언형이란 작업을 진행하기 위해 무엇을 진행할 것인지를 나열하는 것이다. 명령형 프로그래밍 언어인 c나 java처럼 작업을 어떻게 하는지 정의하지는 않는다. SQL은 몇 종류의 명령어로 나눌 수 있는데, 이전에 설명한 DDL, DML과 기타 명령어(index, constraints, ...)로 나눌 수 있다. 시작하기 전에 가장 자주 쓰이는 SELECT문의 형태를 예시로 보자. Select A1, A2, ..., An From R1, R2, ..., Rm Where co.. 2022. 9. 19.
[Spring Boot, Spring Security, Data JPA] 로그인/로그아웃 2 이번에는 reissue와 로그아웃을 기능을 구현해볼 차례이다. 저번 글에서 확인해서 알겠지만 refresh token을 관계형 DB에 저장하지 않고 redis라는 인메모리 비관계형 DB에 저장했다. 아무래도 reissue 요청이나 로그아웃 요청은 빈번히 발생하기 때문에 성능적으로도 유리한 것도 있지만, 사실 프로젝트 수준에서 이는 크게 체감되지 않았고 오히려 데이터 저장 시간을 간단히 설정할 수 있다는 점이 유용하다고 생각했다. 어쨌든 이 글에서는 reissue, logout 기능을 어떤 식으로 구현했는지 살펴보자. Reissue access token의 유효기간은 5분정도로 설정해놓았다. 그리고 클라이언트에서 유효기간 만료 몇 초전에 access token과 refresh token을 body에 담아 .. 2022. 9. 18.
관계대수(Relational Algebra) 이전 글에서도 말했듯이 테이블 집합에 대한 쿼리(질의)는 결과로 relation(table)을 반환한다. 여기서는 관계 대수를 사용하여 각 쿼리를 표현할 것이다. 관계대수는 어떻게 쿼리를 수행할 것인가를 명시하는 절차적 언어이다. 이것은 SQL의 이론적 기초이다. 이 글에서도 이전 처럼 대학 원서 제출 서비스에서 발생하는 상황을 바탕으로 진행한다. Query Simplest query 가장 간단한 쿼리는 테이블 자체를 가져오는 쿼리이다. 표현도 단순하게 테이블 이름만 적으면 된다. 'Student'는 Studnet 테이블 자체를 가져오는 쿼리인 것이다. 여기에 연산자(operator)를 사용하여 필터링, 자르기, 병합 등의 작업을 수행할 수 있다. Select operator 우선 특정 rows를 선택하.. 2022. 9. 14.
관계 모델(Relational Model) 이 카테고리의 글 들은 아주대학교 변광준 교수님의 '데이터베이스' 수업을 수강하고 복습 겸 정리하는 글이다. 이 수업은 관계형 DB에 대해 다루게 된다. 첫 시간은 관계형 모델에 대한 내용이다. 우선 관계형 모델은 대부분의 주요 사용 DB 시스템에서 사용된다. 간단한 형태의 모델을 가지며 고급 언어를 이용한 단순한 쿼리를 이용하여 효율적으로 DB 시스템을 구현할 수 있다. 관계형 모델의 구성 그럼 관계형 모델이 어떤 구조로 구성이 되는지 알아보자. 유의어가 많아서 생각보다 헷갈린다. Scehma: 스키마란 데이터베이스의 관계에 대한 구조적 설명이다. fig 1을 보면 Student 테이블의 스키마는 id, name, GPA, photo이고, College 테이블의 스키마는 name, state, enr이.. 2022. 9. 12.