본문 바로가기

분류 전체보기290

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.
[책 리뷰] 객체지향의 사실과 오해 읽게 된 계기  전부터 이 책을 알고는 있었지만, 항상 읽어야지.. 읽어야지.. 생각만 했었다. 이런저런 생각은 많은데, 바로바로 실행에 옮기는 게 쉽지는 않다. 엄청난 필요성을 느끼는 게 아니면, 그냥 생각하는 선에서 그치곤 한다. 그러던 중, 우테코 프리코스 미션을 수행하면서 객체지향 설계에 관한 지식의 필요성을 굉장히 많이 느꼈다.  프리코스 동안의 미션들은 대부분 클래스의 적절한 설계, 클래스 간의 낮은 결합도와 상호작용을 많이 신경써야 했고, 또 그 부분을 지키려고 애썼다. 매 주차마다 더 나은 설계를 하고 싶었고, 그래서 이 책을 택해서 읽게 되었다. 객체지향 하면 떠오르는 캡슐화, 상속, 다형성, 추상화 등의 특징들 이외에도 객체지향 설계에 관한 내용을 더 알아보고 싶었다.   기억에 남는 .. 2024. 2. 21.
조회 쿼리 개선 + 성능 테스트 (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.
우아한테크코스 6기 - 프리코스 회고 여타 기업 공채 지원서를 작성하듯이, 한 번 지원해보자라는 가벼운 마음으로 우테코 6기 지원서를 작성해나갔다. 지원서를 작성하다보니 가벼운 마음은 사라졌고, 점점 몰입해서 작성하면서 꼬박 며칠을 몰두해서 썼던 것 같다. 우아한테크코스 6기에 지원서를 제출하고 약 3일 뒤부터 프리코스가 시작되었다. 10월 19일부터 11월 15일까지 총 4주간의 프리코스 일정을 경험하면서 배운 것들을 기록해보며 다시 한 번 되새겨보려 한다. 각 주차마다 미션이 주어지고, 해당 미션의 요구사항들을 지키면서 개발을 진행하면 된다. 먼저, 미션의 요구사항을 이해하고 필요한 기능들을 스스로 정의해야 한다. 이 기능 목록을 작성하는 것이 매 미션마다 새로웠고 쉽지 않았다. 하지만, 주차가 지나갈수록 기능 목록 작성에 대해 나만의 .. 2023. 11. 16.
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.
인프콘 2023 후기 및 회고 인프콘 2023 운이 좋게도 인프콘 참가자로 선정되어, 어제(8월 15일) 강남 엑스포에서 열린 인프콘에 다녀왔다. 9시부터 입장 등록 시간이였고 10시부터 인프런의 CTO님과 이동욱님의 시작 연사가 시작이었기 때문에, 아침 6시 정도 일어나 준비하고 서둘러 일찍 출발했다. 인천에서 출발하면 약 2시간 정도.. 엑스포 들어가는 입구부터 사람들이 보이기 시작했고, 긴장반 설렘반으로 입장했다. 1층 입구에서 인프콘 개인 인프콘 티와 굿즈, 이름표를 부여 받고 드디어 입장! 이번 인프콘 참가자가 약 1500명이라는데, 들어서자마자 실감 안날 정도로 많은 인파가 몰려있었다. 사람 많은 곳에서는 한없이 약해지는 나에겐, 입장 처음에 정신이 너무 없었다. 10시 연사 바로 직전에 도착했기 때문에, 주변 분위기에 동.. 2023. 8. 16.