JaeWon's Devlog
article thumbnail
[DB] CouchBase 설치하기(With. Intel Mac)
BackEnd/DataBase 2022. 11. 13. 17:39

이전 글에서 NoSQL 에 대해 정리해보았고, 이번 글에서는 NoSQL 중 CouchBase 에 대해 간단하게 알아보고 설치하는 방법을 정리해보고자 합니다. [DB] NoSQL DataBase 정리 회사에서 업무 도중 오픈 API 데이터를 긁어와서 저장해두었다가 특정 필드를 확인해서 서비스에 녹이고자 하였습니다. 그러던 중 간단하게 먼저 공부 겸 진행해보라고 하시면서 DB 는 NoSQL 을 사 dev-jwblog.tistory.com 1. CouchBase 정리 1-1. CouchBase 란? - Apache 의 CouchDB 를 기반으로 새롭게 만든 솔루션이다. - 카우치베이스 Server 라는 NoSQL 솔루션이다. - 고성능 NoSQL(비 관계형)으로 Key-Value 형태로 XML/JSON 를 저..

article thumbnail
[DB] NoSQL DataBase 정리
BackEnd/DataBase 2022. 11. 12. 16:13

회사에서 업무 도중 오픈 API 데이터를 긁어와서 저장해두었다가 특정 필드를 확인해서 서비스에 녹이고자 하였습니다. 그러던 중 간단하게 먼저 공부 겸 진행해보라고 하시면서 DB 는 NoSQL 을 사용해보라고 하였습니다. 이번 글에서는 기존 RDB 와 다른 NoSQL 에 대해 정리해보고자 합니다. 1. NoSQL(Not Only SQL)이란? - NoSQL 은 비관계형 데이터베이스를 의미한다. - 관계형 데이터 모델을 지양하며 대량의 분산된 데이터를 저장하고 조회하는데 특화되어있으며, 스키마 없이 사용 가능하거나 느슨한 스키마를 제공한다. - 기존의 관계형 DBMS 가 갖고 있는 특성뿐만 아니라 다른 특성들을 부가적으로 지원한다. 2. NoSQL 특징 - NoSQL DB 는 기존의 관계형 데이터베이스(RD..

article thumbnail
[SpringBoot] @Valid 를 이용한 유효성(Validation) 검사(Feat. @RequestBody, @Validated)
BackEnd/Spring 2022. 10. 29. 12:43

SpringBoot 로 개발을 하다 보면 클라이언트와 통신 중 데이터에 대해서 Validation(검증)이 필요한 경우가 있습니다. 검증 클래스를 별도로 생성하여 검증을 진행할 수 있지만 간단하게 어노테이션을 통해서 JSR 표준을 이용하여 검증도 가능합니다. 이번 글에서는 이 JSR 표준을 이용한 @Valid 어노테이션에 대해서 정리해보고자 합니다. 0. Dependency 추가 Gradle(build.gradle) implementation 'org.springframework.boot:spring-boot-starter-validation' Maven(pom.xml) // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-..

article thumbnail
MyBatis(마이바티스)에서 사용하는 WHERE 1=1 의 위험성 및 예방(Feat. 장애)
BackEnd 2022. 9. 18. 17:56

최근 회사에서 운영서버에 반영하던 도중 큰 장애가 발생할 뻔한 일이 있었습니다. 해당 프로젝트에서는 MyBatis 를 사용하고, Dynamic Query 를 같이 사용하면서 WHERE 절에 모두 if 태그를 사용하여 파라미터를 확인하고 있었습니다.(물론 Java 단에서도 파라미터 Validation Check 를 하고는 있었습니다) 발생한 원인은 반영 소스 중에 분기를 타면서 알맞게 Parameter 를 세팅하여 DB 를 조회하여 해당 데이터들을 삭제하는 로직이었는데, 실수로 if 문 바깥에 DB 를 조회하는 메소드가 선언되었고, Parameter 도 하나도 세팅 안되게 되었습니다. 그로 인해, WHERE 절에서 모두 null 로 세팅이 되면서 전체 조회가 되었고, 해당 데이터들을 삭제하는 로직을 타는 ..

article thumbnail
[Spring] Spring Batch 사용해보기(3) - step(tasklet, chunk)
BackEnd/Spring 2022. 9. 18. 15:43

1. Tasklet - Tasklet 은 하나의 메소드로 구성되어 있는 인터페이스. - Step 안에서 수행될 기능들을 명시. - 실패를 알리기위해 예외를 반환하거나 Throw 할 때까지 execute 를 반복적으로 호출. - Tasklet 은 Step 안에서 단일로 수행도리 커스텀한 기능들을 선언할 때 사용 - Tasklet 은 하나와 Reader & Processor & Writer 한 묶음이 같은 레벨로서, Reader & Processor 와 함께 Tasklet 을 사용할 수 없다. 1-1. Sample(With. Lambda) @Slf4j @EnableBatchProcessing @Configuration @RequiredArgsConstructor public class TaskletJobCo..

article thumbnail
[Spring] Spring Batch 사용해보기(2) - step(skip, retry)
BackEnd/Spring 2022. 9. 14. 15:41

이전 글에서는 간단하게 Spirng Batch 환경을 구성하고 동작하는 것을 확인해보았습니다. 이번 글에서는 Spring Batch 의 기능 중 Step 에 대해 활용하여 사용해보려고 합니다. 0. 다양한 Step 설정 - 해당 테스트를 위해 간단하게 controller 를 선언하여 배치를 수행하도록 추가하겠습니다. @Controller @Slf4j @RequiredArgsConstructor public class TestController { private final Job StepTestJob; private final JobLauncher jobLauncher; @SneakyThrows @GetMapping("/test/{number}") public void test(@PathVariable L..

article thumbnail
[Spring] Spring Batch 사용해보기(1) - 환경구성, 기본구현
BackEnd/Spring 2022. 9. 8. 14:45

최근에 Spring Batch 에 대해 정리를 하였는데, 이를 간단하게 사용하는 것도 정리하고자 합니다. [Spring] Spring Batch 정리 회사에서 업무를 하나씩 배우고 맡게 되면서, Spring Batch 를 사용하고 있는 배치서버를 맡게 되었습니다. 이전 스케줄링 관련 개발을 할 때는 Crontab, Quartz 등을 사용하였는데, 여기서는 Spring Batch dev-jwblog.tistory.com 1. Spring Batch 프로젝트 구성 - 개발 환경은 아래와 같습니다. IDE : Intelli J 2022.02 SpringBoot : 2.7.3 java : JDK 11 DB : MySQL 1-1. 프로젝트 생성 - 인텔리제이를 통해서 프로젝트를 생성합니다. - 프로젝트에서 필요한..

article thumbnail
[Java] 어노테이션(Annotation) 정리
BackEnd/Java 2022. 9. 5. 17:02

스프링으로 개발을 하다 보면 @GetMapping, @RequiredArgsConstructor 등의 다양한 어노테이션을 볼 수 있고, 사용을 하게 된다. 간단하게는 어노테이션을 쓰면 그 어노테이션의 로직(내용)을 컴파일/ 빌드 시 자동으로 추가해주는 것으로 알고 있다. 이렇게 자주 사용하는 어노테이션이지만 동작방식이나 정의되는 방법 등에 대해 정확하게 알고 있다고 생각하지 않아, 좀 더 알아보고 정리해보고자 한다. 1. 어노테이션(Annotation)이란? - 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종. - 보통 @ 기호를 앞에 붙여서 사용.(컴파일러는 컴파일 시 @문자로 시작이 되면 어노테이션으로 판단하여 진행) - JDK 1.5 버전 이상부터 사용 가능. //Example @Req..

article thumbnail
[MySQL] DATEDIFF, TIMESTAMPDIFF 함수를 통한 날짜 차이 계산하기
BackEnd/DataBase 2022. 8. 29. 09:55

1. 서론 - MySQL 에서 날짜 차이를 구하기 위해 DATEDIFF, TIMESTAMPDIFF 함수를 사용합니다. - 간단하게 일(day) 차이를 구할 때는 DATEDIFF 함수를 사용. - 이외에 연(year), 월(month), 시간(hour), 초(second) 등을 지정하여 구할 때는 TIMESTAMPDIFF 함수를 사용. 2. 사용법 2-1. DATEDIFF - 기본적으로 날짜1 - 날짜2 로 계산됩니다. DATEDIFF(날짜1, 날짜2); 2-2. TIMESTAMPDIFF - 기본적으로 날짜2 - 날짜1 로 계산됩니다. TIMESTAMPDIFF(단위, 날짜1, 날짜2); - 단위의 종류로는 아래와 같습니다. SECOND : 초 MINUTE : 분 HOUR : 시간 DAY : 일 WEEK :..

article thumbnail
[MYSQL] IN, EXISTS 절 활용하기
BackEnd/DataBase 2022. 8. 27. 13:07

1. EXISTS 절 - 결과로 TRUE, FALSE 를 반환하는 연산자. - 한 테이블이 다른 테이블과 외래키(FK)와 같은 관계인 경우 유용합니다. - 조건에 해당하는 ROW의 존재 유무 이후 더 수행하지 않는다. - 즉, 테이블 간의 결과를 어떤 값이 존재하는 지만 조회 할때 사용합니다. - 쿼리의 의도롤 고려했을 대 EXISTS 가 IN 에 비해 성능이 좋습니다.(그렇지 않을 경우, JOIN 활용) EXIST - 메인 쿼리 -> EXISTS 쿼리 순서로 진행 -- 기본 구문 SELECT * FROM table WHERE [NOT] EXISTS(subquery); 1-1. 예제 - 아래와 같이 간단하게 데이터를 만들고 확인해보겠습니다. SELECT * FROM STUDENT_TABLE; SELECT..