분류 전체보기(76)
-
페이징 성능 개선하기 - No Offset, Covering Index, Non Clustered Index 사용
개요 현재 진행하고 있는 프로젝트에 단어 테스트 결과 목록 조회는 무한 스크롤 방식으로 구현할 예정이기 때문에 페이지가 뒤로 갈수록 느려지는 기존 페이징 방식 대신 아무리 페이지가 뒤로 가더라도 처음 페이지를 읽는 것과 같은 No Offset 방식을 사용하게 되었습니다. 단어 테스트 결과 목록 조회를 하기 위한 VocabularyTest, User, VocabularyLearning 테이블에 각 1,000,000개의 임의 데이터를 저장 후 테스트를 진행하였습니다. Before 코드 /* Controller */ @GetMapping("/admin/vocabulary-book/test/result/list") public ResponseEntity vocabularyTestResultLists(Authen..
2024.01.16 -
SpringBoot + JPA 과제 중 구현 로직에 대한 고민 정리.
이번 맛집 추천 서비스 과제를 진행하면서 맛집 목록 조회에 대한 로직을 구현하던 중 생긴 고민과 해결 방법에 대해 정리해 봤습니다. 이번 과제는 공공데이터를 활용하여, 지역 음식점 목록을 자동으로 업데이트하고 이를 활용한다. 사용자 위치에 맞게 맛집 및 메뉴를 추천하여 더 나은 다양한 음식 경험을 제공하고, 음식을 좋아하는 사람들 간의 소통과 공유를 촉진하려 하는 과제입니다. (내 위치 또는 지정한 위치 기반으로 식당 및 해당 맛집의 메뉴를 추천한다.) 맛집 목록 조회 요구사항 맛집 목록 API 아래 쿼리 파라미터를 사용 가능합니다. query 속성 default(미입력 시 값) 설명 lat string 필수값 지구 y축 원점 기준 거리 lon string 필수값 주기 x축 원점 기준 거리 range d..
2023.11.08 -
트랜잭션(Transaction)이란??
트랜잭션 트랜잭션은 데이터베이스에서 수행되는 여러 작업을 하나의 논리적 단위로 수행하는 것. # 예시)사용자 A가 사용자 B한테 100,000을 입금한다. # 1. 사용자 A의 계좌에서 100,000원을 차감한다. UPDATE accounts SET money = money - 100000 WHERE user = "A"; # 2. 사용자 B의 계좌에 100,000원을 추가한다. UPDATE accounts SET money = money + 100000 WHERE user = "B"; DB에서는 트랜잭션이라는 선언을 통해 위 예시 과정을 한 가지 작업으로 묶을 수 있다. 이때 만약 오류 없이 모든 작업이 성공적으로 마치게 되면 DB에 반영하게 되는데, 이것을 트랜잭션 연산에서는 COMMIT이라고 한다. ..
2023.10.30 -
객체 지향 프로그래밍(OOP)이란?
객체 지향 프로그래밍(Object Oriented Programming) 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 상호작용을 통해 프로그램을 만드는 것이다. 즉 기능이 아닌 객체가 중심이며 누가 어떤 일을 할 것 인가?가 핵심이다. 특징으로는 추상화, 상속, 다형성, 캡슐화 등이 있다. 1. 추상화(Abstraction) 객체의 공통적인 속성과 기능을 추출하여 정의하는것이다. 예시로 자동차와 오토바이를 생각해보자. 자동차와 오토바이는 이동 수단이며 모든 이동 수단은 전진과 후진을 할 수 있다는 공통점이 있다. 이것을 자바 문법 요소를 사용하여 표현하면 자동차와 오토바이의 공통적인 기능을 추출하여 이동수단 이라는 인터페이스에 정의한다. 인터페이스는 어떤 ..
2023.10.27 -
HTTP 메서드 GET, POST 차이 PUT, PATCH 차이 정리
GET : 데이터를 읽다. url을 기반으로 데이터를 요구하는 방법. url을 기반으로 하기 때문에 길이 제한(2000자 미만)이 있다. 성공시 HTTP 상태코드 200을 반환 캐싱이 가능함 url을 기반으로 요청하기 때문에 해당 요청의 파라미터가 브라우저 기록에 남음 url을 기반으로 요청하기 때문에 요청할 때 ASCII문자열만 보낼 수 있음. 사용자 이름, 비밀번호 등 민감한 정보를 전달할 때 사용 X POST : 데이터를 생성 url이 아닌 HTTP message body를 통해 데이터를 전달함 HTTP message body를 통해 전달되기 때문에 길이 제한이 없음 성공적으로 데이터를 생성할 경우 HTTP 상태코드 201을 반환함. 캐싱이 불가능함 url을 기반으로 요청하지 않기 때문에 해당 요청..
2023.06.30 -
HTTP 상태코드(status code) 정리
1xx(정보) 서버가 요청을 잘 받았고 해당 프로세스를 계속 이어가며 처리하는 것을 의미한다. 100 : 계속함을 의미함. 2xx(성공) 서버가 요청을 잘 받았고 이를 기반으로 클라이언트에게 성공적으로 데이터를 보낸 것을 의미한다. 200 OK : 요청이 성공적으로 되었습니다. 201 Created : 요청이 성공적이였으며 그 결과로 새로운 리소스가 생성되었습니다. 202 Accepted : 요청은 접수되었지만, 처리는 완료되지 않음을 의미한다. 203 Non- Authoritative Information : 요청이 성공적으로 수행되었으나, 요청에 대한 검증이 되지 않음을 의미한다. 204 No Content : 요청이 성공적으로 수행되었고, 응답 payload에 보낼 데이터가 없음을 의미한다. 205..
2023.06.30