일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- pinpoint 2.5.3
- formik
- 개발 어렵당.ㅠ
- ㅉ때
- 애자일 싫타
- 월급루팡 일지
- 오블완
- OIDC
- 플루터
- Armeria
- jar 배포
- LPOS
- RedirectService
- R2DBC Paging
- save/update
- hbase 저장공간 설정
- 7879
- pinpoint
- nGinder
- Loki 로그
- 논블록킹 성능
- 핀포인트
- 티스토리챌린지
- jsonMarshaller
- reids
- UnsupportedOperationException
- fake jwt
- 노드간 통신
- intellij
- Ingress Controller Fake
- Today
- Total
목록2024/05 (6)
대머리개발자

해당 기능이 있는 줄은... 역시 뭐든 잘 얻어 걸려야 한다. (잘 검색해야 한다.)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) // ..

데이터 모델링(?)을 하는 과정에서 동일한 데이터를 저장하는 것은 누가 봐도 비효율적이다. 예들들어 설문지 관련 개발한다고 하자. 설문지에 응답의 값을 그대로 저장한다고 하면 1~100명의 응답값이야 크게 문제가 없겠지만 1만명 이상의 응답값을 그대로 저장 한다면……. 그래도 뭐 크게 문제는 안 되겠지만 개발자라면..이것은 찝찝해야 한다. 그렇지 않다면 당신은 개발자가 아닐 확률이… 리팩토링 욕구가.. 아니 애초에 이렇게 설계를 하지 않겠다. 긴 문자열 응답 값을 그대로 저장하기 보단. 별도의 테이블로 관리하고 해당 value의 pk만을 저장한다면 좋겠다. 요것이 바로 정규화 과정이다. 조금더 깨끗한 조금더 우아한 코드에 대한 고민을 실력이 뿜뿜!! 단 테이블이 추가되기 때문에 비지니스 로직이.. 상당히..
몇 명 사용하지 않는 시스템이긴 하지만 ㅋ앞으로의 미래를 위해서 미리미리!!미리뽕 하나의 프로세스에서 부가(추가)적인 작업을 해야하는 경우가 종종있다.아니 많이 있다. ㅎㅎ 메인 프로세스와 별개로 작업하는 경우 병렬적으로 처리한다면 너무나도 효율적!!이다. 예를들어 로그인 과정에서1. "로그인에 대한 이력"2. "마켓팅 여부 확인"3. "로그인에 대한 포인트 적립 처리"4. ...5. ...기본적인 사용자 정보를 Return 하는 부분하고는 연관성이 없기 때문에. 모든 과정을 처리하는 동안 wait 할 필요가 없다.0.05초의 과정이지만 ㅋ.. 티끌ms가 모여서 초로 바뀐다. 어플리케이션 로그인 속도 1초를 줄이기 위한 연간 과제도 있다고 하는데..이런 요소들을 찾아서 병렬로 처리한다면 굳굳!! 로그..

R2DBC는 여전히너무 단순한 형태의 API만 제공하기 때문에 페이징 처리를 위해서는 네이티브로 작성해야 한다. @Query( """ SELECT id, action, amount, regDt FROM Product WHERE userId =:userId ORDER BY regDt ASC LIMIT :pageIndex, :pageSize """ ) fun searchPointByUserId(userId: String, pageIndex: Int, pageSize: Int) : Flux ⭐⭐ 객체를 인자로 받아서 깔끔하게 바인딩 해볼라고 했더니...역시나. ㅋ 뭐 일단 낱개로 넘..