JPA에서 PostgreSQL Batch Insert 사용하기 (feat. Batch Size)
·
Spring/JPA
0. 들어가기 전JPA를 사용해서 개발 시 여러 건의 Entity를 INSERT를 해야하는 상황이 있었습니다. 이때, Spring Data JPA의 커스텀 메소드인 saveAll을 사용하면 Batch Insert 상태로 동작할 것이라고 예상했습니다.하지만 실제 쿼리는 Batch Insert로 1건의 쿼리가 아닌 여러 건의 INSERT 쿼리가 발생하는 것을 확인했습니다. 그래서 이번에 JPA, PostgreSQL에서 Batch Insert를 어떻게 할 수 있는지 알아보도록 하겠습니다.1. 문제 상황@Transactionalpublic List createAll(Collection skills, String jobId) { ... skillRepository.saveAll(entities); ..
JPA에서 delete, insert 시 왜 insert 쿼리가 먼저 실행될까?
·
Spring/JPA
0. 들어가기 전JPA를 사용해서 개발하던 중에 예상과 다르게 동작하는 테스트를 발견하게 되었습니다. Update 로직을 delete, insert로 구현했는데 delete 후 insert가 되는 것이 아니라, insert 후 delete로 동작하는 것을 확인했습니다. 왜 이러한 쿼리 순서로 실행되는지 상황부터 원인, 해결방법까지 살펴보도록 하겠습니다!1. 문제 상황먼저 기본 컨텍스트를 알려드리면 다음과 같습니다.Job - Skill 1:N이지만, 연관관계는 맺지 않고 JobId로 간접 참조Skill의 update 로직 메소드에서 상황 발생/** * DELETE & INSERT */@Transactionalpublic void replaceUpdateByJobId(Collection skills, Str..
[Kafka] Apache Kafka 공식문서 살펴보기 (Design, 심화 이론)
·
Kafka
0. 들어가기 전바로 전에 Kafka의 기본 이론에 대해서 알아봤었습니다.https://ksh-coding.tistory.com/160 [Kafka] Apache Kafka 알아보기 (기본 이론)0. 들어가기 전이전에 MSA 프로젝트를 진행할 때, Kafka를 사용해본 적이 있습니다.하지만 그때는 먼저 구현을 했어야 했기에 제대로 된 Kafka의 이론은 모른채 구현만 쫓아갔던 기억이 있습니다. ksh-coding.tistory.com  이번에는 공식문서에서 언급하는 좀 더 심화적인 내용들을 살펴보도록 하겠습니다.Kafka 공식문서의 Design 챕터에서는 Kafka의 내부 구조, 원리를 다루고 어떤 장점이 있는지를 소개하고 있습니다.하나씩 알아보도록 하겠습니다.1. PersistenceKafka의 각 이..
[Kafka] Apache Kafka 공식 문서 살펴보기 (기본 이론)
·
Kafka
0. 들어가기 전이전에 MSA 프로젝트를 진행할 때, Kafka를 사용해본 적이 있습니다.하지만 그때는 먼저 구현을 했어야 했기에 제대로 된 Kafka의 이론은 모른채 구현만 쫓아갔던 기억이 있습니다. 현재는 실무에서도 Kafka를 사용하고 있는 시점이고 개인적으로도 어떤 기술이고 어떤 원리인지 궁금하기 때문에 자세히 알아보려 합니다.물론 하나의 기술을 알아볼 때, 실전 -> 이론으로 배우는 것이 빠를 수 있지만당장은 시간이 좀 있어서 이론 -> 실전 순으로 알아보려고 합니다 😀 (처음엔 시간 많았는데 다시 글 쓰려고 보니 이젠 없네요...) 기술을 공부할 때 저는 무조건 기술의 공식문서가 1순위라고 생각하기 때문에 공식문서를 저만의 언어로 풀어서 포스팅해보겠습니다!(거의 번역본일수도.. ㅎㅎ;;) ..
[PostgreSQL] 2. PostgreSQL Index 알아보기 (Index Type, Index Scan)
·
DB
0. 들어가기 전이전 챕터에서 PostgreSQL의 Internal, 내부 구조에 대해서 간략하게 살펴봤습니다. 이번에는 PostgreSQL에는 어떤 Index Type이 있는지, Index Scan은 어떤 것이 있는지 살펴보겠습니다.Index는 깊게 들어가면 너무나 어려운 내용이라서 간략하게만 다뤄보도록 하겠습니다 :(('PostgreSQL'의 Index에 대해서 알아보는 것이기 때문에, 기본 Index에 관한 개념은 알고 있다고 가정하고 다루지 않겠습니다!) PostgreSQL의 Index를 공부하면서 목표로 한 점은 다음과 같습니다.여러 PostgreSQL Index Type의 동작방식, 내부 원리를 설명할 수 있다.여러 PostgreSQL 타입, 상황에 대해 어떤 Index를 적용할지 떠올릴 수 ..
[PostgreSQL] 1. PostgreSQL 내부 구조 알아보기 (feat. 쿼리 처리 과정)
·
DB
0. 들어가기 전저는 이전까지 DB 벤더 중에서 학습용으로 MySQL만 사용해왔었습니다.그러나 이번 실무에서 PostgreSQL을 사용하게 되면서 PostgreSQL에 대해서 알아보고자 글을 작성하게 되었습니다. PostgreSQL의 모든 내용을 다루기에는 너무나 방대한 양이기에 제가 궁금한 부분, 중요한 부분들만 다뤄보도록 하겠습니다.하나의 주제를 잡아서 주제별로 PostgreSQL의 공식문서를 보고 글을 작성해보겠습니다. 처음은 PostgreSQL에서 커넥션을 맺고 쿼리를 어떻게 처리하는지 PostgreSQL의 내부 구조를 간략하게 추상적으로 살펴보도록 하겠습니다.https://www.postgresql.org/docs/17/overview.html Chapter 50. Overview of Pos..
[DB] DB PK 생성 전략 알아보기 (feat. Auto Increment, UUID, ULID, Snowflake ID, TSID)
·
DB
0. 들어가기 전이전까지 저는 모든 프로젝트에서 관성적으로 다음과 같이 Auto_Increment 전략을 사용해서 DB PK를 생성했습니다.public class XxxEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; ...} 이번에 프로젝트 코드 분석을 하는 도중에 JPA Entity에 다음과 같이 PK 생성을 하는 것을 보게 되었습니다.public class XxxEntity { @Id @Tsid private String id; ...} 관련해서 검색해보니, TSID라는 생성 전략이 있는 것을 확인했습니다.해당 TSID 외에도 다른 PK 생성 전략에 대해 무지했기 때문에 다른 ..
2022~2024 머글이 신입 백엔드 개발자로 전직하기까지의 회고
·
심심한 회고
0. 서론최근에 Big Event가 발생했다.바로 나의 취업.... 직장인으로 전직했다 😁사실 입사한지는 이제 거의 한달 차가 다 되어 가는데, 입사하고 나서는 정신없어서 이런 회고 글조차 작성할 겨를이 없었다. 추석 연휴가 되고 나서 과거를 돌아보니 너무 추억 돋아서 이럴거면 회고 글을 하나 작성해보자! 하고 작성을 시작한다 ㅎ__ㅎ최근(거의 모든 ㅋㅋㅋ) 글이 모두 기술 정보 글인데, 그 사이 한 줄기 감성회고 글이 될 것 같다! :) 개발자의 길을 걷기로 결심한 2022년부터 어찌저찌 신입 개발자가 되어버린 나의 회고를 연도별로 정리해보려고 한다!1. 2021년 말, 진로 마시다가 진로 고민... 🍺나는 성적따라 건축공학과에 진학해서 2021년 말 전까지 미래 고민 없이 충분히 현재를 즐기며..
[DB] AWS DynamoDB 알아보기
·
DB
0. 들어가기 전이번에 AWS의 DynamoDB를 사용할 기회가 생기게 되었습니다.이전에 사용해보지 못했던 기술이기 때문에 DynamoDB에 대한 이해가 선행되어야 했습니다.이번 글에서는 DynamoDB의 적용보다는 DynamoDB의 개념에 대해 알아보고 DynamoDB를 이루는 구성 요소들을 이해하고자 합니다.그래서 다음과 같은 AWS DynamoDB의 공식문서를 참고하여 글을 작성하면서 DynamoDB를 이해해보겠습니다.https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/Introduction.html What is Amazon DynamoDB? - Amazon DynamoDB이 페이지에 작업이 필요하다는 점을 알려 주셔서 감..
[Redis] Redis의 다양한 자료구조와 활용 예시 알아보기
·
DB/Redis
0. 들어가기 전이전에 Redis에 대해서 간단하게 정리해봤었습니다.https://ksh-coding.tistory.com/127 [DB] Redis란?여러 프로젝트를 살펴보니, 인메모리 저장소로 Redis를 사용하는 것을 많이 볼 수 있었습니다.Redis가 무엇이고, 어떤 장점이 있길래 많이 사용하는 걸까요?프로젝트에 적용하기 전에 간략하게 Rediksh-coding.tistory.com 해당 글 이후에 여러 기능에서 Redis를 사용했고, 잘 동작하는 것을 확인할 수 있었습니다.그러나, Redis를 사용할 때 추상화된 Spring Data Redis를 사용하면서 어떤 자료구조로 저장되는지,어떤 자료구조가 해당 기능, 데이터에 적합한지, Redis에 어떤 자료 구조들이 존재하는지에 대해 모르고 사용했었..
BE_성하
성장하는 성하 Blog