inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

EXPLAIN ANALYZE 수행 시 쿼리 실행 계획이 예상과 다릅니다.

해결됨

Real MySQL 시즌 1 - Part 1

먼저 강의 내용이 아닌 책내용을 질문하게 되서 죄송합니다. 하지만 여기 말고 질문할 곳이 마땅치 않아 부득이하게 이곳에 적게 되었습니다. 부디 사정을 봐주시길 부탁드립니다. Real MySQL 1권의 10.2 실행 계획 확인(415pg)에서는 EXPLAIN ANALYZE 실행 시 나타나는 결과에서는 다음과 같은 규칙이 적용된다고 설명되어 있습니다. 들여쓰기가 같은 레벨에서는 상단에 위치한 라인이 먼저 실행 들여쓰기가 다른 레벨에서는 가장 안쪽에 위치한 라인이 먼저 실행 이 말대로라면 아래 그림에서의 실행순서는 F, D, E, C, B, A 가 됩니다. 하지만 책에서는 실행순서가 D, F, E, C, B, A 로 된다고 적혀있습니다. 들여쓰기가 다른 레벨에서는 가장 안쪽에 위치한 라인이 먼저 실행된다고 하여 F 가 가장 먼저 실행될 줄 알았는데 D 부터 시작된다고 적혀있어서 혼동이 왔습니다. 혹시 왜 D 부터 시작하는지 설명을 부탁드릴 수 있을까요? 감사합니다.

  • mysql
  • dbms/rdbms
  • backend
  • query-tuning
  • mysql-query
bada.kang 댓글 1 좋아요 0 조회수 297

전체적인 헥사고날 아키텍쳐 설명

미해결

견고한 결제 시스템 구축

안녕하세요, 좋은 강의 감사합니다. 제공해 주신 코드를 분석해 보고있는데요, 구현한 헥사고날 아키텍쳐에 대한 다이어그램이나 설명이 있으면 이해하기 쉬울것 같은데 혹시 작성하신 게 있으실까요? 예를들어서, 이런 부분의 코드는 어디서 메시지를 가져오는지 intellij 로 검색해봐도 나오질 않아서요. package com.example.paymentservice2.payment.adapter.`in`.stream @Configuration @StreamAdapter class LedgerEventMessageHandler ( private val paymentCompleteUseCase: PaymentCompleteUseCase ) { @Bean fun ledger(): Function<Flux<Message<LedgerEventMessage>>, Mono<Void>> { return Function { flux -> flux.flatMap { message -> paymentCompleteUseCase.completePayment(message.payload) .then(Mono.defer { message.headers.get(KafkaHeaders.ACKNOWLEDGMENT, ReceiverOffset::class.java)!!.commit() }) }.then() } } } 그리고, adapter 내부의 in, out 폴더와 application 내부의 in, out 폴더의 차이점은 뭔가요?? P.S 수준 높은 코드라서 매우 좋습니다. 다른 강의도 이정도 수준이면 수강할 것 같습니다. 타강사님들의 강의는 쉬운것들이 많아서 경쟁력이 있으신것 같아요.

  • spring
  • spring-boot
  • dbms/rdbms
  • backend
  • payments
광전사 댓글 1 좋아요 0 조회수 308

팔로우 팔로우 취소

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

하나의 사람이 하나의 사람에게 팔로우할때 본인 스스로 팔로우 금지 A 라는 사람이 B 한테 팔로우 increment 가능 A 라는 사람이 B 한테 한번더 팔로우 요청 보내게 된다면 decrement 가 됨 으로 메서드 하나로 코드를 구성하는것은 어떤가요 ??

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
SJ 댓글 1 좋아요 0 조회수 126

Followers & Followees 프로퍼티 생성

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

강의 2:30 쯤에서 @ManyToMany(() => UserModels, (user) => user.followees) @JoinTable() followers: UserModel[]; @ManyToMany(() => UsersModel, (user) => user.followers) followees: UserModel[]; 위처럼 되어있는데요 . 혹시 @ManyToMany(() => UserModels, (user) => user.followers) @JoinTable() followers: UserModel[]; @ManyToMany(() => UsersModel, (user) => user.followees) followees: UserModel[]; 이렇게가 아닌가요 ??

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
SJ 댓글 2 좋아요 0 조회수 135

payment

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

안녕하세요 거의 강의 다 들어가는데요 ~ 추천해주셔서 아마 패스트캠퍼스에서도 뵙게 될것 같은데 결제에 대해서도 다뤄주시면 안될까요 ??

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
SJ 댓글 1 좋아요 0 조회수 118

주문, 결제 로직에 대해서 질문이 있습니다.

미해결

견고한 결제 시스템 구축

이커머스를 기반으로 가정하고 사용자의 결제가 진행되는 과정을 정리했을 때 다음과 같이 고려해볼 수 있을 것 같습니다. 단일 구매 혹은 장바구니를 통해 결제 페이지로 이동 결제 페이지에서 사용자가 필요한 데이터를 작성한 후 결제하기 버튼을 클릭 백엔드 서버는 해당 결제 요청으로부터 PSP에게 결제 진행을 요구하기 위해서 요청을 보내고 토큰과 같은 형태로 받아옴 토큰을 사용자에게 반환한 후 사용자가 결제를 진행 결제가 성공적으로 진행되었을 경우 백엔드 서버는 결제 승인 요청을 PSP로 전송 결제 승인 응답이 돌아오면 결제 완료 이커머스는 상품의 유효성 검증은 2번과 3번 모두 검증한다고 해도 재고 감소와 같은 로직 및 주문 번호를 생성하는 로직은 어느 시점에 두어야 될 지 고민이 됩니다. 재고 수량의 감소를 3번에서 진행하는 것으로 고려하고 있는데 이와 같은 경우 결제 페이지로 사용자가 결제에 필요한 데이터를 입력하고 재고가 부족하다는 입력을 받을 수 있어서 사용자 경험 측면에서 안좋을 수 있다고 생각이 되긴 합니다. 하지만 2번에서 진행할 경우 재고를 결제 페이지로 이동할 때 감소시켜야 하기 때문에 실제로 결제가 이루어지지 않을 수 있는 많은 상황이 있을 수 있기 때문에 이 또한 고려해야 되는 부분이라고 생각합니다. 어떤 시점에 재고를 감소시키는 것이 좋을지 의견을 듣고 싶습니다. 추가적인 질문으로 현재 강의에서 진행하고 있는 결제 이벤트를 DB에 반영하는 시점이 정확히 어떤 시점인지 헷갈립니다. NOT_STARTED 상태로 저장되는 시점이 결제 페이지로 이동하는 시점인지 아니면 결제 구매 버튼을 누른 시점인지 알려주시면 감사하겠습니다!

  • spring
  • spring-boot
  • dbms/rdbms
  • backend
  • payments
서정범 댓글 1 좋아요 0 조회수 330

주문 번호 생성 방식 관련 질문 있습니다

미해결

견고한 결제 시스템 구축

현재 주문 번호를 생성하는 방식은 결제 페이지로부터 들어오는 데이터들을 이용해서 그것을 String 형태로 변형해줌으로써 모든 요청들이 같은 형태의 String Key값을 가지게 되고 그것을 주문 번호로 사용하는 것으로 이해했습니다! 주문 번호의 경우 쿠팡이나 다른 이커머스사들을 확인해보면 숫자 혹은 거기에 문자정도로 생성되어 있고 결제 완료시 주문 번호를 확인해볼 수 있습니다. 이와 같은 방식으로 주문 번호를 생성하려면 위와 같은 방식이 아닌 별도의 로직을 통해서 주문 번호를 생성해야되며, 요청이 1번만 처리되기 위해서 Unique한 값으로 생성되어야 됩니다. 현재 제가 진행하고 있는 프로젝트에서는 결제 페이지로 사용자가 진입했을 때 주문 번호를 특정 로직을 통해 Unique한 값으로 생성해주고 DB를 확인하고 Redis에 기록하는 절차를 진행하여 멱등성을 보장하고 있습니다. 이와 같이 진행하다 보니 주문 번호를 생성하기 위해서 DB에 쿼리를 1회 이상 날리는 상황이 발생하게 되는데 이와 같이 진행하는 것은 안좋은 형태일까요?

  • spring
  • spring-boot
  • dbms/rdbms
  • backend
  • payments
서정범 댓글 1 좋아요 0 조회수 969

JPA 사용시 테이블수정에 궁금한점이있습니다

해결됨

Real MySQL 시즌 1 - Part 1

안녕하세요. 현재 JPA를 사용하고있는데 말씀해주신대로 varchar(255)를 기본 string 값으로 잡고있더라고요 이부분을 필요한만큼 테이블수정을 기하는것이 좋은 설계인것인가요? 아니면 jpa 기본권장스펙대로 가는게좋은건가요?

  • mysql
  • dbms/rdbms
  • backend
  • query-tuning
  • mysql-query
김준영 댓글 1 좋아요 0 조회수 252

복합인덱스 정렬

해결됨

Real MySQL 시즌 1 - Part 1

안녕하세요. 강의를 잘 듣고 있는 수강생입니다. 강의를 듣다가 좀 다른 결일 수도 있는 궁금증이 있습니다. 범위기반 데이터 조회에 아래 예시에서 order by finished_at, id 부분에서 finished_at이 범위검색 쿼리로 들어가는데 이런 경우 뒤에 있는 id는 인덱스를 타지 않는 것으로 알고 있습니다. 그럼 id로 범위 검색하려고 하면 finished_at으로 검색된 범위 안 전체 데이터를 전부 스캔하게 되나요? select * from payments where finished_at ≥ ‘시작날짜’ and finished_at < ‘종료날짜’ and id > 8 order by finished_at, id limit 30

  • mysql
  • dbms/rdbms
  • backend
  • query-tuning
  • mysql-query
kyungsook.ko0111 댓글 1 좋아요 0 조회수 228

Horizontal Scaling 이란?

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

백엔드를 이 강의로 처음 알아가고 있는데 . Horizontal Scaling 가 정확히 뭔지모르겠어요 설명해주시는 것중에서 Redis , in-memory 등 서버들이 같은정보를 바라보고서 사용자 정보를 우리가 판단 한다.. 이게 무슨말인지 아예 와닿질않아요 설명 해주실 수 있을까요

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
현민 댓글 1 좋아요 0 조회수 186

R2DBC 관련해서 질문 드립니다.

미해결

견고한 결제 시스템 구축

안녕하세요. 강의 잘 듣고 있습니다. R2DBC로 실습 환경을 구축해주셨는데요. R2DBC 이용하면서 DatabaseClient 를 이용해주셨는데요. 혹시 Jooq 를 이용안하신 이유가 있을까요? 그리고 실무에서도 DatabaseClient 를 이용하시는지 궁금합니다. 추가로 DatabaseClient 를 사용시에 동적 쿼리를 어떻게 작성을 해야 하는지 팁 주시면 감사하겠습니다! (where 절 고정이 아닌 특정값이 있을 경우에만 where절 생성 이라던지 ㅎ ) 감사합니다!

  • spring
  • spring-boot
  • dbms/rdbms
  • backend
  • payments
jimin.song3 댓글 3 좋아요 0 조회수 633

강의 계획이 궁금합니다

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

어디선가 next js강의도 준비 한다고 들었던거 같아서요. 맞나요!? 맞다면 언제 정도 출시되나요 그리고 nest js는 part2 는 언제 출시되는지 궁금합니다.

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
슈퍼아스라다 댓글 1 좋아요 0 조회수 263

LATERAL 키워드는 mysql8 에서 잘 지원 되나요?

해결됨

Real MySQL 시즌 1 - Part 1

제목 그대로 입니다. 저는 지금 11.4.2-MariaDB-ubu2404 버전을 사용 하고 있는데요.. lateral 키워드를 인식을 못합니다. 검색 해서 알아보니 마리아디비 및 mysql 에서는 lateral 키워드를 완벽히 지원 못한다는 내용이 있던데요.. 원래 PostgreSQL 에서 지원하는 기능 이었다고 하던데요.. mysql 8 강의에서 소개를 하고 있다면 사용 가능한 것 일텐데.. 저의 데이터베이스 세팅 등이 이상한 걸까요? mysql 8 버전으로 테스트를 해봐야 할까요? lateral 설명을 보니 많은 도움이 될 것 같아 꼭 사용 하고 싶은 기능인데.. 왜 안되는지 알 수가 없네요.. 왜 그럴까요?? SELECT e.emp_id, e.emp_name, l.recent_salary, l.salary_date FROM employees e LEFT JOIN LATERAL ( SELECT salary AS recent_salary, date AS salary_date FROM salary_history sh WHERE sh.emp_id = e.emp_id ORDER BY date DESC LIMIT 1 ) AS l ON TRUE; 하면 SQL Error [1064] [42000]: (conn=9) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '( 이런 에러가 생깁니다. LATERAL 을 인식 못하는 것 같습니다.

  • mysql
  • dbms/rdbms
  • backend
  • query-tuning
  • mysql-query
민경언 댓글 2 좋아요 0 조회수 310

로그인 페이지(프론트엔드) 작성하면서 OPTIONS 문제

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

코드팩토리님 안녕하세요. 강의를 보면서 만들었던 서버를 기반으로 로그인 인증페이지를 Next js를 통해 만들어보고 있습니다. const basicAuth = "Basic " + btoa(id + ":" + password); console.log(basicAuth); const response = await fetch("http://localhost:3000/auth/login/email", { method: "POST", headers: { Authorization: basicAuth, // Authorization 헤더에 인코딩된 정보를 추가합니다 }, }); const data = await response.json(); // 서버의 응답을 JSON 형식으로 받습니다 console.log(data); // 콘솔에 출력합니다 router.replace("/home"); } catch (err) { console.error(err); setMessage("아이디와 비밀번호가 일치하지 않습니다."); } 이렇게 코드를 만들어서 요청을 보냈더니 [REQ] OPTIONS /auth/login/email 8/23/2024, 10:39:20 PM 요렇게 요청이 POST 가 아니라 OPTIONS 로 뜨면서 동작이 안되더군요. 혹시 어떻게 처리해야할지 힌트를 주실수 있을까요

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
슈퍼아스라다 댓글 2 좋아요 0 조회수 210

패키지 관련 질문 입니다.

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

Nest js 패키지들은 어디서 설치하고 어디서 찾아 볼 수 있나요? Express 개발시에는 npm 사이트 검색 설치 및 사용 Nest도 npm에서 가능할까요?? @nestjs/ <<< 붙은 친구들은 사용 가능한건가요?? 주로 Nest에서 개발하면서 필요한 패키지들을 찾는 루트가 있을까요??

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
ajrfyd 댓글 1 좋아요 0 조회수 104

DB data 재활용 관련 질문

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

데이터 베이스를 사용하면서 궁금한점이 postgres-data폴더에 db관련 정보들이 저장되는것 같은데 entity의 변경과 같은 이유로 초기화를 해야 할때 초기화 후 기존에 저장했던 부분을 살릴 수 있는 방법이 없을까요?? (ex postgres-data폴더의 어떤 파일을 살려라 등)

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
ajrfyd 댓글 1 좋아요 0 조회수 137

payment 상태 업데이트 변경 메서드를 3개나 두는 이유가 궁금합니다.

미해결

견고한 결제 시스템 구축

강의 30분 40초에 보시면 success, failure, unknown 이렇게 상태를 변경하면서 메서드를 3개나 두시는데 이유가 궁금합니다. 만약 jpa나 querydsl을 사용한다면 코드가 달라질까요?

  • spring
  • spring-boot
  • dbms/rdbms
  • backend
  • payments
  • 수업질문
victor 댓글 2 좋아요 0 조회수 263

이미지 강좌를 듣고 생긴 궁금중입니다.

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

강사님이 알려주신 방식을 듣고 다양한 이미지 처리 방식을 공부하기 위하여 Presigned URL 방식을 구현중에 있습니다. 백엔드에 요청을 통해 발급받은 S3 url 주소에 PUT 요청으로 이미지를 업로드하고 있습니다. 이 떄, 일반적인 form-data 형식은 들어가지지 않는 것 같은데, binary 형태는 매우 잘 들어가집니다. 현업에서도 presigned-url을 활용할 떄 binary 형태로만 전달을 해야하나요, 아니면 다른 방식이 있는지 알고 싶어 식견을 구하고자, 질문드립니다!!

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
김용민 댓글 1 좋아요 0 조회수 167

deprecated exist

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

exist 메서드 deprecated 됐다고 exists 써야한다고 하네요 ㅎ

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
SJ 댓글 2 좋아요 0 조회수 132

섹션10 Column Property 정리하기에서 update

미해결

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

update 항목에서 true false 가 반대로 설명된 게 아닌지요? (화면 소스코드 코멘트) update 가 true 일 때 값을 변경 가능한 게 아닌지...

  • javascript
  • typescript
  • rest-api
  • nestjs
  • backend
Edwards 댓글 1 좋아요 1 조회수 183

인기 태그

인프런 TOP Writers

주간 인기글