db [Day 18] 국비 0420 - 내용 정리 관계형 데이터베이스에서 검색하고자 하는 컬럼이 두 개 이상의 테이블에 있을 때 조인을 사용한다. 조인을 할 때에는 두 개의 테이블에 공통으로 들어가는 칼럼으로 조건식을 표현한다. 예시) '박지성' 고객이 주문한 모든 도서명과, 도서의 가격, 구매가격, 주문일을 출력 예시) 축구 관련 도서중에 가격이 8000원 이상인 도서를 구매한 고객의 이름, 도서명, 출판사명, 구매일을 출력하세요. 단, ... 국비dbdb [Cache]Mysql(JPA)과 Redis를 함께 사용해보자 안녕하세요 오늘은 Redis와 Mysql(JPA)과 이용하는 방법에 대해 설명해보도록 하겠습니다! DB의 부하를 줄이기 위해, 혹은 select 를 빠르게 하기 위해 사용될 때도 있습니다 위 그림과 같이 캐시 서버에 조회하려는 데이터가 없는 경우에 DB에서 직접 조회를 하게 되는데, IO 작업이 필요한 DB와 다르게 캐시 서버인 Redis는 인메모리 저장소이기 때문에 더 빠르게 조회를 할 수... mysqldbredisJPA캐시JPA [Day 17] 국비 0419 - 내용 정리 🌈도서 테이블 🌈고객 테이블 🌈주문 테이블 (그냥 하면 새로운 아이디가 만들어지기 때문에 반드시 그 테이블에 있는 아이디를 참조해야 한다는 뜻) book 테이블의 칼럼을 확인하는 명령어 book 테이블에 자료를 추가해주었다. 문자열의 패턴을 검색하고자 할 때에 사용하는 연산자 특정 컬럼을 기준으로 자료를 정렬하여 검색하고자 할 때 사용 예시) 모든 도서의 정보를 가격이 높은순으로 정렬하여 출... 국비dbJavaJava [SQL] join할때 on 과 where의 차이 on : join 전에 조건을 필터링 where : join 후에 조건을 필터링 inner join 하면 둘다 차이 없음 outer join 시 on으로 해야 원하는 결과를 얻을 수 있음(outer table에 null값 포함하여 행들이 다 살아있는 상태) on 명령어 on 명령어로 join 전에 조건을 걸어줌. t1 값들이 살아있음 where 명령어 join 및 모든 조건이 끝나고 wher... sql데이터베이스dbdb [SQL]Hackerrank - New Companies join과 group by 활용하는 문제. 회고 unique한 값을 셀 때는 distinct를 사용하여 count group by 할 때, 기준이 되는 두 칼럼이 각각 같은 key 값으로 대응되어도 상관없다. 중요한 것은 count, max 등의 연산이 들어간 칼럼을 제외한 칼럼들(여기서는 company_code 와 founder) 은 모두 group by 에 넣어 주어야 에러가 나지 않는다... db데이터베이스sqldb Spring Boot에서 DB 연결하기 pom.xml에 jdbc나 H2같은 DB에 대한 의존성을 주입할 경우 스프링 부트는 자동으로 DB에 연결하려고 시도한다. 그러나 만약 DB값을 입력하지 않아서 연결을 할 수 없는 경우 위와 같은 메세지를 볼 수 있다. 해결 방법으로는 1. application.properties나 application.yml에 DB값을 입력 2. Cofiguration 생성 3. DB 사용 안한다고 명시... dbSpringSpring [SQL]CASE문과 BST(binary search tree) 데이터 범주화(categorical variable) 약어나 코드를 읽기 쉬운 값으로 변경해 줌 위의 형식 자체가 칼럼이 됨.(CASE~END) 회고😆 CASE WHEN 문을 활용하여 범주화. if 문 제어하듯, 순서가 결과에 영향을 미칠 수 있으니 주의(Root의 경우 맨 먼저 조건을 걸어주어야 정답이 나옴) 서브쿼리를 추가 활용하여 제어.... db데이터베이스sqldb [SQL] Contest Leaderboard(hackerrank) group by 와 서브쿼리 활용. 대회에서 유저들이 여러 컨테스트에서 제출한 최고점수의 합계를 출력하는 문제. 추가 조건(0이상인 것만 출력)을 걸어주어야 해서 좀 더 어려웠음. group by 를 여러번 해야 한다면 전체 select~ from 절을 하나의 table로 놓고, mysql에서는 as t 처럼 이름도 명명해주어야 오류가 나지 않는다. group by 를 쓴 상태에서 where... DatabasedbsqlDatabase Database_SQL_CRUD CRUD 테이블 생성 및 삭제 데이터베이스에서 테이블 생성 데이터베이스에서 테이블 제거 테이블 생성 실습해보기 다음과 같은 스키마를 가지고 있는 classmates 테이블을 만들고 스키마를 확인해보세요. column INSERT 테이블에 단일 행 삽입 모든 열에 데이터가 있는 경우 column을 명시하지 않아도됨 여러개 행 삽입 SELECT SELECT 문은 SQLite에서 가장 복잡한 문이... DatabasedbsqliteDatabase Database_SQL_Function 집계함수 값 집합에 대한 계산을 수행하고 단일 값을 반환 여러 행으로부터 하나의 결과값을 반환하는 함수 SELECT 구문에서만 사용됨 예시 테이블 전체 행 수를 구하는 COUNT(*) age 컬럼 전체 평균 값을 구하는 AVG(age) Overview of SQLite aggregate functions COUNT 그룹의 항목 수를 가져옴 AVG 모든 값의 평균을 계산 MAX 그룹에 있는 모... DatabasedbsqlitesqlDatabase Database_SQL_Function2 "query data based on pattern matching" 패턴 일치를 기반으로 데이터를 조회하는 방법 SQLite는 패턴 구성을 위한 2개의 wildcards를 제공 파일을 지정할 때, 구체적인 이름 대신에 여러 파일을 동시에 지정할 목적으로 사용하는 특수 기호 주로 특정한 패턴이 있는 문자열 혹은 파일을 찾거나, 긴 이름을 생략할 때 쓰임 텍스트 값에서 알 수 없는 문자를 사용... DatabasedbsqlitesqlDatabase MongoRepository를 통한 대량 데이터 삽입시 발생한 이슈 #3 이전에 20만개의 데이터 삽입 시의 문제점은 looping을 통해 진행되는 save가 데이터의 리스트 크기만큼 DB에 접근해 발생하는 네트워크 overhead 였습니다. 이를 해결하기 위해 매번 DB에 접근한게 아니라, Batch insert 방식으로 list로 한번에 저장해야겠다고 생각했고 그 방법은 saveAll 메서드를 이용하여 해결가능했습니다. 자세한 내용은 의 글을 통해 확인하시면 ... issueDSMPdbDSMP MongoRepository를 통한 대량 데이터 삽입시 발생한 이슈 #2 이전에 5만개의 데이터를 처리 했을 때의 문제점은 클라이언트에서 요청하는 save API의 횟수였습니다. 최종적으로, 데이터를 리스트로 받아 들여 5만개의 데이터를 한번의 API로 처리하는 방법으로 문제를 해결 할 수 있었습니다. 이번 글은 20만개 처리 시 발생한 문제를 기반으로 작성하겠습니다 ㅎㅎ 삽입되는 데이터의 갯수가 5만개에서 20만개로 늘어나면서 문제가 발생했습니다! 한번 더 지난... issueDSMPdbDSMP NestJS - 1. mongodb docker 환경 세팅하기 그러나 나는 프로젝트를 기본적으로 Docker에 올려서 하는 편인데, Nest로도 DB Docker랑 연결해서 초기 세팅을 해보고 싶었다... 그래서 검색해보는데, 자꾸 NestJS 프로젝트도 Docker에 올리는게 아닌가.. Dev 세팅은 간편하게 DB만 docker에 올려두고, 서버는 그냥 로컬에서 npm run start:dev로 띄우는게 내 목적이었다. 이렇게 docker-compos... dbNestJSdockermongoDBMSmongodbDB container 연결nestDB container 연결 상위 N건만 뽑아주세요 백엔드 개발자라면 여러 배치잡을 돌리게 된다. 그 중 가장 흔한 유형은 다음과 같을 것이다. 점수 기준으로 상위 4,000개의 게시물만 뽑아주세요! 점수가 같다면 먼저 생성된 걸 뽑아주실래요? 테이블의 스키마는 다음과 같다. 위와 같이 score를 대상으로는 인덱스가 잡혀있는 상황이다. 실제와 비슷한 값을 만들어주기 위해, 다음과 같이 DB를 준비하자. 실험을 위해 위 커맨드를 여러번 조건을... dbrubybatch jobrailsRuby on RailsPostgreSQLPostgreSQL
[Day 18] 국비 0420 - 내용 정리 관계형 데이터베이스에서 검색하고자 하는 컬럼이 두 개 이상의 테이블에 있을 때 조인을 사용한다. 조인을 할 때에는 두 개의 테이블에 공통으로 들어가는 칼럼으로 조건식을 표현한다. 예시) '박지성' 고객이 주문한 모든 도서명과, 도서의 가격, 구매가격, 주문일을 출력 예시) 축구 관련 도서중에 가격이 8000원 이상인 도서를 구매한 고객의 이름, 도서명, 출판사명, 구매일을 출력하세요. 단, ... 국비dbdb [Cache]Mysql(JPA)과 Redis를 함께 사용해보자 안녕하세요 오늘은 Redis와 Mysql(JPA)과 이용하는 방법에 대해 설명해보도록 하겠습니다! DB의 부하를 줄이기 위해, 혹은 select 를 빠르게 하기 위해 사용될 때도 있습니다 위 그림과 같이 캐시 서버에 조회하려는 데이터가 없는 경우에 DB에서 직접 조회를 하게 되는데, IO 작업이 필요한 DB와 다르게 캐시 서버인 Redis는 인메모리 저장소이기 때문에 더 빠르게 조회를 할 수... mysqldbredisJPA캐시JPA [Day 17] 국비 0419 - 내용 정리 🌈도서 테이블 🌈고객 테이블 🌈주문 테이블 (그냥 하면 새로운 아이디가 만들어지기 때문에 반드시 그 테이블에 있는 아이디를 참조해야 한다는 뜻) book 테이블의 칼럼을 확인하는 명령어 book 테이블에 자료를 추가해주었다. 문자열의 패턴을 검색하고자 할 때에 사용하는 연산자 특정 컬럼을 기준으로 자료를 정렬하여 검색하고자 할 때 사용 예시) 모든 도서의 정보를 가격이 높은순으로 정렬하여 출... 국비dbJavaJava [SQL] join할때 on 과 where의 차이 on : join 전에 조건을 필터링 where : join 후에 조건을 필터링 inner join 하면 둘다 차이 없음 outer join 시 on으로 해야 원하는 결과를 얻을 수 있음(outer table에 null값 포함하여 행들이 다 살아있는 상태) on 명령어 on 명령어로 join 전에 조건을 걸어줌. t1 값들이 살아있음 where 명령어 join 및 모든 조건이 끝나고 wher... sql데이터베이스dbdb [SQL]Hackerrank - New Companies join과 group by 활용하는 문제. 회고 unique한 값을 셀 때는 distinct를 사용하여 count group by 할 때, 기준이 되는 두 칼럼이 각각 같은 key 값으로 대응되어도 상관없다. 중요한 것은 count, max 등의 연산이 들어간 칼럼을 제외한 칼럼들(여기서는 company_code 와 founder) 은 모두 group by 에 넣어 주어야 에러가 나지 않는다... db데이터베이스sqldb Spring Boot에서 DB 연결하기 pom.xml에 jdbc나 H2같은 DB에 대한 의존성을 주입할 경우 스프링 부트는 자동으로 DB에 연결하려고 시도한다. 그러나 만약 DB값을 입력하지 않아서 연결을 할 수 없는 경우 위와 같은 메세지를 볼 수 있다. 해결 방법으로는 1. application.properties나 application.yml에 DB값을 입력 2. Cofiguration 생성 3. DB 사용 안한다고 명시... dbSpringSpring [SQL]CASE문과 BST(binary search tree) 데이터 범주화(categorical variable) 약어나 코드를 읽기 쉬운 값으로 변경해 줌 위의 형식 자체가 칼럼이 됨.(CASE~END) 회고😆 CASE WHEN 문을 활용하여 범주화. if 문 제어하듯, 순서가 결과에 영향을 미칠 수 있으니 주의(Root의 경우 맨 먼저 조건을 걸어주어야 정답이 나옴) 서브쿼리를 추가 활용하여 제어.... db데이터베이스sqldb [SQL] Contest Leaderboard(hackerrank) group by 와 서브쿼리 활용. 대회에서 유저들이 여러 컨테스트에서 제출한 최고점수의 합계를 출력하는 문제. 추가 조건(0이상인 것만 출력)을 걸어주어야 해서 좀 더 어려웠음. group by 를 여러번 해야 한다면 전체 select~ from 절을 하나의 table로 놓고, mysql에서는 as t 처럼 이름도 명명해주어야 오류가 나지 않는다. group by 를 쓴 상태에서 where... DatabasedbsqlDatabase Database_SQL_CRUD CRUD 테이블 생성 및 삭제 데이터베이스에서 테이블 생성 데이터베이스에서 테이블 제거 테이블 생성 실습해보기 다음과 같은 스키마를 가지고 있는 classmates 테이블을 만들고 스키마를 확인해보세요. column INSERT 테이블에 단일 행 삽입 모든 열에 데이터가 있는 경우 column을 명시하지 않아도됨 여러개 행 삽입 SELECT SELECT 문은 SQLite에서 가장 복잡한 문이... DatabasedbsqliteDatabase Database_SQL_Function 집계함수 값 집합에 대한 계산을 수행하고 단일 값을 반환 여러 행으로부터 하나의 결과값을 반환하는 함수 SELECT 구문에서만 사용됨 예시 테이블 전체 행 수를 구하는 COUNT(*) age 컬럼 전체 평균 값을 구하는 AVG(age) Overview of SQLite aggregate functions COUNT 그룹의 항목 수를 가져옴 AVG 모든 값의 평균을 계산 MAX 그룹에 있는 모... DatabasedbsqlitesqlDatabase Database_SQL_Function2 "query data based on pattern matching" 패턴 일치를 기반으로 데이터를 조회하는 방법 SQLite는 패턴 구성을 위한 2개의 wildcards를 제공 파일을 지정할 때, 구체적인 이름 대신에 여러 파일을 동시에 지정할 목적으로 사용하는 특수 기호 주로 특정한 패턴이 있는 문자열 혹은 파일을 찾거나, 긴 이름을 생략할 때 쓰임 텍스트 값에서 알 수 없는 문자를 사용... DatabasedbsqlitesqlDatabase MongoRepository를 통한 대량 데이터 삽입시 발생한 이슈 #3 이전에 20만개의 데이터 삽입 시의 문제점은 looping을 통해 진행되는 save가 데이터의 리스트 크기만큼 DB에 접근해 발생하는 네트워크 overhead 였습니다. 이를 해결하기 위해 매번 DB에 접근한게 아니라, Batch insert 방식으로 list로 한번에 저장해야겠다고 생각했고 그 방법은 saveAll 메서드를 이용하여 해결가능했습니다. 자세한 내용은 의 글을 통해 확인하시면 ... issueDSMPdbDSMP MongoRepository를 통한 대량 데이터 삽입시 발생한 이슈 #2 이전에 5만개의 데이터를 처리 했을 때의 문제점은 클라이언트에서 요청하는 save API의 횟수였습니다. 최종적으로, 데이터를 리스트로 받아 들여 5만개의 데이터를 한번의 API로 처리하는 방법으로 문제를 해결 할 수 있었습니다. 이번 글은 20만개 처리 시 발생한 문제를 기반으로 작성하겠습니다 ㅎㅎ 삽입되는 데이터의 갯수가 5만개에서 20만개로 늘어나면서 문제가 발생했습니다! 한번 더 지난... issueDSMPdbDSMP NestJS - 1. mongodb docker 환경 세팅하기 그러나 나는 프로젝트를 기본적으로 Docker에 올려서 하는 편인데, Nest로도 DB Docker랑 연결해서 초기 세팅을 해보고 싶었다... 그래서 검색해보는데, 자꾸 NestJS 프로젝트도 Docker에 올리는게 아닌가.. Dev 세팅은 간편하게 DB만 docker에 올려두고, 서버는 그냥 로컬에서 npm run start:dev로 띄우는게 내 목적이었다. 이렇게 docker-compos... dbNestJSdockermongoDBMSmongodbDB container 연결nestDB container 연결 상위 N건만 뽑아주세요 백엔드 개발자라면 여러 배치잡을 돌리게 된다. 그 중 가장 흔한 유형은 다음과 같을 것이다. 점수 기준으로 상위 4,000개의 게시물만 뽑아주세요! 점수가 같다면 먼저 생성된 걸 뽑아주실래요? 테이블의 스키마는 다음과 같다. 위와 같이 score를 대상으로는 인덱스가 잡혀있는 상황이다. 실제와 비슷한 값을 만들어주기 위해, 다음과 같이 DB를 준비하자. 실험을 위해 위 커맨드를 여러번 조건을... dbrubybatch jobrailsRuby on RailsPostgreSQLPostgreSQL