[SQL] 기본 문법 정리
2023. 6. 23. 16:32
SQL
데이터 만들기 📌DROP DROP DATABASE IF EXISTS a_db db 삭제 📌CREATE CREATE DATABASE a_db db 생성 ex) market_db에 member 테이블을 생성해보자 USE market db --market_db선택 CREATE TABLE member (mem_id CHAR(8) NOT NULL PRIMARY KEY, --회원아이디(PK) mem_name VERCHAR(10) NOT NULL, --이름 mem_number INT NOT NULL, addr CHAR(2) NOT NULL, --주소(경기,서울,경남..) debtt_date DATE --데뷔일자 ); 테이블 생성 📌INSERT 데이터 입력 INSERT INTO member VALUES('TWS','트..
NoSQL과 RDBMS의 차이
2023. 6. 21. 14:20
etc
NoSQL과 RDBMS의 차이 DB 어플리케이션으로 RDBMS(Relational DataBase Management System)이 널리 쓰이고 있지만, 대용량 데이터 저장, 비정형 데이터 저장, 빠른 응답시간 등의 새로운 요구사항에 기존 RDBMS만으론 대응하기 어려울 때가 있다. 그래서 RDBMS와 차별적인 데이터베이스 관리 툴인 NoSql이 등장했다. 📌RDBMS vs. NoSQL RDBMS -> 2차원의 행과 열로 데이터의 관계를 관리하는 데이터베이스(테이블) 장점 : 스키마에 맞추어 데이터를 관리하기 때문에 데이터의 정합성(어떤 데이터들이 값이 서로 일치하는 상태)을 보장 단점 : 시스템이 커질수록 쿼리가 복잡해지고 성능이 저하되며, 수평적 확장이 어렵다. NoSQL ->RDBMS가 비대해짐에..
Redis란
2023. 6. 19. 19:15
etc
Redis Redis(Remote Dictionary Server)는 가장 인기있는 Key-value Store 중 하나이다. 데이터 저장소하면 보통 MySQL이나 PostgreSQL, MariaDB, Oracle 같은 RDBMS를 많이 떠올릴텐데 이러한 RDBMS와 달리 Redis는 NoSQL이다. 이 둘의 차이는 무엇일까? 다음 포스팅에 자세히 적어놓았다. https://develoyummer.tistory.com/99 NoSQL과 RDBMS의 차이 NoSQL과 RDBMS의 차이 DB 어플리케이션으로 RDBMS(Relational DataBase Management System)이 널리 쓰이고 있지만, 대용량 데이터 저장, 비정형 데이터 저장, 빠른 응답시간 등의 새로운 요구사항에 기존 RDBMS만으..
[SQL] inner join/ outer join/ left join/ right join
2023. 6. 16. 14:10
SQL
INNER JOIN => 교집합 select * from A inner join B on A.id = B.id select * froma A,B A.id = B.id 결과 => A 테이블과 B 테이블이 모두 가지고 있는 데이터만 검색! OUTER JOIN(FULL/LEFT/RIGHT) FULL OUTER JOIN => 합집합 (MySQL에는 없음 다만 LEFT JOIN과 RIGHT JOIN을 UNION으로 묶어 사용할 수는 있) LEFT OUTER JOIN => 왼쪽을 기준으로 JOIN select * from A LEFT OUTER JOIN B ON (A.id = B.id) 결과 => 왼쪽 테이블인 A의 모든 데이터 + A,B의 중복데이터 검색 A테이블의 한개의 레코드에 여러개의 B테이블 레코드가 일치..
[프로젝트]토스페이 연동하기 2
2023. 6. 12. 15:30
Spring
yataproject의 토스 페이먼트API 연동로직 중 결제취소와 결제 내역 조회를 살펴볼 것이다. 📌결제 취소 먼저 결제를 취소하려면 결제 승인 시 발급받은 paymentKey와 cancelReason이 필요하다. 또, 성공/실패 시와 같이 헤더에 시크릿 키를 인코딩하여 보내야한다. Controller @PostMapping("/toss/cancel/point") public ResponseEntity tossPaymentCancelPoint( @AuthenticationPrincipal User principal, @RequestParam String paymentKey, @RequestParam String cancelReason ) { return ResponseEntity.ok().body(ne..
백준7576 토마토
2023. 6. 11. 23:11
Algorithm
처음엔 dfs를 이용해 풀어보려고 했으나 실패했다. bfs를 이용해 익은 토마토가 들어있는(1) 좌표를 q에 넣어주고, 상하좌우에 있는 토마토 중 안익은(0) 토마토가 들어있는 좌표가 있으면 익은 토마토 일수에서 1을 더해준다 즉 depth가 1 깊어질 때마다 1을 추가해 주는 것이다. 이렇게 하면 일수를 계산 가능하다. 그 후 countDay메서드를 통해 가장 깊은 depth를 cnt에 담아주고 depth는 1에서 시작했는데 일수는 0에서부터 시작했으니 날짜를 계산할 때는 1을 빼준다. 최종적으로 checkTomato메서드를 통해 안익은 토마토가 있으면 -1을 출력하고 그렇지 않으면 모든 토마토가 있은것이므로 cnt를 출력한다. import java.io.BufferedReader; import jav..
[프로젝트]토스페이 연동하기 1
2023. 6. 9. 20:44
카테고리 없음
yataProject에서 포인트 충전 방식을 도입하기로 결정하였고, 토스페이를 연동하기로 하였다. 토스페이 동작 과정은 다음과 같다. https://develoyummer.tistory.com/93 토스페이 API 연동 https://docs.tosspayments.com/guides/payment/integration 토스페이먼츠 결제창 연동하기 | 토스페이먼츠 개발자센터 카드 결제창을 연동해보세요. docs.tosspayments.com 프론트가 사용자가 입력한 정보를 가지고 [ develoyummer.tistory.com 연동에 앞서 , 토스페이먼츠에 가입 후, 개발자용 테스트상점에서 API 키를 받을 수 있다. 📌설정 appliaction.yml에 정보들을 적어준 후, TossPaymentConf..
토스페이 API 연동
2023. 6. 9. 17:13
Spring
https://docs.tosspayments.com/guides/payment/integration 토스페이먼츠 결제창 연동하기 | 토스페이먼츠 개발자센터 카드 결제창을 연동해보세요. docs.tosspayments.com 프론트가 사용자가 입력한 정보를 가지고 [결제하기] 버튼을 통해 백엔드의 결제 요청 API를 호출 백엔드가 해당 [요청 객체]를 가지고 검증 후 필요한 값들을 채워주고 DB에 결제 정보 저장 후 반환 프론트가 반환받은 값을 가지고 이어서 tossPayments.requestPayment('카드',{결제 정보 파라미터})를 통해 토스페이먼츠에 [결제창 호출]을 하게 함 결제창에서 구매자는 일련의 절차 후 최종적으로 결제 완료. 이 후, 토스페이먼츠는 결제의 성공 여부 및 관련 파라미터..
[프로젝트] 카테시안 곱 문제의 발생과 해결
2023. 6. 7. 19:52
Spring
N+1 문제를 해결하기 위해서 fetchJoin을 사용하여 해결해 주는 과정에서 yata와 연결된 yatamember 중 수락된 yatamember를 계산해서 보여줄 필요가 있었는데 수가 비정상적으로 많게 나오는 문제가 발생하였다. @OneToMany의 경우 카테시안 곱 문제나 여러개의 fetchJoin을 사용할 경우 발생하는 MultipleBagFetchException을 고려해줘야한다. 카테시안 곱 발생가능한 모든 경우의 수의 행이 조회되는 것 즉, N 개의 행을 갖진 테이블과 M개의 행을 가진 테이블의 카타시안 곱은 N * M이 되는 것 한번의 쿼리로 yataMember를 조회할 때 관련되어 있는 yata까지 한번에 조회할 수 있다. fetchType이 Lazy로 설정되어있어도 fetchJoin이 ..