안녕하세요, 강사님. 강의 잘 들었습니다. 감사합니다. jOOQ를 사용한 프로젝트에서 CI/CD 과정을 어떻게 자동화하는지 궁금하여 문의드립니다. CI/CD 서버와 데이터베이스를 연결하는 부분에서 보안 리스크가 큰 것 같은데, 실제 업무에서는 이 문제를 어떻게 해결하는지 알려주시면 감사하겠습니다. 아니면 자동 생성한 코드를 Git Repository에 함께 업로드해야 하는지 여쭙고 싶습니다. 이 경우 git commit이 깔끔해지지 않을 것 같아 걱정이 됩니다.
안녕하세요! MySQL에서 복합 인덱스의 순서 변경 이 쿼리 성능에 실질적으로 영향을 미치는지 테스트해 보고 있는데, 예상과는 다른 결과가 나와 도움을 요청드립니다. 테이블 구조 데이터가 저장된 테이블은 다음과 같습니다:(예시) CREATE TABLE orders ( group_id VARCHAR(10), -- 그룹 ID order_id VARCHAR(20), -- 주문 ID condition_id VARCHAR(20), -- 조건 ID contract_type VARCHAR(10), -- 계약 유형 status_code VARCHAR(10), -- 상태 코드 include_exclude_code VARCHAR(10) -- 포함/제외 코드 ); 데이터 분포는 다음과 같습니다: group_id 는 카디널리티가 낮음 (예: 값 종류가 'A', 'B' 등 소수 종류만 있음). order_id 와 condition_id 는 각각 고유값(유니크하거나 높은 카디널리티) 을 가집니다. 실험한 쿼리 복합 인덱스를 2개 생성한 후 아래의 쿼리를 실행했습니다: EXPLAIN ANALYZE SELECT order_id, include_exclude_code, group_id, contract_type, condition_id, null AS additional_condition, status_code FROM orders FORCE INDEX(ix_orders_01) -- 또는 ix_orders_02 WHERE condition_id = 'C100000001' AND group_id = 'A' AND order_id IN ( 'O20201016020421', 'O20250808368450', 'O20250808368492', 'O20250711342532', 'O20250711342535', 'O20240412709178' ); 생성한 인덱스 인덱스 1 : 데이터를 (group_id, order_id, condition_id) 순으로 정렬 CREATE INDEX ix_orders_01 ON orders (group_id, order_id, condition_id); 인덱스 2 : 데이터를 (condition_id, order_id, group_id) 순으로 정렬 CREATE INDEX ix_orders_02 ON orders (condition_id, order_id, group_id); 실행 결과 두 인덱스를 강제로 사용해서 실행한 결과, 실행 비용(cost) , 실제 실행 시간(actual time) , 그리고 사용된 인덱스 조건 에서 모두 차이를 보이지 않았습니다. 실행 계획 결과 (인덱스 1과 2 공통) : 인덱스 조건 : (condition_id = 'C100000001' AND order_id IN (...) AND group_id = 'A') 실행 비용(cost): 15.41 rows=22 실제 실행 시간(actual time): 0.054~0.058초 질문 두 인덱스가 서로 다른 순서로 설정되었는데, 실행 결과가 동일한 이유가 무엇인가요? 이런 경우 복합 인덱스의 순서가 실제 성능에 영향을 주지 않는다고 판단해도 될까요? 추가로 고려해야 할 사항이 있다면 조언 부탁드립니다!
김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 윈도우 - MySQL 설치 안내를 보고 따라 설치를 하는데 Type and Netwroking 화면에서 Next버튼이 활성화가 되어야 하는데 되어있지 않아요. 버튼 클릭이 안됩니다. 그래서 진행이 안됩니다. 도와주세요 help me
질문에서 greater than, less than 등과 같은 비교연산자로 나타내는 표현들을 보고 이하, 이상, 미만, 초과 구분이 궁금합니다. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
SELECT TIMESTAMP(DATETIME(CURRENT_TIMESTAMP(), 'Asia/Seoul')), CURRENT_TIMESTAMP() 위와 같이 쿼리를 실행시키면 2025-08-12 02:15:03.434744 UTC 2025-08-11 17:15:03.434744 UTC 아래와 같이 출력됩니다. 저는 이를 보고 TIMESTAMP 값이 서울 시간대로 설정이 되어 있더라도 그게 출력 결과물만 보고는 판단할 수 없는건가? 라는 생각을 하게 됐습니다. 위와 같이 어느 지역의 시간대가 반영됐는지가 timestamp값에 UTC+9와 같은 방식으로 반영되있지 않다면 어떻게 저희가 그걸 판단할 수 있나요? train_pokemon 테이블의 catch_datetime 변수(필드)도 서울 시간대(UTC+9)인지, UTC+0인 시간대인지 판단할 수 없는 거 아닌가요? 감사합니다.
is_active는 0/1의 두 개의 값만 존재하기 떄문에 카디널리티값이 상대적으로 낮은데요,, 그렇다면 단독으로 인덱스 사용시 그 이점을 크게 누리기 어렵다고 보면 되나요? 그렇다면 문제와 풀이처럼 복합 인덱스에서는 사용되는데 여러 컬럼을 복합 인덱스로 사용될 땐 효과가 극대화 된다고 보면 되나요? (0/1의 값 정렬 유무가 후위 컬럼 값 정렬에 영향을 미침)
김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
안녕하세요. 김영한 선생님! 자바에서부터 DB 까지 정말 훌륭한 과목들을 개설해주셔서 정말 감사합니다. 저는 학교에서 배우는 DB 예습용으로 배우고 싶은 마음이 큰데, 영한 선생님께서 입문편, 기본편에서 다루는 내용들이 아래에 있는 내용들을 상당 부분 커버가 가능한지 여쭤보고 싶습니다. 바쁘실텐데 시간내어 댓글을 작성해주셔서 감사드려요. 데이터베이스의 기초 및 관계형 데이터베이스 (Foundational concepts) 데이터베이스 시스템이 무엇인지, 데이터베이스를 효과적으로 설계하는 방법 데이터 모델, 관계형 모델, 관계형 데이터베이스 및 애플리케이션, 스키마, 정규화 등 엔티티-관계 모델링 (Entity-Relationship Modeling) 관계형 데이터베이스의 논리적 설계 (Logical design) 관계형 대수 (Relational Algebra) 데이터베이스 보안 데이터베이스 관리 시스템의 아키텍처 및 구현 (Database management system architecture and implementation) 데이터베이스 관리 시스템의 소프트웨어 아키텍처, 알고리즘 및 구현 기술 메모리 계층, 저장 시스템, 캐싱/버퍼 풀, 인덱스, 쿼리 처리, 쿼리 최적화 트랜잭션 처리, 격리 및 동시성 제어 데이터베이스 질의 및 애플리케이션 개발 데이터베이스를 쿼리하는 방법 (SQL) 데이터베이스 애플리케이션을 개발하는 방법 쿼리 최적화 및 트랜잭션 처리 개요 다양한 데이터베이스 유형 및 데이터 처리 (NoSQL – “Not Only SQL” databases & Data Enabled Decision Support) NoSQL 데이터베이스 : "NoSQL" 데이터 모델과 데이터베이스의 필요성, 예시 및 사용 사례 클라우드 데이터베이스 및 DaaS (Databases-as-a-service) 데이터 기반 의사결정 지원 : 데이터 웨어하우스, 데이터 가져오기 및 정제 (data import and cleanse), OLAP, 피벗 테이블, 스타 스키마, 보고 및 시각화 클러스터링, 분류, 분석, 마이닝 등 분석 기법 개요
비식별자 관계, 약한 식별자 관계, 강한 식별자 관계의 개념이 헷갈려서 질문드려요ㅠㅠ 비식별자와 식별자의 차이는 이해가 가는데.. 약한/강한은 어떻게 구분 하면 좋을까요? 그리고 예를 들어서 ex) 주문 상세 엔터티는 강한 식별자 관계로 구성되어있다. -> 이 말은 주문상세 엔터티의 기본키 중 하나라도 부모엔터티의 PK를 상속받아 사용하는 관계면 강한 식별자라고 하면 되는걸까요?
[질문 내용] 저는 FK에서 PK로 조인하고 id로 찾았는데, PK에서 FK를 조인한 후 name으로 찾는 것과의 차이를 모르겠습니다. 자식 입장에서는 PK가 하나이기 때문에 한 행이고, 부모에서 FK를 볼 땐 여러 개일 수도 있으니 여러 행일 수 있다는 것은 이해했지만 이 경우에는 어떤 차이점이 있는지, 안좋은 방식인지, 틀린 건지 궁금합니다.
김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요! DML-등록 강의 듣고 있는 중입니다. 선생님이 입력한시대로 동일하게 입력했는데, 첨부한 화면 보시면 이순신이 들어간 서울시 관악구에는 활성화가 되지 않아(?) 계속 오류가 뜹니다 무엇이 문제일까요ㅠㅠ
김영한의 실전 데이터베이스 입문 - 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] AI가 개발자를 대체한다는 요즘에 개발자 취준생은 어떻게 취업 준비를 하면 좋을까요 ? ㅠㅠ
Kotlin, Groovy gradle, PostrgreSQL 기반으로 프로젝트 세팅이 되어 있습니다 @Repository class ActorRepository( private val dsl: DSLContext, configuration: Configuration ) { private val actorDao = ActorDao(configuration) companion object { private val ACTOR = JActor.ACTOR } fun save(actor: Actor): Unit = actorDao.insert(actor) } 이러한 방식으로 Repository 가 구현되어 있을 때, @SpringBootTest class ActorRepositoryTest( private val actorRepository: ActorRepository, ): StringSpec({ "insert test" { val actor = Actor().apply { firstName = "John" lastName = "Doe" } println("Actor before insert: $actor") val insertedActor = actorRepository.save(actor) } }) { override fun extensions() = listOf(SpringExtension) } 위 쿼리가 실행됩니다 제가 예상했던 insert into "actor" ("first_name", "last_name") values(?, ?) 과는 다르게 id 값이 0으로 고정되어 생성되더라구요 generate dao 를 생성하는 방법이 잘못된 걸까요?
안녕하세요 조인실습03 - 8:25에서 join 관련 질문입니다. [ 이해한 내용 ] - shippers의 shipper_id - orders의 ship_via 컬럼명만 다를 뿐, shipper_id가 pk컬럼인데, orders에서 fk로 만들 때 ship_via로 만든 것이다. 그래서 두 컬럼이 조인된다. [ 궁금한 사항 ] 두 컬럼이 PK - FK 관계라는 판단 근거가 어떻게 되나요? Dbeaver에서 이를 쉽게 확인할 수 있나요? 제가 수강한 진도까지는 이러한 내용이 나오지 않고 ERD를 봐도 모르겠어서 질문드립니다.