일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- jar 배포
- 플루터
- 티스토리챌린지
- OIDC
- nGinder
- 7879
- jsonMarshaller
- pinpoint
- 오블완
- hbase 저장공간 설정
- 핀포인트
- RedirectService
- UnsupportedOperationException
- reids
- 애자일 싫타
- fake jwt
- 논블록킹 성능
- R2DBC Paging
- 개발 어렵당.ㅠ
- 노드간 통신
- formik
- 월급루팡 일지
- save/update
- pinpoint 2.5.3
- Ingress Controller Fake
- Loki 로그
- intellij
- Armeria
- LPOS
- ㅉ때
- Today
- Total
목록개발이야기/DataBase (24)
대머리개발자
익숙하지 않는 쿼리는 어색하다. 정렬이 특정 친구를 먼저 앞으로 보내고나머지는 최신으로 내림차순하면 되는 부분이다. 순간적으로 생각난 부분은 두 번의 쿼리를 날려야겠다고 생각했다. 1. 특정 친구를 쿼리하고2. 나머지 부분을 별도 쿼리즉, 두개의 쿼리를 합쳐서(union all) 보내면 되겠다 싶었다. 하고자 하는 바는카테고리(메뉴)별 최신 게시글을 하나씩 리스트업을 해야 하는데특정 카테고리는 무조건 맨앞에 위치 해야 하는 Needs였다. orber by 절에 조건이 들어가는 쿼리가 너무나 어색했다.SELECT b.*FROM board bINNER JOIN ( SELECT id, MAX(regDt) AS regDt, menuId FROM board where accessLevel = 5 ..
조건절에 OR을 사용하면 성능에 부정적인 영향을 미칠수 있다.그래서 어지간 하면 다른 방향으로 설계를 해야 한다. 성능 저하의 이뉴는인덱스 활용 어렵고 쿼리 최적화가 어렵고 전체 테이블 스캔을 한다. 결국 다 같은 말이다. ㅋ 당근 인덱스 활용을 안 하니 최적화 어렵고 전체 테이블 스캔을 하겠쥬. 가능한 경우는 IN 연산자를 활용하고 또는 UNION ALL 연산자를 사용하라고 한다. 내가 원하는 조건절은 아래의 내용을 만족해야 한다.1. 기준일 상관없이 멤버쉽이면 볼 수 있는 공개 게시글 있고 2. 멤버십으로 가입한 기준일로 볼 수 있는 조건이 있다.// 1. 전체 공개 게시글 (날짜 조건 없음)val publicPredicate = QBoard.board.visibility.eq(Visibility..
SELECT id, action, regDtFROM ProductWHERE action = 'EARN_TODO'AND style = 'POINT'AND regDt > DATE_SUB(CURDATE(), INTERVAL 7 DAY)AND regDt VSSELECT id, action, regDtFROM ProductWHERE action = 'EARN_TODO'AND style = 'POINT'AND DATEDIFF(CURDATE(), regDt) = 7 EARN_TODO를 정확히 7일 후에 조건이 충족되면 EARN으로 UPDATE 해줘야 한다.따라서 UPDATE할 대상을 조회하고자 할 때 어떤 쿼리가 더 효과적인지는.. 일단 무조건 피해야할 조건은 컬럼의 함수나 연산을 좌측에 두면 안 된다. ⭐⭐인..

10년동안...사실..왜 있나 싶기도 했다.조인 대상 테이블이 하나일 때 Cross join = Inner join이 된다.실제 쿼리도 cross / inner 무엇을 쓰든 동작은 동일하다. ex)WITHscale_adj_factor AS (SELECT GREATEST(ABS(MAX(score)), ABS(MIN(score))) AS score FROM signal_history_v2)SELECT history.code , history.date , history.price , (history.score / scale_adj_factor.score) * 100 AS score , history.digital_signalFROM history_v2 AS history(cr..
MyBatis --> R2DBC로 마이그레이션 하고 있는데.. 빡치게 재미지네! 제일 험난했던 놈이다. ## 쿼리 바인딩 ## 데이터 클래스abstract class StatusDto ( val category: Int = 10, val code: String = "", val name: String = "", val price: BigDecimal = BigDecimal.ZERO, val digital: Int = 1, val movement: Int = 0)data class ScoreTimeSeries( val date:..

해당 기능이 있는 줄은... 역시 뭐든 잘 얻어 걸려야 한다. (잘 검색해야 한다.)group_concat은 row 데이터를 column 로 변경해 준다. 설문지 응답 데이터이다. 특정 사용자로 group by를 하고 응답을 하나의 Row으로 변경한다.물론 데이터를 구분 할 수 있는 딜리미터(|@|)가 필요하다.group_concat(qc.view SEPARATOR '|@|')...group by userId 여기서 내가 원했던 기능은 질문의 순서대로 row가 정렬하고자 했던 부분이다.질문지의 ID로 group_concat을 했더니 엉망이다...ㅠ 그냥 row 레벨로 풀어서 엑셀 내보내기를 해두 된다. But 서비스 로직이 복잡해 진다.복잡해 지면 추후에 다시 볼 때 머리에 지진이 온다.해서 뭐든 최대..

일관성을 유지하기 위해 데이터 저장과 업데이트 동일하게 처리 된다.즉, ID(PK) 존재 여부로 등록하거나 업데이트를 진행 한다. 업데이트를 할 때 필요한 값만 하고 싶은 경우에 대한 고민s 방법1. @DynamicUpdate 사용하면 될 일이지만 해당 기능은 없다고 한다. 따라서 DB데이터를 가져와서 수정된 데이터를 바인딩하고 Save() 호출한다.-> DB로부터 객체를 가져오는 추가적인 접근이 필요하다.return formRepository.save(mapper.map(formQuestion.form, Form::class.java)) .flatMap { savedForm -> Flux.fromIterable(formQuestion.questions) ...
고성능 시스템을 구축하기 위해서는 필수라는데..손이 너무 많이 간다. ㅠ 최대한 한방 쿼리로 DB 자체의 요청 자제하는 방향으로 진행한다. 왜냐면 DB에서 발생하는 리소스가 높다것이다. 실상..비지니스로직에서 무한루프 준하는 프로세스가 돌지 않는이상 지연의 90%이상은 DB라고 본다. 뭐 암튼(1 : N) * N 개의 쿼리는. R2DBC에서는....설명 ..은 코드로..보자.fun searchQuestionByFormId(formId:Long): Mono{ return Mono.zip( formRepository.getFormById(formId), // (1) questionRepository.searchQuestionByFormId(formId) // ..