본문 바로가기

Develop197

Datagrip Data Source 연결 시, invalid fetch size 문제 해결 Maria DB를 로컬에 생성한 후, Datagrip을 통해 Data Source를 연결하는 과정에서 문제가 발생하였습니다.  Test Connection을 통해 정상적으로 연결되는 것을 확인하였습니다.OK를 눌러 Data Source 연결을 적용하려고 하니, 우측 하단에 다음과 같은 경고 문구가 떴습니다.  Data Source를 연결할 때, 디폴트 값으로 설정된 fetch size에 문제가 있나 싶었습니다.해당 Data Source의 속성 설정에 들어가 defaultFetchSize 값을 늘려서 연결해보았지만 실패했습니다.  관련해서 구글링을 해보다가 Jetbrains YouTrack에 동일한 이슈에 대해서 다루고 있었고, 해답을 찾게 되었습니다.  JDBC 드라이버의 버전 문제였고, 버전을 낮춰주니.. 2024. 6. 16.
조회 쿼리 개선 + 성능 테스트 (Querydsl, nGrinder) 귤박스 프로젝트에서 초기 단일 게시글 조회 API는 다음과 같은 쿼리 메서드를 사용했다. public interface PostRepository extends JpaRepository { Optional findByPostId(long id); } Spring Data JPA에서 제공하는 단순 쿼리 메서드를 이용했고, 다음과 같이 N+1 문제가 발생하였다. 먼저, N+1 문제가 발생하는 이유는 단일 게시글을 조회 시, 응답되는 데이터 때문이다. (엄밀히 말하면, 응답되는 데이터라기보다 응답 데이터를 불러오는 방식 때문) 해당 응답 데이터는 다음과 같은 데이터들을 포함한다. 1. 조회하는 게시글의 정보 (Post) 2. 게시글의 작성자 (User) 3. 게시글이 속한 주거 공간 (HouseInfo) 4... 2024. 1. 10.
API 성능 테스트를 위한 nGrinder 시작하기 nGrinder는 네이버에서 제작한 The Grinder 기반의 테스팅 플랫폼이다. - nGrinder 공식 페이지: https://naver.github.io/ngrinder/ nGrinder Please post questions in Discussions not Issues. nGrinder 3.5.5-p1 version is now available. Check the changes at here. nGrinder is a platform for stress tests that enables you to execute script creation, test execution, monitoring, and result report gener naver.github.io 이전에 진행했던 사이드 프로젝.. 2023. 12. 25.
H2 DB - 3가지 모드(Embedded, In-Memory, Server Mode) H2 DB는 Java 기반 경량의 오픈소스 RDBMS입니다. 다음과 같은 특징을 가집니다. 매우 빠른 성능을 제공하는 오픈소스 JDBC를 사용한 Java 애플리케이션과 상호작용 가능 임베디드 모드, 인메모리 모드, 그리고 서버 모드를 지원 영구적으로 저장되지 않는 인메모리 데이터베이스 브라우저 기반의 콘솔 응용 프로그램 제공 경량 데이터베이스(H2의 JAR 파일 크기는 약 2.5MB) 각각의 모드에 대한 사용법과 특징은 아래와 같습니다. 임베디드 모드(Embedded Mode) 해당 모드는 애플리케이션 내에 포함되어 실행되고, 로컬 파일 시스템에 DB 파일이 영구적으로 저장됩니다. 애플리케이션을 다시 실행해도 데이터가 그대로 유지됩니다. jdbc:h2:~/test - 사용자의 홈 디렉토리 안에 test라.. 2023. 10. 5.
SQL 쿼리 실행 순서 1. FROM: 데이터 검색, 조작할 테이블 또는 데이터 소스 지정 2. JOIN: 필요한 경우, JOIN 절에서 두 개 이상의 테이블 결합 3. WHERE: 조건을 사용하여 원하는 행 필터링 4. GROUP BY: 그룹화를 위해 특정 열을 기준으로 행 그룹화 5. HAVING: 그룹화된 결과에 대한 조건 지정 6. SELECT: 반환하려는 열 선택, 결과 데이터의 형식 지정 7. DISTINCT: 필요한 경우, 중복된 행 제거 8. ORDER BY: 결과 정렬 9. LIMIT / OFFSET: 페이지네이션을 위해 결과를 제한 or 오프셋 적용 10. SELECT 절에서 계산식이나 함수를 사용하여 데이터 가공 및 변환 11. 실행된 쿼리의 결과 반환 ( INSERT / UPDATE / DELETE: 데이.. 2023. 9. 27.
벌크 연산으로 인한 데이터 값 불일치 문제 해결하기 📌 벌크 연산이란? 데이터베이스에서 대량의 데이터를 한 번에 처리하는 기술을 말한다. 📌 장점 - 성능 향상 : 대량의 데이터를 한 번에 처리하는 기술이기에, 데이터베이스와의 통신 횟수가 감소한다. - 코드 간결성 : 복잡한 반복문과 데이터 조작 코드를 줄일 수 있다. - 트랜잭션 최적화 : 트랜잭션 내에서 데이터 조작을 최적화할 수 있다. (데이터 일관성, DB 락 관리 측면에서 유리) - 쿼리 최적화 : DB 내부적으로 쿼리를 최적화하는 기회를 제공한다. (효율적인 리소스 사용 가능) 📌 단점 - 메모리 사용 : 대량의 데이터를 메모리에 로드하고 처리하기 때문에, 메모리 사용량이 증가할 수 있다. - 데이터 일관성 : 잘못된 벌크 연산을 구현하거나 트랜잭션 처리가 제대로 되지 않으면, 데이터 불일치 .. 2023. 8. 29.
DP - LIS, 냅색 알고리즘 LIS (Longest Increasing Subsequence) 주어진 수열에서 가장 긴 증가하는 부분 수열을 찾는 알고리즘이다. 부분 수열은 원래 수열의 순서를 유지하되, 연속하지 않은 원소들로 이루어진 수열을 말한다. public static int solution() { Collections.sort(bricks); dy[0] = bricks.get(0).height; int answer = dy[0]; for (int i = 1; i = 0; j--) { if (bricks.get(i).weight max) { max = dy[j]; .. 2023. 8. 3.
Java) 이진탐색트리 구현 package org.example; import java.util.ArrayList; public class Tree { // 트리를 구성하는 노드 클래스입니다. public static class Node { private int data; private Node left; private Node right; // 생성자 public Node(int data) { this.setData(data); setLeft(null); setRight(null); } public int getData() { return data; } public Node getLeft() { return left; } public Node getRight() { return right; } public void setData(.. 2023. 7. 28.
TCP/IP 4계층 모델 인터넷 프로토콜 스위트(internet protocol suite)는 프로토콜의 집합으로, TCP/IP 4계층 모델이나 OSI 7계층 모델로 설명할 수 있습니다. TCP/IP 4계층 OSI 7계층 애플리케이션 계층 애플리케이션 계층 프레젠테이션 계층 세션 계층 전송 계층 전송 계층 인터넷 계층 네트워크 계층 링크 계층 데이터 링크 계층 물리 계층 애플리케이션 계층 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공합니다. 더보기 FTP 장치 간의 파일을 전송하는데 사용되는 표준 통신 프로토콜 SSH 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜 HTTP 웹 사이트를 이용하는 데 쓰이는 프로토콜 SMTP 전자 메일 전송을 위한 인터넷 표준 통신 프로토콜 DNS 도메인 이름과 IP.. 2023. 7. 12.