본문 바로가기

SQL5

MongoDB - bulkWrite() 를 이용한 대량 쓰기 작업 처리 데이터의 싱크 맞추는 작업을 하기 위해 몽고디비에서 지원하는 bulkWrite 기능을 이용해서 작업하여 bulkWrite에 대해서 정리한다. MongoDB - bulkWrite() 를 이용한 대량 쓰기 작업 처리 bulkWrite 몽고디비에서 제공하는 bulkWrite()을 이용하면 단일 컬렉션에 대해서 대량 쓰기 작업 뿐만 아니라 업데이트 및 삭제 작업도 수행이 가능하다. (대량 삽입만이라면 isertMany()도 이용 가능) bulkWrite 기능을 이용할 때는 주의점이 있는데 bulkWrite 작업 시 방식이 두가지가 존재한다는 점이다. 첫번째로는 Ordered 방식으로 순서가 존재하는 작업 목록이고 두번째로는 그 반대인 Unordered 방식으로 순서가 존재하지 않는 방식이다. Ordered 방식.. 2023. 2. 18.
자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (10-1) 객체 지향 쿼리 언어 JPQL / Criteria / QueryDSL / 네이티브 SQL / JDBC 직접 사용 / SQL 매퍼에 대한 개념을 정리한다. 10강은 내용이 많아 1편과 2편으로 나눠서 정리한다. 자바 ORM 표준 JPA 프로그래밍 - JPA 정리하기 (10-1) 객체 지향 쿼리 언어 10.1 객체지향 쿼리 소개 ORM을 사용하면 데이터베이스 테이블이 아닌 엔티티 객체를 대상으로 개발하므로 검색도 테이블이 아닌 엔티티 객체를 대상으로 하는 방법이 필요하여 만들어진 것이 JPQL JPQL 특징 테이블이 아닌 객체를 대상으로 검색하는 객체지향 쿼리 SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않는다. JPA는 JPQL 뿐만 아니라 다양한 검색 방법 제공 JPA가 공식 지원하는 기능 JPQL (Java Pe.. 2022. 10. 5.
MySQL - 특정 데이터 포함 확인 LOCATE / INSTR / LIKE 들어가며 MySQL을 통해 테이블에 문자열이 포함되어 있는지 확인하는 3가지 방법에 대해서 정리한다. INSTR 기능 MySQL의 LOCATE 함수를 사용하여 문자열에 특정 데이터가 포함되어 있는지 확인이 가능하다. LOCATE 함수는 LOCATE(substr, str)과 같이 두개의 인수를 사용한다. substr에는 문자열을 입력하고 str에 있는 문자열 substr의 검색 위치를 정수로 반환한다. 만약 substr에 str이 없다면 0을 반환한다. 추가적으로 LOCATE(substr, str, pos) 가 있는데 여기서 pos 위치로 예를들어 5를 적게 되면 문자열 5 이후에 주어진 str을 찾게 된다. 쿼리를 날려보면 다음과 같이 주어진 문자열을 포함을 하고 있다면 결과를 다 반환한다. INSTR .. 2022. 8. 19.
JPA - N+1 문제와 해결방법 정리 들어가며 JPA를 사용하다 보면 N+1 문제를 한번씩은 겪어봤을것이다. 하지만 콘솔창을 자세히 보지 않았다면 그냥 지나쳤을 수도 있다. N+1의 문제가 발생한다고 해서 결과에 문제가 생기는 것은 아니지만 성능에는 문제가 생길 수 있기 때문에 확실히 인지해서 문제를 해결하는 것이 좋다. N+1 문제란 무엇인가? 연관관계가 설정된 엔티티를 조회할 때 조회 된 데이터의 갯수만큼 조회 쿼리가 추가로 발생하는 경우는 말한다. 이해를 돕기 위해 예를 들면 팀과 회원의 연관관계에서 팀을 조회했을때 팀에 속한 회원이 10명 있다고 가정할때 팀을 조회할때 연관관계를 가지고 있는 회원을 조회하는 쿼리가 10번(n번) 발생하는 것을 의미한다. N+1 == 10번(회원) + 1번(팀) Fetch 모드에 따른 결과 (즉시 로딩.. 2022. 8. 9.
QueryDsl 사용 시 CrossJoin 발생하는 경우와 해결 방법 들어가며 QueryDsl을 사용하던 도중 원치않게 CrossJoin이 발생하는 경우를 발견하여 해당 사항을 정리한다. Cross Join 먼저 CrossJoin이 무엇인지에 대해서 알아본다. CrossJoin은 교차조인이라고 말하여 두 테이블이 있을때 교차조인을 하게 되면 두 테이블의 데이터의 모든 조합을 나타내게 된다. 한쪽에 데이터가 n개이고 다른 한쪽에 데이터가 m개라고 한다면 총 n x m개의 경우의 수가 나타나게 되어 데이터가 많은 테이블이라면 사용할때 주의하지 않으면 성능상 큰 문제를 가져올 수 있다. Cross Join 발생하는 경우 위에서도 설명을 했듯이 교차 조인이 필요하여 사용하는 경우는 상관없지만 원치않는 상황에서 교차조인이 발생하게 되면 성능상 문제가 될 수 있기에 원치 않는 교차 .. 2022. 7. 29.