묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 데이터베이스 - 기본편
where 대신 having을 써도 되나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]select * from products p1where price >= (select avg(p2.price) from products p2 where p2.category = p1.category);대신에select name,price from products p1where price >= (select avg(p2.price) from products p2group by categoryhaving p1.category=p2.category);으로 써도 문제 없나요?
-
해결됨10,000++억의 데이터를 다루는 카카오 면접관의 MySQL
21강에서 이해하기 어려운 부분들이 있습니다!
안녕하세요 Hong님! 21강 '데이터 모델링 : 수많은 yes or no 속성 디자인 정의와 논리 모델' 을 듣는 와중에 이해하기 어려운 부분들이 있어 질문드리고 싶습니다!Boolean 속성이 늘어날 때의 문제들21강에서 yes or no 속성이 늘어나는 것이 근본적인 아키텍처 관점에서의 문제점, ALTER 로 스키마를 변경하는 작업이 필요하다는 것, Boolean 타입으로 표현할 수 있는 정보의 한계, I/O 비용의 증가를 만들어낸다고 설명해주셨는데요!근본적인 아키텍처에 어떤 문제점이 생기는지, 잘 모르겠습니다.ALTER로 스키마를 변경하는 것으로 문제가 야기되는 부분이 정확히 어떤 부분이라고 생각하시는지 궁금합니다. 이미 많은 레코드가 있는 테이블의 스키마를 변경함으로써 생겨나는 I/O 부하를 생각하시는 걸까요?I/O 비용의 증가가 발생한다는 부분은 2번에서의 비용 증가를 말씀해주신 걸까요? SELECT 비용 증가라면 사실 저장해야 하는 정보가 늘어나면서 자연스러운게 아닌가 싶은데 어떤 관점에서의 문제를 짚어주신 건지 궁금합니다.논리 모델과 물리 모델논리 모델과 물리 모델을 분리시키는 것이 기본적인 데이터베이스의 설계 원칙이라는 설명을 해주셨는데요! 그 뒤의 설명이 물리 모델 설계 방법들이고 해당 원칙을 어떻게 적용해야 할지에 대한 가이드는 없어서 해당 원칙을 언급해주시고 넘어가셨던 이유가 궁금합니다. 논리 모델과 물리 모델을 분리시키는 건 One Table per Anchor, Side Table, EAV 세 가지 기법이 있다고 설명해주시려는 의도였던 걸까요? 이어지는 설명에서 혼동이 와서 설명을 어떻게 정리하여 이해해야 하는지 파악이 어렵습니다 ㅠ 항상 질문에 좋은 답변을 주시기 위해 노력하시는 Hong님 감사합니다 :)
-
미해결김영한의 실전 데이터베이스 - 기본편
주문 내역에 대한 고객 데이터
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/[질문 내용] 강사님께서 주문 내역에 대한 데이터면 이제 주문(orders) 테이블을 기준으로 하는것이 좋겠다 정도는 이제 느낌이 올거에요 라고 하셨는데 전혀 느낌이 오지않아서 흑흑... 제가 생각하기엔 ~에 대한 [고객 데이터]이니까 users가 주인공이여서 그걸 기준으로 잡는다고 생각했는데요~ 에 대한일때 ~물결표시있는 부분을 기준으로 잡아야하나요?
-
해결됨SQL 코딩테스트를 위한 첫 걸음
문제 링크 변경
2번째 문제 링크가 변경된 듯 해요https://leetcode.com/problems/classes-with-at-least-5-students/
-
미해결김영한의 실전 데이터베이스 - 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴
history_creted_at과 valid_from
안녕하세요,강의에서 valid_from과 valid_to를 사용하는 경우 history_created_at이 빠져있는데이게 개념적으로는 같아서 제거가 된 게 맞는지 궁금합니다!
-
미해결김영한의 실전 데이터베이스 - 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴
함수 기반 인덱스 (Function-Based Index)
안녕하세요 영한님!!항상 좋은 강의 만들어주셔서 감사합니다!함수 기반 인덱스 생성에서 질문이 있어서 글을 남깁니다! 강의를 들으면서 함수 기반 인덱스를 생성하면 가상 컬럼이 없고, 인덱스만 만들어진다고 이해했습니다.그래서 product_json 테이블에 만들어진 가상 컬럼과 idx_v_storage 인덱스를 drop한 다음 각각 두가지 방식으로 테스트를 해보았는데요 CREATE INDEX idx_func_storage ON product_json (( CAST(attributes->'$.storage' AS UNSIGNED)));EXPLAIN SELECT * FROM product_json WHERE attributes->'$.storage' = 256; 이렇게 할 경우엔idx_func_storage 인덱스를 잘 타는 걸로 나왔지만,CREATE INDEX idx_func_storage ON product_json ((JSON_VALUE(attributes, '$.storage' RETURNING UNSIGNED)));EXPLAIN SELECT * FROM product_json WHERE attributes->'$.storage' = 256; 이 경우에는 FULL TABLE SCAN 이 되고, 인덱스도 NULL로 나왔습니다. 두 방식 모두 각각 idx_func_storage 인덱스는 잘 생성이 되었는데도 JSON_VALUE() 방식에서는 인덱스를 사용하지않았습니다그래서 AI에게 물어보니MySQL functional index는 WHERE절의 표현식이 인덱스 정의와 문자 수준으로 동일해야 한다.이유는 가상 컬럼 방식에서는 MySQL이 내부적으로 expression rewrite 과 virtual column substitution를 더 적극 수행하지만 functional index는 표현식 exact match 요구가 훨씬 엄격하기 때문이다.CREATE INDEX idx_func_storage ON product_json ((CAST(attributes->'$.storage' AS UNSIGNED))); 이렇게 인덱스를 생성했다면EXPLAIN SELECT *FROM product_json WHERE CAST(attributes->'$.storage' AS UNSIGNED) = 256; 이렇게 WHERE 절을 작성해야 하고CREATE INDEX idx_func_storage ON product_json ((JSON_VALUE(attributes, '$.storage' RETURNING UNSIGNED)));이렇게 인덱스를 생성했다면EXPLAIN SELECT * FROM product_json WHERE JSON_VALUE(attributes, '$.storage' RETURNING UNSIGNED) = 256이렇게 WHERE 절을 작성해야 한다고 답변해주었는데요!이렇게 각각 테스트 해보면, 인덱스를 잘 타는 것으로 나옵니다..!또한 CAST()로 인덱스를 생성한 경우 WHERE절에 JSON_VALUE()를 사용한 쿼리는 Index를 사용하지않고, FULL TABLE SCAN을 했으며,JSON_VALUE()로 인덱스를 생성한 경우 WHERE절에 JSON_VALUE()를 사용했을 경우에만 Index를 사용했습니다.제 테스트에서는 CAST() 기반 인덱스는WHERE절 축약 표현식에서도 인덱스를 사용하였고, WHERE절 JSON_VALUE()는 인덱스를 사용하지 않았습니다.JSON_VALUE() 기반 인덱스에서는 WHERE절에 동일한 JSON_VALUE() 표현식을 사용했을 경우에만 인덱스를 사용하는 것으로 보였습니다이게 맞는 걸까요? 아니면 제가 잘못 확인한 걸까요?, 또한 functional index 매칭 규칙 실제 범위가 어디까지 인지? AI가 답변해준 동작 방식이 맞는 건지도 여쭤보고 싶습니다! (제 MySQL버전이 8.0.41이네요,,)영상을 다시 잘 보니, 2:18 분에 idx_func_storage 인덱스를 CAST() 구문으로 생성하시고, 2:25분에 확인하실 때, EXPLAIN의 결과에서 idx_v_storage인덱스가 나오긴 합니다!
-
미해결비전공자도 이해할 수 있는 DB 설계 입문/실전
강사님도 실제로 구글 시트에 이런식으로 적으면서하는걸까요?!
뭔가 머리속으로만 하기엔 너무 헷갈려서 적으면서하려고하는데 강사님도 실제로 저렇게 스프레드시트에 적어가면서 하는지 궁금합니다 ! 그리고 완성된 스키마들을 스프레드시트같은곳에 보통 타입이랑 컬럼명 정리해서 적어놓는편이실까요?!
-
미해결SQL 코딩테스트를 위한 첫 걸음
SQL 파일 다운로드
안녕하세요!MySQL 설치 및 연동 - 4:37 에 말씀해주신 인프런에 첨부된 SQL 파일을 찾을 수가 없습니다...해당 강의 자료를 다운 받아도 pdf 파일만 다운로드 됩니다.혹시 다운로드 위치를 알려주실 수 있을까요?감사합니다 강의 잘 듣겠습니다!
-
미해결김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복
comment 채번을 사용해야 하는 이유에 대한 설명이 필요합니다.
안녕하세요. 식별 vs 비셕별에 대한 db 설계 관련 내용 중에 영한님께서 일대다의 경우인 board 테이블(one)과 comment(many)에서 board 테이블의 id가 식별관계로 사용되는 경우 comment의 id는 채번을 따서 사용해야하고 시퀀스나 auto increment를 사용할 수 없다고 하셨는데 그 이유가 궁금합니다. 어쨋든 board 테이블의 id값은 row마다 존재하기에 각 comment row의 데이터가 어떤 board에 속하는지 그리고 순서도 asc 순으로 보장된다고 생각하는데요..꼭 채번을 사용해서 만들어야한다고 설명해주신 이유가 무엇인지 궁금합니다.더구나 max+1 같은 경우 comment의 id값이 중복될 여지도 있다고 생각하는데요..설명해주시면 감사하겠습니다.
-
미해결김영한의 실전 데이터베이스 - 설계 2편, 실무에서 반드시 마주치는 9가지 설계 패턴
추후 강의 질문있습니다
안녕하세요! 늦었지만 새해복 많이받으세요! 신입때 영한님 강의 봤었는데 벌써 6년차에 접어들고 있습니다..!다름이 아니라 최근 실무에서 레거시 코드를 개선하면서 고민을 많이 하고 있는데요주변에 시니어분들이 있으나 아키텍처에 대해서 크게 고민하고 있지 않아 제가 고민 후 적용해보고 있습니다.예를 들어 레이어드 아키텍처로 구현되어 있는 프로젝트가 있으나 규모가 커지면서 점점 유지보수가 힘든 지경까지 왔는데요(메서드 하나에 1천 줄... 이상)이런 상황에서 DDD 아키텍처를 이용해서 코드를 작성해보고 있습니다. 하지만 아무래도 혼자 공부하고 혼자 해보다보니 이게 맞는건지 제대로 하는건지 궁금한 부분이 꽤나 많습니다.그래서 질문은 향후 아키텍처에 관련된 강의 계획이 있으신지 너무 궁금합니다...!!클린아키텍처, 핵사고널, DDD 다양한 방법과 적용된 프로젝트가 많은데 이런 강의도 하실 예정이신지.. 없으시다면 꼭 해주셨으면 합니다!! 아무튼 강의 계속 보면서 많은 도움 받고 있습니다 감사합니다!!다시 한번 새해 복 많이 받으세요!
-
해결됨데이터 분석을 위한 SQL 문제풀이 (Advent of SQL 2024)
[Day23] 정답 데이터와 동일함에도 오답 처리됩니다.
안녕하세요. solvesql을 통해 "유량(Flow)과 저량(Stock)" 문제를 접하게 된 사용자입니다.다름이 아니라, 현재 정답 데이터와 제출 데이터가 동일함에도 불구하고 아래와 같이 오답 처리되는 현상이 발생하고 있습니다.인터넷에서 찾은 다른 사람들의 코드와 제 코드 사이의 차이도 크게 보이지 않는 상황입니다.해당 현상 한 번 검토 부탁 드리겠습니다.참고로 제 코드와 오답 메세지 첨부 드립니다. [ 코드(MySQL) ]SELECT Ay AS "Acquisition year" , Flow AS "New acquisitions this year (Flow)" , SUM(Flow) OVER (ORDER BY Ay) AS "Total collection size (Stock)" FROM ( SELECT DATE_FORMAT(acquisition_date, '%Y') AS Ay , COUNT(artwork_id) AS Flow FROM artworks WHERE acquisition_date IS NOT NULL GROUP BY DATE_FORMAT(acquisition_date, '%Y') ) A ORDER BY 1; [ 오답 메세지 ] 감사합니다.
-
미해결6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
네임드 락 사용 시 커넥션 풀을 분리하는 방법에 대한 질문
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 4-10 2. 어려움을 겪는 부분강의 끝 부분에서 네임드 락을 위한 커넥션과 일반 트랜잭션을 처리하는 커넥션을 분리시켜서 중요한 트랜잭션 처리에 영향을 주지 않는 방법을 말씀해주셨습니다.제가 기술면접을 보면서 서킷 브레이커라는 내용을 접하게 되었는데, 이 부분이 해당 내용과 연관이 있는건지 궁금합니다.정확히는 외부 API의 호출 지연으로 인해 스레드 풀이 고갈되는 상황에서 어떻게 설계할 것인지에 대한 질문이었고, 이 과정에서 예시 키워드로 서킷 브레이커 Bulk Head가 있었습니다.또한, 실제 실무 환경에서는 커넥션 풀을 분리하기 위해 어떤 방법들을 사용하는지 궁금합니다! Q&A로 설명이 어렵다면, 키워드라도 알고 싶습니다.
-
해결됨5천억건이 넘는 금융 데이터를 처리하는 토스 개발자에게 배우는 MySQL
칼럼명
-- 유저 테이블 CREATE TABLE Users ( user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uq_username (username), -- 유저명은 유일해야 함 (대체키) UNIQUE KEY uq_email (email) -- 이메일은 유일해야 함 (대체키) ); -- 태그 테이블 CREATE TABLE Tags ( tag_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, UNIQUE KEY uq_name (name) ); -- 게시글 테이블 CREATE TABLE Posts ( post_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, title VARCHAR(200) NOT NULL, content TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, KEY idx_user_id (user_id), -- 작성자별 게시글 조회를 위해 인덱스 추가 FOREIGN KEY (user_id) REFERENCES Users(user_id) ); 위처럼 하셨는데자기참조를 할 경우도 있어서 저는 primary key 는 id 로 두고있거든요혹시 user 테이블에 user_id 컬럼명으로 하신 이유가 있나요 ?
-
해결됨5천억건이 넘는 금융 데이터를 처리하는 토스 개발자에게 배우는 MySQL
프로시저
데이터베이스에서 프로시저 하는것보다 코드단에서 해도 될것 같은데어떻게 하시나요 ??
-
미해결김영한의 실전 데이터베이스 - 기본편
in 수행
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. in 같은 경우에는 바로 찾더라도 계속 수행하나요 ?예를 들어 (1,2,3,4) 일때 product_id 가 1인 경우
-
미해결FastAPI 찍어먹기 (FastAPI + React.js + AWS LightSail)
vscode 자동 완성되는 익스텐션 질문
학습 관련 질문을 남겨주세요 성실히 답변해드립니다!강의와 관련이 없어도 유사한 학습 질문도 괜찮습니다강의에서 나오는대로 따라 모두 설치를 했습니다. 근데 제 vscode에서는 강의처럼 자동 완성을 강의처럼 제공해주지 않고 있어요... 혹시 어떤 익스텐션인지 알 수 있을까요? 그리고 fastapi와 react에서 더 유용한 익스텐션들이 있다면 알고 싶어요!
-
해결됨10,000++억의 데이터를 다루는 카카오 면접관의 MySQL
인덱스 분할, 병합에 따른 인덱스 적용 기준과 OPTIMIZE TABLE
hong님 안녕하세요!인덱스 분할, 병합 내용을 보면서 단순하게 인덱스를 걸면 안되겠다는 생각이 들었습니다. 질문1인덱스 분할, 병합 관점에서 인덱스를 걸어도 괜찮다는 결론에 도달할때 과정이 궁금합니다! 인덱스로 인해 줄어드는 조회 비용 > 인덱스로 인해 증가하는 쓰기 비용을 정량적으로 계산해서 적용하시나요?ex) 쓰기 패턴 및 TPS 조사, redo log 증가량 확인, 인덱스 개수, 테이블 크기 등 질문2라이브 환경에서 OPTIMIZE TABLE 실행해도 문제가 없을까요? 느낌상 최후의 수단으로 실행 해야하나 생각이 들었는데요. 고려해야할 사항이 있는지 궁금합니다!
-
해결됨[말 한마디로 뚝딱!] AI와 함께 나만의 수익화 웹사이트를 만드는 법
banbu.kr 사이트 접속이 안됩니다.
제곧내
-
미해결비전공자도 이해할 수 있는 DB 설계 입문/실전
만약 신고사유가 객관식 다운드롭형태일때는 테이블을 따로 분리하는건가요??
신고사유라는 테이블을 따로 하나 빼서 분리하는건가요??
-
미해결김영한의 실전 데이터베이스 - 기본편
외부조인1 강의 관련 질문
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네[질문 내용]외부 조인1 강의 듣다가 궁금한게 생겼는데요. (A 집합을 왼쪽, B 집합을 오른쪽)강의에서 LEFT JOIN의 경우는 집합 그림상으로도 그렇고 A(왼쪽 집합) 의 전체 데이터 + B에서 조건에 해당하는 데이터라면, B에 해당하는 부분은 사실상 A와 B의 교집합이고A에는 항상 A와 B의 교집합 부분이 들어가 있기때문에 추가적으로 들어오는 A(AND)B 교집합 부분은 의미없는 데이터고 결국엔 집합 A랑 다를게 없는거 아닐까요?? 좀 이해가 안되서 질문 드립니다.