inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

docker 마지막 실습(app(flask) + mysql) 연동 과정

해결됨

실리콘밸리 엔지니어와 함께하는 Docker

#compose.yml 파일 부분 수정 depends_on: -db compose를 실행하는 과정에서 db가 app보다 먼저 실행되긴 하지만 db 커넥션이 준비되기전에 app이 실행되어 오류가 발생합니다. depends_on: db: condition: service_healthy db의 healthcheck 결과를 실제로 체크해서, healthycheck가 끝날때까지 기다렸다가 app이 실행되기에 오류를 해결할 수 있었습니다. 수강생분들 참고하시면 좋을꺼 같습니다. 좋은 강의 감사드립니다. 화이팅입니다.!!

  • docker
  • container
  • mysql
  • db
ssung85 댓글 2 좋아요 1 조회수 63

커버링 인덱스에 대해서 질문드립니다.

미해결

실전! 데이터베이스 완전정복 [설계편]

안녕하세요. 강의 정말 잘 듣고 있습니다. 강의를 듣다가 커버링 인덱스(Covering Index) 관련해서 궁금한 점이 생겨 질문드립니다. 커버링 인덱스는 SELECT 문에서 조회하는 컬럼들이 모두 인덱스에 포함되어 있을 때 , 원본 테이블을 조회하지 않고 인덱스만으로 쿼리를 처리할 수 있는 방식 이라고 이해했습니다. 그렇다면, SELECT 에 포함된 컬럼들이 각각 단일 인덱스로 존재하는 경우에도 커버링 인덱스로 처리될 수 있는지 궁금합니다. 아니면 반드시 하나의 복합 인덱스(composite index) 로 묶여 있어야 커버링 인덱스로 동작하는 것인지 알고 싶습니다. 예를 들어, id 는 Primary Key 라서 자동으로 인덱스가 생성되어 있고 name 컬럼에 대해서도 검색을 위해 인덱스를 추가하려고 할 때 다음 두 방식 중 어떤 것이 더 적절한지 궁금합니다. name 컬럼에 단일 인덱스 를 생성 (id, name) 형태의 복합 인덱스 를 생성 이 경우 커버링 인덱스 관점에서 어떤 방식이 더 올바른 설계인지 설명해주시면 감사하겠습니다 :>

  • mysql
  • dbms/rdbms
  • database
  • modeling
  • db
dt10002 댓글 3 좋아요 0 조회수 181

인덱스 설계 시 컬럼 선택 기준

해결됨

실전! 데이터베이스 완전정복 [설계편]

안녕하세요. 강사님의 좋은 자료 덕분에 장고 강의에 이어 데이터베이스 설계 강의까지 함께하고 있는 수강생 입니다. 강의를 듣던 중, "22.선택도 / 3:51" 내용을 보고 의문점이 생겨 질문 남깁니다. 배경 선택도 값이 낮으면, 조건에 맞는 행이 적다 → 인덱스 효율이 증가한다. 선택도 값이 높으면, 조건에 맞는 행이 많다 → 인덱스 효율이 떨어진다. 라는 설명을 듣고, "중복이 적을수록 인덱스를 생성하면 더 효율적이겠구나" 라는 정보를 얻었습니다. 그 후, "어떤 컬럼을 선택해야 할까?" 장표에는 그중에서 선택성이 높은 컬럼 위주로 인덱스 생성 이 효율적이라고 설명과 더불어 자료를 보여주셔서 의문이 생겼습니다. 질문 Q. 선택성이 높으면 조건에 맞는 행이 많아 중복되는 행을 다시 스캔하여 필터링 하기 때문에 인덱스 사용에 비효율적이지 않을까요? 그럼 나머지 강의를 일단 수강하며 배움에 즐거움을 만끽하러 가보겠습니다. 감사합니다.

  • mysql
  • dbms/rdbms
  • database
  • modeling
  • db
  • 카카오공채-개발
제로콜라 함 즐길까 댓글 2 좋아요 0 조회수 146

데이터베이스 관련 질문

미해결

롱런하는 슈퍼 개발자가 되기 위한 필수 지식, IT 인프라 기초 총정리

안녕하세요! 데이터베이스 쪽 강의 들으면서 궁금한 부분이 있어 질문 남깁니다! 데이터베이스에는 크게 RDBMS 와 NoSQL 나뉠 수 있다고 했는데 그럼 둘 중에 하나를 선택할 때 기준이 있을까요? 답변 남겨주시면 감사하겠습니다!

  • database
  • 데이터베이스
  • db
00 댓글 2 좋아요 0 조회수 111

인덱스 사용 패턴 질문

해결됨

실전! 데이터베이스 완전정복 [설계편]

안녕하세요, 강의 중 궁금한 점이 생겨 질문드립니다. GROUP BY 사용 패턴3: 필터링 후 그룹화에서 WHERE status = 'paid' GROUP BY status ORDER BY status 처럼 동일한 컬럼을 사용하는 경우, 하나의 인덱스로 효율적으로 처리할 수 있다고 말씀하셨는데요. 이 경우 WHERE 절에서 status = 'paid' 로 필터링하면, 결과가 모두 동일한 status 값을 가지게 되어 GROUP BY나 ORDER BY를 추가해도 WHERE 절만 사용한 것과 결과가 동일하지 않을까요? 궁금한 점: WHERE, GROUP BY, ORDER BY에서 동일한 필드를 사용하는 실제 사용 사례가 있을까요?

  • mysql
  • dbms/rdbms
  • database
  • modeling
  • db
  • 카카오공채-개발
YS 댓글 2 좋아요 0 조회수 116

논리적 삭제 적용시 INDEX 생성 전략

해결됨

실전! 데이터베이스 완전정복 [설계편]

안녕하세요 논리적 삭제를 위한 컬럼 적용시 해당 테이블에서 조회할때 조회 조건에 항상 deleted_at 컬럼이 포함될거 같은데요 그러면 INDEX생성에 반영해주는게 좋을까요?

  • mysql
  • dbms/rdbms
  • database
  • modeling
  • db
  • 카카오공채-개발
Joe Hidden 댓글 2 좋아요 0 조회수 146

RDS 비밀번호 관리 방식 문의

미해결

AWS Certified Solutions Architect - Associate 자격증 준비하기

안녕하세요, 강사님. 항상 강의 잘 듣고 있습니다. RDS 구성 시 비밀번호 관리 방식을 자체 관리가 아닌 AWS Secrets Manager를 사용하는 방식 으로 선택할 경우, 비밀번호가 자동으로 생성되고 주기적으로 교체되기 때문에 관리가 편리하다는 장점이 있는 반면, 다음과 같은 의문이 생겼습니다: Secrets Manager에서 관리되는 비밀번호는 길고 복잡하며, 일정 주기로 교체되는데 이런 경우 팀원들에게 어떻게 공유하는 것이 일반적으로 권장되는 방식인지 궁금합니다. 교체될 때마다 비밀번호를 일일이 전달하는 것은 번거롭기 때문에, 팀원들이 IAM 권한을 통해 Secrets Manager에서 직접 비밀번호를 조회하게 할 수 있나요? 더불어, 팀 단위 운영 환경에서 자체 관리 방식과 Secrets Manager 중 어떤 방식이 실무적으로 더 적합한지 에 대해서도 의견을 주시면 감사하겠습니다. AWS Secrets Manager가 유료서비스이다보니,,관련하여 강사님의 경험이나 실무적인 조언을 듣고 싶어 이렇게 문의 드립니다. 바쁘시겠지만 확인해주시면 감사하겠습니다. 좋은 하루 되세요!

  • 네트워크
  • aws
  • rds
  • db
윤주영 댓글 2 좋아요 0 조회수 95

상태 변경 API 질문

미해결

토비의 스프링 6 - 이해와 원리

안녕하세요 토비님 강의 듣고나서 제 나름대로 API 서버 제작 연습을 좀 해보도가 JPA 및 도메인 상태 변경에 관련해서 질문 드리고 조언을 얻고자 문의 드립니다. 상황은 아래와 같습니다. DDD에 입각하여 Aggregator 가 하위 Entity Life Cycle 담당 Entity 식별자 타입 경우 Long Client 에서 변경 API 요청 시 Aggregator 의 식별자는 존재하지만, 하위 Entity 에 대한 id 는 포함하지않은채 요청 { id: AggregatorId name: AggregatorName list: [ { name: 'modified name1', type: 'type1', status: 'active' }, { name: 'modified name2', type: 'type2', status: 'inactive' }, { name: 'new name3', type: 'type3', status: 'active' } ] } id 가 없이 JPA 변경 요청 시 delete-insert 가 진행 될것 같아 자체적으로 key based diff 라는 함수를 제작하여 변경점과 신규 데이터에 대해서 병합 후 save() 를 호출 할 것같은데 이럴 경우 insert, update 문의 별도로 나가지 않을까 생각이 듭니다. 이런 경우 DB 입장에서 하나의 트랜잭션에서 수행하더라도 부하나 성능에 악영향을 미칠 것 같은데 이럴 경우 어떤식으로 애플리케이션 로직을 세우고 JPA 를 어떻게 활용해야되는지 조언 부탁드려도될까요? 참고로 저는 하위 Entity 변경 시 batchUpsert 를 고려하고 있습니다.

  • java
  • spring
  • jpa
  • db
  • ddd
김태형 댓글 2 좋아요 0 조회수 149

실행계획에서 드라이빙 테이블과 드리븐 테이블을 판단하는 기준

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 3-9 여기까지 이해하신 내용은 무엇인가요? MySQL에서 조인 연산을 수행할 때, 드라이빙 테이블과 드리븐 테이블로 구분되어 테이블의 각 행마다 연산이 진행되는 것으로 이해했습니다. 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? 회원별 주문통계 쿼리 수행 시, 참조되는 주문 테이블과 멤버 테이블 중 멤버 테이블이 드라이빙 테이블이며, 실행계획 결과에서 멤버 테이블이 먼저 나왔기 때문이라고 하셨는데, 언급하신 실행결과가 다이어그램인가요? 아니면 DESC 로 출력한 결과표인가요? 만약, DESC 로 출력한 결과표를 말씀하신거면 그림 상에서는 주문 테이블이 먼저 나와있고, 다이어그램으로 봤을 때는 테이블의 표시 순서가 보이지는 않는데, 어떠한 근거로 멤버 테이블이 드라이빙 테이블이라고 한건지 궁금합니다. 교안 내용 MySQL에서 두 테이블을 조인할 때 가장 기본적인 메커니즘은 Nested Loop Join 입니다. 드라이빙 테이블(outer table)에서 한 행씩 가져오고, 각 행마다 드리븐 테이블(inner table)을 인덱스 등을 이용해 조회하는 방식 으로 이루어집니다. 위 EXPLAIN 결과에서 m 테이블이 첫 번째로 표시되고, o 테이블이 두 번째로 표시되는 것은, m 이 외부(outer) 루프 테이블, o 가 내부(inner) 루프 테이블 이 된다는 의미입니다. 실행계획 결과 두 사진 모두 강의 교안에 있는 사진입니다.

  • mysql
  • db
cho766 댓글 3 좋아요 1 조회수 258

DB 분리 관련 질문 드립니다.

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

강의 보다가 h2로 order-service, user-serivce, catalog-service 각각의 서비스마다 db를 따로 쓰다가 동기화 문제 때문에 하나의 mariadb로 써야 된다는걸 봤는데요. 현업에서는 MSA에서 서비스 마다 다른 db를 쓴다고 알고 있는데, 왜 그렇게 하신건지 궁금해서 질문 남깁니다. 서비스가 작아서 그렇게 해도 된다는 걸까요? 그럼 현업에서는 어떤 방식으로 해결하나요 동기화 문제

  • spring-boot
  • jpa
  • 아키텍처
  • kafka
  • msa
  • db
  • 동기화
권동원 댓글 2 좋아요 0 조회수 391

Weather Observation Station 12 Oracle 쿼리문 질문 있습니다.

해결됨

[백문이불여일타] 데이터 분석을 위한 기초 SQL

인터프리터를 Oracle로 시도했을 때 쿼리문이 동작하지 않는 이유가 뭘까요?? MySQL에서는 Correct가 뜨는데 Oracle에서는 동작하지 않습니다. Chatgpt에 물어봐도 원인을 찾지 못했습니다. 고수님들 알려주세요!!

  • sql
  • oracle
  • db
isu 댓글 2 좋아요 1 조회수 242

스프링에서 @CreatedBy 와 AuditorAware 의 활용에 질문 드립니다!

미해결

@CreatedBy을 이용하면, 디비에 데이터가 입력될 때마다 작성자의 정보를 자동으로 기입할 수 있어서 많은 분들이 이용하시고 있습니다. 그리고 해당 @CreatedBy 값에 들어 갈 값은 AuditorAware을 통해 만들 수가 있는데요. <Q. 질문> 그러나 만일.. 아래와 같이 생성시 점에서 ID 값과 Name 을 입력해 주어야한 다면... AuditorAware를 어떻게 이용해서 아래의 내용을 기입할 수 있는지 알고계신 분 있으실까요? (@CreatedBy 가 특정 AuditorAware 파일을 지정할 수 있으면 될 것 같은데... 방법을 못찾았습니다 ㅠ) @CreatedBy private Long creatorId; @CreatedBy private Stirng creatorName;

  • 스프링부트
  • 스프링프레임워크
  • db
henry 댓글 1 좋아요 0 조회수 268

DB에 데이터 넣는 중간에 에러나면 되돌리는 장치같은건 없나요??

해결됨

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

안녕하세요. async create({ createProductInput, }: IProductsServiceCreate): Promise<Product> { const { productSaleslocation, ...product } = createProductInput; const result = await this.productsSaleslocationsService.create({ productSaleslocation, }); const result2 = this.productsRepository.save({ ...product, productSaleslocation: result, }); return result2; } 이번 강의를 보면 2개의 연관된 테이블에 데이터를 넣기 위해서 각각의 테이블에 데이터를 각각 넣어주는 2단계 구조라고 이해했습니다. saleslocation 테이블에 location 데이터 넣고 (1단계), 받아온 데이터(result)를 product 테이블에 product 데이터와 함께 넣는 (2단계), 이런 2단계의 구조로 이루어진것 같은데, 만약에 2단계에서 에러가 나게 되면 1단계에 넣었던 데이터를 삭제하거나 되돌리는 안전장치 같은건 없나요??

  • nestjs
  • db
춘몽 댓글 2 좋아요 0 조회수 243

Async와 Job방식의 차이가 궁금합니다.

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part9: MMO 컨텐츠 구현 (DB연동 + 대형 구조 + 라이브 준비)

이전 강의에서 PacketHandller 부분에서 Async를 사용하지 않고 Blocking 방식을 사용하는 이유가 EAP 기반이기 때문에 이미 패킷마다 할당된 쓰레드에 의해 I/O가 이루어지기 때문이라고 이해했습니다. 하지만 GameRoom같은 경우엔 GameRoom 담당 쓰레드가 존재하고 GameRoom 쓰레드의 동기화를 위해 JobSerialize를 이용하여 각 쓰레드가 GameRoom의 Job을 Push하여 동기화를 진행하는데 이때 Job 안에서 DB I/O가 Blocking으로 이루어질 경우 GameRoom 쓰레드가 Blocking이 되고 그렇게되면 GameRoom이 느려지는 상황이 되기때문에 DB I/O 전용 쓰레드(JobSerialize)를 만들어 쓰는것으로 이해했습니다. 결국 개념적으로 봤을때 GameRoom 쓰레드는 메인쓰레드 역할을 하고 DB I/O 처리는 서브쓰레드에게 맡기고 완료됐을때 결과만 다시 메인쓰레드에 돌려받는 NonBlocking I/O 방식인데 Async/Await 역시 호출한 쓰레드를 Blocking 하지 않고 서브쓰레드에게 I/O를 맡긴뒤 작업이 완료되면 메인쓰레드에 결과를 반환하여 Await 이후에 처리한다고 이해하고 있습니다. 그렇다면 복잡하게 DB I/O 전용 쓰레드를 만들어주지 않고 Async/Await만 사용해도 될것같은데 이렇게 하는 이유가 있을까요? 아니면 이후에 강의에 이에 대한 개선이 나오는걸까요?

  • MMORPG
  • db
  • ef
윈우 댓글 1 좋아요 0 조회수 320

데이터베이스 h2 실행

해결됨

안녕하세요? 현재 김영한 강사님의 스프링 입문강의를 수강중인 학생입니다. 데이터베이스 h2 다운받았고 강의에 따라 몇 번 실습해보고 컴퓨터를 부팅했습니다. 다시 데이터베이스 h2를 실행하는 방법이 무엇인가요??

  • db
  • 데이터베이스
  • 김영한
  • 스프링
  • 강의
  • h2
whdk333 댓글 1 좋아요 0 조회수 247

사용자가 기존 데이터 수정시에 null 구분 어떻게하시나요?

미해결

회원이 회원정보를 변경하였습니다. 변경된 데이터는 "자기소개" 부분이며, 값을 비워버렸습니다. 그럼 백엔드 입장에서는 아래 두가지 경우를 어떻게 구분할 수 있을까요? 이 경우 사용자가 값을 비운건지? 그게 아니면, 수정을 안해서 null 인 건지 제가 찾은 방법은 수정시에도 모든 컬럼 갑을 받아서 기존 DB의 로우 전체를 업데이트 시킨다. 사용자가 의도적으로 필드를 비워둔 경우 null 이 아닌, null을 의미하는 다른 대체 문자를 이용한다. - 이 경우 null 은 필드변경이 없는 경우 이외에 보편적으로 이용하는 방법이나 스마트한 방법이 있을까요...?

  • 스프링부트
  • db
  • jpa
henry 댓글 1 좋아요 0 조회수 380

ManyToOne 관계 설정 시 궁금한 점이 있습니다.

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

[질문 내용] 안녕하세요! 강의를 들으며 제 사이드 프로젝트의 데이터베이스를 설계하는 과정에서 궁금증이 생겨 질문드립니다. 저는 Content라는 엔티티 클래스를 만들고 이를 상속받는 Post, Comment 클래스를 만들었습니다. Content라는 부모 엔티티 클래스를 만든 이유는 내용을 담는 body라는 필드를 Post와 Content가 동일하게 가지기 때문입니다. 후에 프로젝트가 커지면 image, link등과 같은 여러 필드들이 Content에 추가될 예정입니다. 이때 Post는 title 필드를 추가적으로 가지고 있고 Comment를 여러 개 가질 수 있는데, 일반적인 상황에서 동일한 엔티티 클래스를 상속받은 클래스끼리도 이러한 ManyToOne 관계를 가지게 설계하는지 궁금합니다.

  • java
  • jpa
  • spring
  • db
  • 데이터베이스
윤산 댓글 1 좋아요 0 조회수 324

manses.sql DB Import 하는데 오류가 납니다.

미해결

지금 당장 NestJS 백엔드 개발 [사주 만세력]

saju-db-prod.sql import 는 정상적으로 되었는데, 이어서 manses.sql DB Import 하는데 오류가 납니다. ERROR 1062 (23000) at line 24: Duplicate entry '1' for key 'manses.PRIMARY'

  • nestjs
  • db
RGB코딩 댓글 1 좋아요 0 조회수 380

ServiceException: Unable to create requested service 뜨는 분들 보세요

미해결

재고시스템으로 알아보는 동시성이슈 해결방법

ServiceException: Unable to create requested service HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set 프로젝트 시작했는데 이런 에러 뜨시는 분들 해결책 공유 드립니다. 우선 첫번째로 Mysql 서버가 켜져있는지를 확인해봅니다. Workbench를 켜서 Mysql connect를 해주세요. 그래도 안 된다면, 두번째로 application.yaml에 아래처럼 코드를 추가해줍니다. 이처럼 database:mysql을 추가해줍니다. 이렇게 하면 대부분 해결되실겁니다. ps. 추가적으로 이후에 unknown database라는 주의 문구가 뜨는 분들은 해당 이름으로 database를 아직 만들지 않아서 그렇습니다. url에 들어가는 이름으로 mysql workbench에서 database를 만들어서 진행하세요.

  • java
  • spring
  • 동시성
  • db
  • mysql
bascat 댓글 1 좋아요 0 조회수 638

트랜잭션 사용 전 후 / 수동 오토 커밋

해결됨

스프링 DB 2편 - 데이터 접근 활용 기술

1. 이전 강의에서는 트랜잭션을 사용하지 않아 오토커밋이 되었고, 이번 강의에서는 트랜잭션을 사용해서 수동커밋이 된것으로 이해했는데 맞을까요? 2. 수동커밋이 맞다면, 수동 커밋이 되어서 롤백을 할 수 있는 건가요? 3. 이전 강의 까지는 트랜잭션을 사용하지 않고 DB 커넥션만 사용했다고 이해하면 되는 걸까요? 4. 제가 테스트 해보고 싶었던 것은 '스프링 DB 1편'에 있는 '트랜잭션 - DB 예제3 - 트랜잭션 실습'처럼 수동 커밋의 경우 한 세션에서는 데이터가 들어간것이 보이지만 다른 한 세션에서는 안 보이는 것을 테스트 해보고 싶었습니다. 그래서 랜잭션 롤백 부분 코드( transactionManager.rollback(status); )를 주석처리 하였고, H2 DB를 2개 띄웠습니다. 이 상태에서 save(), updateItem(), findItems()를 각각 실행해서 확인해 보면 두 세션 모두 데이터가 보이는 것을 확인할 수 있었습니다. 커밋을 안했고 롤백도 안했는데 둘다 데이터가 보이는 걸까요?

  • spring
  • db
lwisekiml 댓글 1 좋아요 0 조회수 750

인기 태그

인프런 TOP Writers

주간 인기글