#join

질문 3
해시태그 없이 키워드만 일치하는 질문은 개수에 포함되지 않아요.

6달 전 · CP 님의 답변 업데이트

RDBMS 실무 관계 연결 등 질문사항

혼자 프론트, 백엔드, DB 공부를 강의 보면서 독학하고 있는데 이번에 토이프로젝트로 쇼핑몰 웹을 하나 만들려고 합니다. 실무에서는 개발을 어떤식으로 하는지 궁금하여 질문 드립니다. 1. mysql 등 과 같은 RDBMS 테이블 관에 관계를 설정 안 하고 즉 외래키 연결 하나도 안 하고 사용할 때 장단점이 무엇인가요? 2. 지인 DBA분(오래 되심)께서 하시는 말씀은 관계 연결하면 DB 부하 심하다, 성능 저하된다 이런식으로 말씀하셨는데 맞나요? 2-1. 성능이 저항된다면 심하게 저하되나요? 3. 쿠팡, G마켓, 무신사, 유튜브 등과 같은 대형 플랫폼들은 RDBMS를 사용할 때 실제로 관계 연결을 안 하나요? 4. DB에서 값을 불러 올 때도 join 하나도 안 하고 소프트웨어적으로 수동으로 연결 한다. 제가 이해 하기로는 사진에 있는 예시 사진 참고 하면서 예를 들면 cart 불러오는데 user이름도 알아야 한다면 DB에 join을 해서 가져오는게 아니라 백엔드에 각 각 user, cart를 따로 호출하고 백엔드에서 if, for, array function 같은 메소드를 사용해 작업을 거쳐 가공 한다는 것 같은데 이러면 실무 적으로 봤을 때 장단점이 무엇인가요? 5. 대형 플랫폼 같은 실무에서는 4번 방식 처럼 하나요? 참고로 테이블이 20개 이상 정도 될 경우의 상황이 궁금합니다 실무에 관해서 민감한 질문 드려서 죄송합니다. 아는 것 없이 질문을 여러번 드려 번거롭게 만들어서 죄송합니다. 답변해 주신다면 열심히 공부하겠습니다.

개발자

#rdbms

답변 2

댓글 0

조회 70

9달 전 · 익명 님의 새로운 댓글

무조건 대학부터 가야할까요?

안녕하세요, 현재 22살이며 군복무를 70일 남긴 상황입니다, 요즘 저에게 있어 “무조건 대학부터 가는게 맞을까?” 라는 큰 고민이있습니다. 우선 지금 저의 상황을 말씀드리고자합니다, 20살때부터 개발 공부를 시작해서 운 좋게도 군복무와 개인 공부를 함께 할 수 있는 상황이라 현재도 서비스를 만들고 있는 상황입니다, 여태까지 두 번의 기획 to 배포까지의 서비스를 만들어보았고 잡다하게 여러 프로젝트를 시도해보았습니다. (덕분에 디자인, 웹퍼블리싱, 프론트, 백엔드, CI/CD에 대한 전반적인 이해도와 각 영역마다 편차는 크지만 숙련도가 조금은 있습니다) 그래서 이번에 만들 서비스는 이전과 다르게 레퍼런스와 서적을 참고하면서 약 3개월간 (현재까지 5권, 12만자 정도의 핵심 내용들을 필기) 개발 중인 상태며, 과거 저가 일했던 시장에서 불편한 점을 개선하는 서비스라 이 서비스를 원하는 분들이 어느정도 있으실거라 생각합니다. (랜딩 페이지를 만들었을 당시 조금의 홍보로 이틀간 200명이 방문 하셨고, 100분 정도가 이 서비스를 원한다는 의견을 보이셨습니다) 여튼, 개발 과정에서도 이미 얻은게 많고(이미 전체적인 구현이 완료됐음에도 불구하고 아쉬운 점들에 대한 작업이 약 80개 정도 남은 상황입니다) 런칭을 했을 때도 어느정도 기대가 되는 서비스를 만들고 있는 상황이며, 전역 후에는 현재 개발 서적을 정리하고 블로그에 기록하는 방식과 같이 나만의 개인 블로그를 만들어서 조금 더 체계적이며 남들이 저를 알기 쉬운 방법으로 CS 공부를 기록할 예정입니다. (이거를 위해서 20살때부터 영어 공부를 했으며, 아직 부족하지만 필요하다면 mit open course도 번역하면서 cs 공부와 영어 공부를 함께하는 방식으로 가고자 합니다) 이후 상반기에 아쉽게 면접에서 떨어진 연합 동아리에 다시 지원해보면서 다른 활동들(우테코, 소마, etc)에도 도전해 보고자 합니다, 이때 cs와 같은 이론적인 부분에서 부족한 점들을 딥 다이브 해보면서 개발자로서 역량을 키울 생각입니다. (이번에 개발 서적을 읽으면서 cs를 빨리 깊게 공부해보고 싶은 욕구가 생겼습니다) 그래서 종합적으로 2025년에는 계속해서 여태껏 만들고 싶었던 서비스를 만들고 부족한 공부를 하며, 여러 활동에 참여하면서 구직 활동도 해보는, 모든면에서 성장하고 싶습니다. 서론이 길었습니다, 지금까지의 이야기만 봤을 때 이미 제 마음이 정해진 상태에서 질문을 드리는 거 같아 죄송한 마음이 들지만, 이런 상황에서도 저가 “착각하고 있는건 아닐까?” 하는 불안함 때문에 “재수를 해서라도 나름 괜찮은 대학을 가야할까?”, “돈만 주면 가는곳이라도 가서 학사라도 따야할까?” 라는 고민이 드는 거 같습니다. 20살, 처음 개발을 시작했을 당시에 품고있던 의심이 어느정도 개발자로써 성장한 이 상황에서도 계속해서 드는 거 같습니다, 그래서 현재 제 생각은 “우선 취업을하고 경력자로써 인정 받을 수 있는 시기에 대학을 가서 학사를 따는게 좋지 않을까”하는 생각입니다. 이외에도 경제적 형편과 같은 추가적인 요소도 있지만 이전에 나이에 비해서 쉽게 돈을 벌었던 경험때문에 오만 또는 자만하고 있는게 아닐까 하는 생각입니다.(영상 관련일을 했었습니다) 부연설명을 해야하는게 많아서 글에 두서가 없는 점 죄송하며, 긴 글 읽어주셔서 감사합니다. 세줄요약 1. 취준생으로써 어느정도 실력이 쌓인 상태 (3년 정도 공부, 군복무 포함, 코테 플4) 2. 그래도 학사가 필요하지 않을까 하는 마음 3. 우선 취업하고 경력을 인정 받는 시기에 학사따기 vs 나이가 어리니깐 일단 아무곳이나 대학가보고 아니면 자퇴하거나 계속해서 학사따고 취업 (경제적 형편이 안 좋다는 문제가 있음) 마지막으로, 솔직히 아무곳이나 가더라도 4년 동안 다니면서 학사를 딸 용기가 없어서 반년내로 자퇴할 거 같은 느낌인데 이게 착각이 아닐까 하는 마음입니다, 그리고 뜬금없지만, 매칭 시스템을 구현하기 위해서 다익스트라 알고리즘 대신 가독성과 확장성 측면에서 더 좋은 코사인 유사도를 사용하거나 아호코라식 알고리즘이나 엘라스틱 서치를 쓸려다가 오버 엔지니어링 느낌이 들어서 Spring Data JPA Specification으로 해결하거나 조회수 중복을 막기 위해서 유저의 ip 주소를 redis에 저장하고 ttl 으로 자동으로 초기화하거나 n + 1 문제를 해결하기 위해서 fetch join에서 EntityGraph로 해결하고 동시성 문제도 AOP를 사용해서 해결하는 등 책을 통해서 또는 직접 찾아보고 해결하는 과정이 즐거운데 이게 틀린길인가 싶으니깐 슬픈 거 같습니다..

개발자

#학사

#취업

#개발공부

#대학교

#취준고민

답변 1

댓글 1

조회 182

10달 전 · 이상래 님의 새로운 답변

inner join vs 수동 조인

갑자기 드는 생각인데 inner join을 해서 데이터를 가져오는게 좋은가요? 아니면 각 테이블의 데이터를 갖고 온 다음 수동으로 연결해 주는게 더 성능적으로 좋은가요? 그리고 inner join할게 많아도 똑같나요?

개발자

#nest.js

#sequelize

답변 1

댓글 0

조회 44

일 년 전 · 행운아777 님의 답변 업데이트

API가 제공하는 데이터의 범위를 어떻게 잡을지 고민입니다.

안녕하세요. 개인 프로젝트로 풀스택 웹 서비스를 여러 번 만들어보다가 생긴 의문입니다. 보통 저는 백엔드는 nestjs와 프론트엔드는 nextjs로 개발을 합니다. 프론트 쪽에서 react query를 사용하여 백엔드의 데이터를 fetch하여 사용하는데, 한 화면에 여러 데이터가 필요한 경우가 있습니다. 원래 백엔드 api를 짤 때 resource를 기준으로 잡았었는데 이렇게 하다보면 재사용 측면에서는 좋으나 위에서 말한 경우와 같이 한 화면에 여러 resource에 대한 데이터마다의 api를 호출하기 때문에 한 화면에서 여러 api 통신이 이루어지게 되어 cost가 있지 않을까 생각이 들었습니다. 1. 그래서 아예 한 화면에 쓰이는 데이터를 전부 serving하는 api 라우트 하나를 두면 해당 api 하나만 호출했을 때 한 번의 통신만으로 데이터를 가져오기 때문에 이 방식이 괜찮다고 생각이 들었는데 실제로 어떤 것이 더 좋은지 궁금합니다. 뭔가 감으로는 리소스별로 독립된 api를 여러개 호출하는 방식이 장점이 많은 것 같은데(querykey로 캐싱을 따로 할 수 있는 등) api 갯수가 1개랑 3개라고 하면 사용자마다 3배 많은 통신이 이루어지게 되어 이 부분이 조금 걸립니다. 2. 그리고 유저에 대한 데이터를 응답한다고 했을 때 해당 테이블에 join으로 엮을 수 있는 다른 모든 테이블도 같이 포함시키는 것이 좋은지, 아님 분리시켜서 user 테이블의 속성만 제공하는 api(/users)와 다른 테이블의 정보도 같이 포함하는 api(/users/courses)를 따로 구분하는 것이 좋은지 그 범위를 아예 모든 정보를 다 가져오는 것과 딱 필요한 정보만 제공하는 것 중 어느 방식이 어떤 측면을 가지고 있는지 궁금합니다.

개발자

#next.js

#react-query

#api

답변 2

댓글 1

추천해요 1

조회 276

일 년 전 · 나정 님의 새로운 댓글

DB에서 Group과 User 테이블의 관계

group에서 user의 아이디를 받아 저장하는데, group에서 user를 찾는 건 쉽지만, user가 속한 group을 찾는데에는 어려움이 있을 거 같습니다. user 테이블에 group의 갯수를 제한해서 받는 것이 나을지, 다른 방법이 있는지 알려주세요! join도 생각해봤는데, 데이터양이 너무 많아질 거 같아서 고민입니다.

개발자

#springboot

#postgresql

답변 2

댓글 4

조회 132

10달 전 · 박정환 님의 답변 업데이트

Querydsl + MyBatis 조합

지난 프로젝트에서 Querydsl 만 사용해서 프로젝트를 진행했었습니다! 그런데 아무래도 JPQL 빌더이다 보니 Querydsl 만 사용하는 쿼리 작성에 한계가 보이기 시작했었는데.. 제가 너무 욕심이 과해서 너무 한방 쿼리를 날리려고 한 걸 수도 있지만 그럼에도 최소한의 집계쿼리를 포함해서 쿼리를 작성하고자 했는데 join으로도 해결이 안 되더라고요…. 그래서 결국은 쿼리를 쪼개서 보내고 애플리케이션 계층에서 자바 코드로 조합하는 형태로 완성은 하였지만 Querydsl 을 작성하기 전에 SQL로는 순조롭게 작성이 된 코드가 Querydsl 로 옮겨지지 않는다는 게 조금은 속상하더군요….제가 미숙해서 못한 것도 있을 수 있겠지만 그래도 Querydsl 로 SQL을 100% 활용할 수 없다는 게 조금은 불편하다고 생각이 들었습니다! 이전에 듣기로는 JPA만으로는 모든 쿼리를 처리할 수 없기 때문에 JdbcTemplate 나 MyBatis 를 함께 사용하는 경우가 있다고 들어본 기억이 있습니다! 실제로 실무에서도 JPA와 다른 SQL 매퍼를 조합해서 사용하는 경우가 많을까요?? CUD 작업은 JPA가 너무너무 편리하고 좋은데.. 조회에 있어서는 역시 MyBatis 나 JdbcTemplate 를 사용해 보는 것이 괜찮은 방법인지 궁금합니다!!

개발자

#jpa

#querydsl

#mybatis

#jdbc

#sql

답변 1

댓글 0

추천해요 1

조회 215

일 년 전 · 익명 님의 새로운 댓글

신고 게시글 안 보이도록 하는 기능 질문드립니다

안녕하세요! 현재 진행 중인 사이드 프로젝트에서 게시글 신고 기능을 구현하고 있습니다. 1. 게시글이 누적 신고를 받으면 모든 유저한테 안 보입니다. 2. 유저가 특정 게시글을 신고했을 때 해당 유저한테는 신고한 게시글이 안 보입니다. 1번의 경우에는 신고가 될 때마다 count를 해서 일정 횟수 누적이 되면 해당 게시글을 soft delete를 합니다. 2번의 경우에는 게시글 조회 시 신고 테이블을 outer join 해서 해당 유저가 신고하지 않은 게시글만 조회합니다. 신고 특성상 순간적으로 발생하는 경우가 많을 것 같아서 redis를 사용해볼까 하는 생각도 드는데 조언, 피드백 좀 주시면 정말 감사하겠습니다!

개발자

#spring

#jpa

#mysql

답변 1

댓글 1

조회 118

일 년 전 · 김도열 님의 답변 업데이트

mysql 실행계획 질문드립니다 (조인과 where문 조건 필터링 순서)

쿼리는 아래와 같습니다 EXPLAIN SELECT SUM(t.fee) FROM team t INNER JOIN student s ON s.student_id = t.student_id WHERE s.teacher_id = 3 AND t.team_unit in ('SOCCER', 'COOKING'); teacher 테이블과 student 테이블이 있고, student 테이블이 teacher 테이블의 id를 외래키로 갖고 있습니다 student 테이블과 team 테이블이 있고, team 테이블이 student 테이블의 id를 외래키로 갖고 있습니다 위 쿼리는 student와 team을 조인해서 특정 teacher_id와 team _type을 갖는 로우에 대해 fee 컬럼을 sum하는 쿼리입니다 조인은 nested loop 조인 방식으로 돌아갑니다 (인터넷에서 본 예제를 조금 변행해서 문법이 틀릴 수도 있습니다 양해 부탁드립니다) 사진은 해당 쿼리의 실행계획입니다 실행계획 역시 제가 원래 예제에서 약간 변형한거라 실제와 틀린 부분이 있을 수 있습니다 질문: 아래 두 가지 쿼리 실행 동작 과정 중에 어느 것이 맞는 건가요?? 1번 1. 두 테이블을 nested loop로 조인한 뒤 2. teacher_id가 3이고 team_unit이 SOCCER와 COOKING인 로우를 가져온 뒤에 sum 2번 1. student 테이블에서 teacher_id가 3인 로우 select 2. 1번에서 나온 결과를 바탕으로 team 테이블에서 student_id와 student 테이블의 student_id와 일치하는 로우를 nested loop 방식으로 조인, team_unit이 SOCCER와 COOKING인 로우를 가져온 뒤에 sum Where 조건에 명시된 필터 조건이 조인 전에 발생하는 건지 이후에 발생하는 건지 헷갈려서 질문드립니다

개발자

#mysql

#쿼리실행계획

#실행계획

답변 1

댓글 0

조회 68

일 년 전 · 익명 님의 새로운 댓글

자바 대용량 txt파일 update, insert 처리

안녕하세요. 초보 자바 개발자 입니다 회사에서 대용량 수신파일에 대한 update, insert 처리 건을 업무로 받아서 개발 중에 있는데 대용량 파일에 대한 처리 업무는 처음이라 어떤 방식이 제일 베스트인가에 대한 결정이 어려워 질문 드립니다. 원본테이블에 존재하는 정보(소속, 이름, 주민, 회차(1~4 중 하나))를 수신받은 파일(주민, 회차(1~4중 하나), 회차에 대한 정보)을 읽어 원본테이블에 존재하는 정보의 회차와 수신 받은 파일의 회차가 같으면 update, 다른경우 insert해 한 명 당 4건의 정보(원본update 1건, insert 3건)를 가지게 해야합니다. 처음엔 PL로부터 약 10만명에 대한 정보만 입력되면 된다고 들어서 자바로 원본테이블 정보를 select 후 수신파일을 읽어 list<map>에 담고 for문을 통해+ 비교 후 원본에 존재하면 updateList에 존재하지 않으면 insertList에 담아 1000건씩 bulk insert, update 처리했습니다. 그런데 최대 40만명까지 늘어날 수 있다고 말이 바껴서... 그럼 수신 파일정보가 160만건인데 제 생각에는 temp table을 만들어서 수신파일정보를 전부 insert 후 원본테이블과 join하여 update, insert하는게 맞지 않을까하는데 조언 부탁드리겠습니다.

개발자

#java

답변 1

댓글 1

조회 216

일 년 전 · 다형 님의 답변 업데이트

데이터 join후 어디에 담으시나요?

안녕하세요 join한 결과를 repository를 통해 받아올때 다들 어떻게 하시나요?? 어떤 방법을 써야 하는지 모르겠어서 선배님들의 의견과 다른 회사에서는 어떻게 하는지 알고 싶어서 질문 드립니다~ 제가 알기로는 domain은 db테이블과 1대1관계를 가져야 한다?, dto는 request와 response시에만 사용하는것? 으로 알고 있습니다 Mybatis를 통해 두 테이블을 join할때 (예를 들어 게시판 상세페이지에 접속할때 게시판테이블의 정보와 업로드된 파일을 관리하는 테이블의 데이터를 함께 조회함) 그 데이터를 어디에 담아서 repository를 통해 리턴하면 될까요..? 게시판 domain에 파일 정보를 추가해서 조인한 데이터를 담자니 domain이 db와 1대 1관계를 깨는것 같고 dto에 바로 담자니 dto와 domain의 변환 시점이 있는데 규약(?)을 무시하는것 같고 브릿지 테이블을 만드는것도 아닌것 같고.. 회사에서도 여쭤볼 분이 마땅치 않아서 궁금증을 여쭤봅니다ㅜㅜㅜㅜ

개발자

#join

#dto

#domain

#mybatis

답변 2

댓글 0

조회 257

일 년 전 · 김지섭 님의 질문 업데이트

MSA 환경에서 ABAC 기반의 권한시스템을 어떻게 구현하는게 좋을까요?

안녕하세요 현재 진행중인 프로젝트에 MSA를 적용하여 구현하고 있는 백엔드 꿈나무입니다. 빈번하게 일어나는 권한 검증을 효율적이고 높은 가용성을 확보할 수 있도록 하기 위해서 여러 방법을 모색하던 중, 다른 분들의 의견이 어떨지 하여 QnA를 올려보게 되었습니다. 우선 저희 프로젝트는 User, Device, Organization, Team, License 이렇게 5가지 개념이 있습니다. 사용자가 장비에 접근할 때에는 본인이 소속된 Org에 해당 장비가 존재하는지, 접근하는 동작에 대해서 해당 org가 License를 보유하고 있는지, 소속된 팀 또는 본인에게 해당 장비에 해당 동작을 승인받았는지 등 수많은 조건들에 의해 ABAC가 계산되게 됩니다. 하지만 MSA 환경으로 인해 테이블을 쉽게 join하지 못할 뿐더러, 가능하더라도 상당한 고부하 작업이 될 것이라고 생각합니다. 그래서 CQRS 패턴을 이용해서 license가 만료되거나 팀의 권한이 수정되는 등, 사용자와 장비간의 권한이 수정이 되는 command가 수신되면, 그것을 권한 담당 서비스에 비동기로 전달하여 특정 사용자가 특정 장비에 어떤 동작에 대한 제어가 가능한지를 저장(캐싱)하고 있다가 권한을 검사해야되면 간단하게 query하는 형태로 구현하는 것이 적합할 것이라고 판단했습니다. 이 패턴을 구현하기 위한 두가지 방법을 고안해보았습니다. [Permission Service] 별도의 permission 서비스를 만들고 캐시용도로 redis를 연결해두고, 권한 검사 요청이 들어왔을 때 Cache Miss가 된다면 Api Gateway 패턴과 유사하게 여러 서비스에 각각 정보를 요청하여 최종적인 권한 정보를 Aggregate 하여 전달하고, 캐시에 보관하는 방식입니다 [권한 관리 Infra Service] Google의 Zanzibar와 같이 권한을 관리하고 복잡한 쿼리를 처리해주는 서비스를 이용하는 방식입니다. 오픈소스로 구현된 SpiceDB를 고려하고 있습니다. Permission Service를 만드는 경우, 본인이 보유한 정보가 부족할 경우 능동적으로 정보를 Pull하여 권한 정보를 가져오는 반면, 양측에 별도 인터페이스를 구현해야되는 단점이 있고, 이미 있는 서비스를 사용하면 구현이 쉬워지는 반면, 해당 서비스에서 능동적인 Pull이 불가능하고, 권한 Query 정보가 최신인지 판단하고 업데이트하는 것을 각 서비스에서 각각 담당해야되기 때문에 별도 서비스를 분리하는 것에 비해 Responsibility Segregation이 부족하다고도 느꼈습니다. 무엇보다 관리해야될 인프라 요소가 늘어난 것은 덤이구요. 규모에 비해서 과한 고민을 하고 있는것이 아닌가 하는 생각도 들고, 그래도 더 나은 방법으로 서비스를 만들어가고 싶기도 합니다. ABAC를 적용하는 대부분의 서비스에서 이러한 고민을 적절히 잘 해결하여 서비스가 되고 있을텐데, 정답은 없겠지만 선배님들의 조언을 듣고 싶습니다!

개발자

#msa

#cqrs

답변 0

댓글 0

추천해요 2

조회 137

일 년 전 · 박정환 님의 새로운 답변

경력 7년차 개발자입니다. 공부방법좀 공유해주실수 있으실까요?

안녕하세요 7년차 서버개발자입니다. 문제는 여태까지 7년 개발인생에서 5개 회사를 다녀봤지만, 모두 스타트업수준이라 경력직 사수가 있던적이 한번도없습니다... 그러다보니, 좋은 코드를 경험하거나 실질적으로 함께 일하며 개발자로써 일하는 방법에 대해서 조언을 들어본 경험이 없네요 주변에서 주워들은 최소한의 환경(깃, 린터, 자동배포, 문서화, 테스트코드)만 구축해놓고 일을 하고 있습니다. 그리고 클라우드 서비스를 사용할때도 메뉴얼을 확인해서 우리 서비스에 사용할수 있는 기능인가 확인하고 그냥 적용하는 수준으로 쓰고있고, 깊은수준으로 공부를 한다거나 하지는 않습니다. 코드의 수준도 '돌아가는 코드' 정도이고, 상속이나 다형성같은건 잘 사용하지도 않네요... 객체지향프로그래밍은 대학시절에 과제에나 써봤던거같아요... DB설계도 정규화하는 방법도 다 까고 연결관계도 유연하게 쓰는법을 까먹어서 지금은 그냥 연결관계는 안맺어두고 join해서 쓰는상태입니다.(심각) CS도 거의 다 까먹었네요; 실무에서 쓴적이 거의 전무할정도... 코드작성할때 시간복잡도 정도만 고려하고, 자료구조정도만 가끔 쓰네요 위에 제 상황을 보셨을때 어떤부분이 제일 심각한지, 추천해주실만한 공부방법이 있는지 궁금합니다. 7년차 되시면 다들 매니저급으로 성장하시던데... 전 아직 주니어 2~3년차 실력밖에 안되는거같아서 힘드네요ㅠㅠ

개발자

#커리어

#경력

#서버개발자

답변 8

댓글 7

추천해요 35

조회 9,021

2년 전 · 익명 님의 새로운 댓글

서버 무한로딩 문제

node.js로 api 개발 후 aws ec2에 올려서 api 배포를 했는데 GET 요청을 7번정도 보내면 서버가 무한로딩이 걸리고 문제가 발생했습니다. 제가 예상하는 문제는 sql문을 작성할 때 너무 많은 join 연산과 데이터 양으로 ec2 프리티어가 감당하지 못한 것이라고 생각하고 있습니다! 혹시 이 부분 이외에도 무한로딩에 영향을 주는 부분이 있는지, sql문의 join 연산을 인덱싱으로 최적화할 수 있다고 들었는데 이 부분이 맞는지 질문하고 싶습니다!

개발자

#node.js

#sql

#mysql

#ec2

#server

답변 1

댓글 1

조회 280

2년 전 · 커리어리 AI 봇 님의 새로운 답변

MYSQL에서 카테고리마다 column이 다른 데이터를 하나의 테이블에서 관리하는 방법?

쇼핑몰과 비슷한 서비스를 구현중인데, 카테고리 상관없이 모든 상품을 관리하는 Products 테이블이 있습니다. 카테고리마다 column이 달라서, 처음에는 CategoryA_products, CategoryB_products 이런식으로 구현하려했는데 카테고리가 늘어나면 늘어날수록 Products repository에서 JOIN이 계속 늘어나게 되고, 데이터를 관리하기도 쉽지가 않아서 구조를 바꿔보려합니다. 모든 상품의 공통부분을 Products로 관리하고, 카테고리마다 다른 부분들은 Products_detail 테이블에 JSON으로 저장을 해볼까했었는데, 이러면 또 데이터의 안정성을 보장할수가없어서 고민입니다 ㅠㅠ 어떻게 테이블구조를 짜야 효율적일까요?

개발자

#mysql

#orm

#database

답변 2

댓글 0

조회 262

2년 전 · joseph 님의 새로운 답변

실무에서 RDB 테이블을 분리할 때 고려하는 기준에는 어떤 것들이 있나요?

안녕하세요! 백엔드 개발자를 꿈꾸고 있는 취준생입니다! 최근 진행 중인 프로젝트에서 api와 DB를 개발하던 중 궁금한 사항이 생겨 질문 올려봅니다! (기술 스택은 spring boot, mybatis, mysql 활용 중입니다.) 처음 기획 단계에서 DB를 설계할 때 이론적으로 배웠던대로 데이터 중복 저장을 최소화 하고 데이터 간의 관계를 최대한 반영하기 위해서 테이블을 무작정 잘게 나눴는데요! 설계 후 개발 과정에서 까다로운 사항들과 계속 마주치게 되더라구요..! 지금 생각나는 까다로웠던 사항들만 대략 정리해보면, - 테이블 간의 관계가 복잡해져 쿼리가 길어지고 복잡해졌고,(가독성에도 영향을 주는 듯 하더라구요!) - 특정 데이터를 조회할 때, 오직 join 조건만을 위해 여러 테이블들이 탐색되어지는 경우 발생했고, - 데이터 변경(삽입 수정 삭제) 과정이 까다로워졌고, - 테스트를 위한 더미 데이터 설정에 어려움이 있었어요..! 성능적으로 효율적인게 가장 중요하지만, 개발 과정에서의 효율성(소요 기간, 가독성, 유지보수 등) 또한 중요하다고 알고 있어서요! 그리고 join이 많이 수행되는게 데이터 수가 늘어남에 따라 오히려 성능 저하로 이어지는 경우가 있을 것이라 생각되었습니다! 그래서 실무에서는 상황에 따라 테이블 분리 정도가 다를 것 같은데, 이때 어느정도까지 분리하는게 적절한지 논의하는 과정에서 주로 어떤 사항들에 대한 고민이 이루어지는지 여쭤보고 싶습니다! 구구절절한 질문 읽어주셔서 감사합니다 :)..

개발자

#rdb

#rdbms

#mysql

#db

#database

답변 2

댓글 0

추천해요 1

조회 192

2년 전 · 커리어리 AI 봇 님의 새로운 답변

개발자 선생님들 도와주세요..

안녕하세요 초보개발자입니다 지금 구글로 코드 복붙하며 게시판 수정중인데 아예 똑같이 복붙 하였는데 저는 왜 이런 식으로 나올까요 도와주세요 .. ㅠㅠ 프로젝트 발표가 코앞인데.. 1번째사진은 작성자의 사진이고 2번째 사진이 제 출력 화면입니다... 코드는 댓글에 적어두겠습니다..도와주세요.. ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <!--부트스트랩은 어떤device로 접속하더라도 해상도에 맞게 알아서 설정되는 탬플릿이다. --> <meta name="viewport" content="width=device-width" , inital-scale="1"> <!--스타일시트를 참조, 주소는 css안에 부트스트랩.css--> <link rel="stylesheet" href="css/bootstrap.css"> <title>JSP 게시판 웹 사이트</title> </head> <body> <!-- 네비게이션 구현 네비게이션이라는 것은 하나의 웹사이트의 전반적인 구성을 보여주는 역할 --> <nav class="navbar navbar-default"> <!-- header부분을 먼저 구현해 주는데 홈페이지의 로고같은것을 담는 영역이라고 할 수 있다. --> <div class="navbar-header"> <!-- <1>웹사이트 외형 상의 제일 좌측 버튼을 생성해준다. data-target= 타겟명을 지정해주고--> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-exmaple="false"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <!-- 여긴 웹페이지의 로고 글자를 지정해준다. 클릭 시 main.jsp로 이동하게 해주는게 국룰 --> <a class="navbar-brand" href="main.jsp">JSP 게시판 웹 사이트</a> </div> <!-- 여기서 <1>에만든 버튼 내부의 데이터 타겟과 div id가 일치해야한다. --> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <!-- div 내부에 ul은 하나의 어떠한 리스트를 보여줄때 사용 --> <ul class="nav navbar-nav"> <!-- 리스트 내부에 li로 원소를 구현 메인으로 이동하게만들고--> <li><a href="main.jsp">메인</a></li> <!-- 게시판으로 이동하게 만든다. --> <li><a href="bbs.jsp">게시판</a></li> </ul> <!-- 리스트 하나 더 생성 웹페이지 화면에서 우측 부분--> <ul class="nav navbar-nav navbar-right"> <!-- 원소를 하나 구현해 준다. 네비게이션 우측 슬라이드메뉴 구현 --> <li class="dropdown"> <!-- 안에 a태그를 하나 삽입한다. href="#"은 링크없음을 표시한다. --> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">접속하기<span class="caret"></span></a> <!--접속하기 아래에 드랍다운메뉴 생성 --> <ul class="dropdown-menu"> <!-- li class="active" 현재 선택된 홈페이지를 의미 --> <li><a href="login.jsp">로그인</a></li> <li class="active"><a href="join.jsp">회원가입</a></li> </ul> </li> </ul> </div> <!-- 네비게이션 바 구성 끝 --> </nav> <!-- 하나의 컨테이너처럼 감싸주는 역할 --> <div class="container"> <div class="col-lg-4"></div> <!-- 회원가입 폼은 위의 양식은 일치하며, 이제 내부 폼만 바꿔준다. --> <div class="col-lg-4"> <div class="jumbotron" style="padding-top: 20px;"> <!-- 양식 삽입 post는 회원가입이나 로그인같이 어떠한 정보값을 숨기면서 보내는 메소드/ 로그인 Action페이지로 정보를보내겠다--> <form method="post" action="joinAction.jsp"> <!-- 회원 가입에 맞게 위에 액션은 joinAction페이지로 밑에 제목은 회원가입 화면으로 변경 --> <h3 style="text-align: center;">회원가입 화면</h3> <div class="form-group"> <!-- 회원 가입에서도 userID or userPassword는 동일하게 가져가고, 회원가입에 필요한 나머지 속성추가 --> <input type="text" class="form-control" placeholder="아이디" name="userID" maxlength="20"> </div> <div class="form-group"> <input type="password" class="form-control" placeholder="비밀번호" name="userPassword" maxlength="20"> </div> <!-- userName 추가 --> <div class="form-group"> <input type="text" class="form-control" placeholder="이름" name="userName" maxlength="20"> </div> <!-- 성별 선택 추가 --> <div class="form-group" style="text-align: center;"> <!-- 버튼 공간을 따로 마련해준다.(남,녀) --> <div class="btn-group" data-toggle="buttons"> <!-- 선택이 된곳에 표시를 하는 active를 설정해준다. --> <label class="btn btn-primary active"> <input type="radio" name="userGender" autocomplete="off" value="남자" checked>남자 </label> <label class="btn btn-primary"> <input type="radio" name="userGender" autocomplete="off" value="여자" checked>여자 </label> </div> <!-- 성별 선택부분 완료 --> </div> <!-- email 작성부분 구현 --> <div class="form-group"> <!-- placeholder는 아무런 입력이 없을때 띄워주는 값 --> <input type="email" class="form-control" placeholder="이메일" name="userEmail" maxlength="20"> </div> <!-- 버튼 또한 회원가입으로 value변경 --> <input type="submit" class="btn btn-primary form-control" value="회원가입"> </form> </div> </div> <div class="col-lg-4"></div> </div> <!-- 애니메이션을 담당하게 될 자바스크립트 참조 --> <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> <!-- 특정홈페이지에서 제이쿼리 호출 --> <script src="js/bootstrap.js"></script> </body> </html>

개발자

#jsp

#java

답변 2

댓글 4

보충이 필요해요 3

조회 388

2년 전 · 커리어리 AI 봇 님의 새로운 답변

typeorm 에서 join 하려면 쿼리빌더 써야 하나요?

typeorm에 find 속성 내에서 join을 쓰려고 보니까 deprecate 이더라고요?? join 하려면 쿼리 빌더 써야 하는 건가요?

개발자

#typeorm

답변 2

댓글 0

조회 119

2년 전 · 커리어리 AI 봇 님의 새로운 답변

RDBMS에서 데이타들이 관계를 가져야 하는 이유가 궁금해요

먼저 바보같은 질문에 사과드립니다. ㅎㅎ "일반적으로", 데이터를 하나의 entity에 몰아서 db에 넣지 않고 정규화 과정을 거치고 데이터들의 관계를 만들어서 db 에 넣잖아요. 근데, 문득 들은 생각은, 굳이 데이터간에 관계를 만들고 분리해서 저장해야 하나가 궁금점입니다. 오히려 분리된 데이터를 취합할 때 join을 사용하면서 실행속도에 손해가 생길 수 도 있고, entity를 분리하고 entity의 크기를 작게 만들면 해당 entity에 접근하는 속도가 빨라질 순 있겠지만, 지금 우리의 컴퓨터 속도를 생각하면 별 차이가 없을 거 같기도 해서요. 관련해서 구글에 검색해보긴 했지만, 원하는 대답을 찾을 순 없었습니다 ㅠㅠ 혹시 관련해서 나누고 싶은 이야기가 있으면 감사하겠습니다. 좋은 하루 되세요 ~.~

개발자

#rdbms

답변 3

댓글 2

추천해요 3

조회 207

2년 전 · 커리어리 AI 봇 님의 새로운 답변

데이터 composition 위치에 대한 문의

안녕하세요. 백엔드 개발하던 중에 질문이 생겨서 올립니다. 페이지에 보여줄 데이터를 가져오는 작업을 하고 있는데, 데이터가 여러 마이크로서비스에 흩어져있다보니까 게이트웨이 성 서버에서 호출한 데이터를 취합해주고 있습니다. 예시를 들자면, 혼합 데이터 A는 데이터 A, B, C의 조합이라고 생각했을때, 게이트웨이에서 데이터 A, B, C를 각각의 마이크로서비스를 호출한후 혼합 데이터 A를 만들어서 클라이언트에 보내주고 있어요. 근데 이게 맞는 방법인지는 잘모르겠습니다. 보통 이렇게 DB 레벨에서 JOIN을 못 해줄경우, 데이터 취합은 어떻게 할 수 있나요? 제가 생각했던 다른 방식은 데이터 A, B, C를 각각 클라이언트에서 마이크로서비스로 요청을 해서 가져오는 것 정도였습니다. 이렇게 생각한 이유는 전자의 방식은 게이트웨이가 다운되면 모든 데이터를 못보지만, 후자의 경우는 하나의 마이크로서비스가 다운되어도 일부 데이터를 볼 수 있겠다 싶었어요. ex. 데이터 A의 마이크로서비스가 다운되어도, 데이터 B, C는 불러올 수 있음.

개발자

#backend

답변 3

댓글 0

조회 152

2년 전 · 커리어리 AI 봇 님의 새로운 답변

안녕하세요 delete문으로 바꾸고 싶은데 모르겠어서 질문드려요

지금 중복된 값을 찾았어요 중복된 값만 지우려고 하는데 아래 코드를 통해서 삭제해야할 것 같아요 SELECT DISTINCT A . * , D.cptype FROM nowon_event_appointment2 AS A LEFT OUTER JOIN nowon_event_appointment AS B ON A.appidx = B.idx LEFT OUTER JOIN nowon_member C ON A.mbId = C.mbId LEFT OUTER JOIN n_edu D ON C.mbCpName = D.cpname WHERE A.clickKindZ = '1679902451' && A.clickTimeCode = '117' && B.clickAppCancel = 'N' AND A.cpt = 'Y' GROUP BY A.cptNum DESC 사진은 sql 해석이라고 해요 WHERE절을 사용하면 된다고 하는데 저 코드를 풀어서 다시 코드를 어떻게 짜는지 모르겠어요 많은 관심 부탁드려요

개발자

#php

#phpmyadmin

#신입개발자

#도움요청

답변 2

댓글 1

조회 188

2년 전 · 커리어리 AI 봇 님의 새로운 답변

MySQL에서 full outer join 어떻게 하나요?

안녕하세요, MySQL에서 full outer join을 하려고 하는데 원하는 결과값이 나오지 않습니다.. full outer join이 불가능한건가요? 방법이 없는지 궁금합니다 ㅠㅠ

개발자

#mysql

#sql

답변 2

댓글 0

조회 212

2년 전 · 커리어리 AI 봇 님의 새로운 답변

파이썬 프로세서 질문 있습니다.

if __name__=="__main__": manager=Manager() Big_df=manager.dict() p1=Process(target=Data1,args=(Big_df,)) p2=Process(target=Data2, args=(Big_df,)) p3=Process(target=Data3, args=(Big_df,) while True: if p1.is_alive() == False: p1.start() p1.join() if p2.is_alive() == False: p2.start() p1.join() if p3.is_alive() == False: p3.start() p3.join() time.sleep(300) 프로세서가 죽으면 자동으로 다시 살리고 싶어서 while 문을 써서 프로세서가 죽었으면 다시 실행 시킬려고 하는데 while 문 안의 코드가 사용 가능한 코드인가요..

개발자

#python

답변 2

댓글 0

조회 368

2년 전 · 커리어리 AI 봇 님의 새로운 답변

spring security 권한 처리

데이터베이스에 user테이블과 role테이블 그리고 user_role테이블을 만들어 user_id와 role_id를 만들어 다대다 매핑을 하였습니다. 기존에는 configureGlobal방식으로 .authoritiesByUsernameQuery(“select u.email, r.name from user_role ur inner join user u on ur.user_id = u.id inner join role r on ur.role_id = r.id where u.email = ?") 이런 방식으로 했는데 userDetailsService 인터페이스를 이용하여 로그인 처리를 하는 방식에서 유저의 권한을 어떻게 처리해야할지 모르겠습니다ㅠㅠㅠ 아직 시큐리티에 대해 잘 몰라 자세히 알려주시면 정말 감사하겠습니다 ㅠㅠ

개발자

#spring

#springboot

#spring-security

#권한처리

#userdetailsservice

답변 1

댓글 0

추천해요 1

조회 372

2년 전 · 엄홍재 님의 새로운 답변

django 정적 이미지 업로드 질문드립니다

제가 venvs/mysite/pybo/templates 안의 hello.html 파일 안에 {%load static} 하고 venvs/mysite/pybo/static/image 이 폴더에 있는 이미지 를 불러오기 하려고 <img src={%static '/django.jpg' %}> 이걸 하는데 계속 이미지는 안뜨고 css 파일만 뜨네요 ㅠㅠㅠ django.jpg는 이미지이름입니다 config 파일 내에 settings 안에서도 STATIC_URL = "/static/" STATICFILES_DIRS = [ os.path.join(BASE_DIR,"pybo/static") ] 이것도 했는데 안되네요 ㅠㅠㅠㅠ pybo/view.py 파일 안에도 from django.shortcuts import render,get_object_or_404,redirect from django.http import HttpResponse from .models import Question,Answer def hello(request): #return HttpResponse('pybo/hello.html') return render(request,'pybo/hello.html') 뭐가 문제인걸까요 ... 파이썬 migrate랑 runserver도 다 새로고침 했습니다..

개발자

#디장고

#django

#프레임워크

#장고

#백엔드개발

답변 1

댓글 0

조회 102

2년 전 · 삭제된 사용자 님의 답변 업데이트

SQL에서 조인했을 때 where 조건은 어떻게 넣어야 하나요?

안녕하세요, 스타트업에서 일하고 있는 주니어 PM입니다. SQL에 대해 거의 모르고 입사했는데, 막상 입사해 보니 DB에서 데이터를 뽑아볼 일이 생각보다 많아서 어려움을 겪고 있어요 ㅠㅠ 생초보라 답답하실 수 있겠지만 질문 올려 봅니다. 1번 테이블에는 게시글의 id와 제목 정보가 있고, 2번 테이블에는 게시글에 달린 댓글의 id와 내용이 하나씩 쌓이고 있습니다. 제가 알고 싶은 정보는 게시글들의 댓글 개수인데요, 그래서 1번 테이블에 2번 테이블을 outer join하고, 1번 테이블의 id 기준으로 group by 하여 Count(2번테이블.id)를 뽑아내는 방식으로 개수를 세고 있습니다. 그런데 특정 id를 가진 게시글의 댓글 개수를 세고 싶어서 where 1번테이블.id in (~~~~) 줄을 추가했는데 아래와 같은 오류가 뜹니다. 2번 테이블에 있는 속성으로 바꿔 봐도 동일하고요. 오류 없이 특정 id를 가진 게시글만 뽑아 보려면 어떻게 해야 할까요? 그리고 위의 방식에서는 왜 오류가 발생하는 걸까요?? 오류: 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 'WHERE a.id in (~~~)' at line 7

개발자

#sql

#join

답변 1

댓글 3

추천해요 1

조회 191

2년 전 · 익명 님의 새로운 댓글

SQL에서 JOIN은 지양해야하나요?

안녕하세요, 최근에 어떤 블로그를 읽다가 클라이언트에 직접적으로 데이터를 뿌려주는 데이터베이스의 경우 JOIN을 지양하는게 좋다 라는 취지의 글을 보았는데요. 이게 현업에서도 그런지 궁금합니다. 물론 상황에 따라 다르겠지만, 일반적으로 조회가 잦은 데이터의 경우 JOIN 쿼리문을 잘 안쓰나요?

개발자

#sql

답변 1

댓글 1

추천해요 1

조회 571

2년 전 · 수민 님의 답변 업데이트

(SQL) Join 후 Group by 했을 때 0이어도 데이터 표시되도록 하는 방법

테이블을 OUTER JOIN 한 후 GROUP BY 해서 데이터 개수를 세려고 하는데요, 데이터 값이 없는 경우는 아예 로우 자체가 포함되질 않던데 혹시 값이 없는 경우에도 0으로 표시되도록 할 수 있는 방법이 없을까요?

개발자

#sql

#join

#groupby

답변 1

댓글 1

조회 343

2년 전 · 손정현 님의 답변 업데이트

SQL JOIN시 필터 조건을 어디에 넣어야 하나요? on vs where

안녕하세요~ SQL JOIN에 대한 질문이 있습니다. tableA id, type 1, comment 2, comment 3, comment 4, reply tableB id, value 1, test 2, test2 3, test3 4, test4 라는 테이블이 있을때 tableA의 type으로 필터를 걸려고 하는데, 어떤 방식으로 해야하는지 궁금합니다. 1. SELECT * FROM tableB as b LEFT JOIN tableA as a ON a.id = b.id WHERE a.type = "comment"; 2. SELECT * FROM tableB as b LEFT JOIN tableA as a ON (a.id = b.id AND a.type = "comment"); 원하는 결과 값은 tableB와 A를 LEFT JOIN한 데이터 중 tableA type이 comment인 row만 추출하면 됩니다. 필터를 ON에다가 걸어야하나요? 아니면 WHERE에다가 걸어야하나요? 둘의 차이가 어떻게 되나요? 둘의 결과 값이 달라지긴 하더라구요. 2번을 사용하면 a.type이 comment가 아닌 것은 tableA 쪽 값들이 null로 나오더라구요. 같은 필터인데 왜 결과가 다른지 잘 모르겠습니다 ㅠㅠㅠ

개발자

#sql

답변 2

댓글 0

추천해요 5

조회 320

3년 전 · 익명 님의 새로운 댓글

SI 신입이 가져야 할 능력(역량)은 무엇인가요?

국비학원에서 html, css, js 기초와 간단한 실습 부터 , mysql 쿼리를 배우고(join과 index를 제외하고 기본 문법만 숙지하고 있습니다.) servlet ,jsp를 배우고 이번에 배우고 있는 Sping boot를 마지막으로 국비 수업 수료를 앞두고 있습니다. Python과정은 기초 문법과 R언어, Beautiful Soup로 크롤링을 하는 법을 배웠습니다. 빠르게 돈을 벌고 싶어서 수료 후, 바로 취업 활동에 들어갈 것 같습니다. 그런데 아직 게시판 조차 따라치기만 하는 코드 몽키..가 된 거 같습니다. 아마 SI쪽으로 가려는 데, 처음에 겪을 데미지를 최소한으로 줄이고 싶습니다(덜 얻어맞고 싶네요..) 프로젝트는 국비학교에서 진행하는 프로젝트만 진행중입니다. 전자 도서관 홈페이지를 참고 삼아서 간단한 홈페이지를 구현하는 건데요. 수업에 들었고 한번 쳐봤던 자료들을 긁어모아 아주 간단한 기능만 넣고 만드는 중입니다. Q.SI신입은 무엇을 준비해야 할까요? Q.코드몽키 수준을 넘어가려면 어떻게 해야 할까요?

개발자

#국비교육

#비전공자

답변 1

댓글 1

추천해요 12

조회 1,335