개요 Amazon Athena는 아마존이 제공하는 서버리스 대화식 데이터 쿼리 서비스 상품으로, 최근 대두되는 주제인 데이터 레이크에 있어 아마존의 주력 서비스라고 할 수 있다. 이번 글에서는 Spring Boot 프로젝트에서 MyBatis를 이용하여 Athena에 자유롭게 동적 쿼리를 작성하는 방법을 소개하고자 한다. Athena JDBC 연동 과정에서 발견된 문제점 Athena JDBC 드라이버는 Maven 중앙 저장소에서 제공되지 않아 별도 다운로드하여 관리해야 한다. 버전 관리에서 있어서 상당한 불편을 초래한다.더군다나 Athena JDBC 드라이버는 한 프로젝트 내에서 Amazon SDK 라이브러리와 병행 사용시 충돌이 발생하여 리패키징 작업을 해야 한다. (리패키징 방법은 아래 설명하였다.)A..
개요 MariaDB가 제공하는 갈레라 클러스터는 동기식의 멀티 마스터 레플리케이션 방식으로 모든 노드가 마스터 자격을 가지기 때문에 비동기식에서 발생할 수 있는 일시적 데이터 불일치 문제가 발생하지 않는다. 따라서 애플리케이션을 작성하는 개발자 입장에서는 비즈니스 로직 자체에 집중할 수 있고 시스템 엔지니어 입장에서는 무중단 장애 복구가 직관적이라는 장점이 있다. 본 글에서는 갈레라 클러스터 환경에서 Spring Boot 1.5.x 기반 애플리케이션에서의 DataSource 빈 생성 방법을 설명하고자 한다. 목표 Spring Boot 1.5.x 기반의 프로젝트에 HikariCP 커넥션 풀 라이브러리를 적용한다.mariadb-java-client가 자체 제공하는 쿼리 디버깅 기능을 활성화한다.MariaDB..
목표 데이터베이스 테이블과 맵핑되는 Domain, DAO, Mapper XML 파일을 작성하여 CRUD를 수행할 수 있다. 사전지식 Spring Boot, MyBatis 연동으로 MySQL 데이터베이스 질의하기 Domain 클래스 작성 @NoArgsConstructor @Setter @ToString public class User extends Paginator { @Getter private Long id; @Getter private String name; @Getter private Integer age; @Getter private LocalDateTime createdAt; @Getter private LocalDateTime updatedAt; @Getter private LocalDateT..
목표 MySQL 또는 MariaDB의 레플리케이션(1개 마스터, n개 슬레이브)를 지원하는 하나의 DataSource 빈을 생성한다. 앞서 생성한 DataSource 빈을 관리하는 PlatformTransactionManager 빈을 생성한다. 앞서 생성한 DataSource 빈에 연결하는 MyBatis의 SqlSession 빈을 생성한다. 기대효과 개발자가 직접 각 데이터베이스를 직접 바라보는 로우 레벨의 DataSource 구성을 관리할 필요 없이 평소와 동일하게 비즈니스 로직에 집중할 수 있다. @Service 클래스의 각 메써드 레벨에 명시하는 @Transactional 어노테이션으로 마스터, 슬레이브로 향할 SQL 문을 결정할 수 있다. @Transactional(readOnly = true)이..
- Total
- Today
- Yesterday
- node.js
- Kendo UI
- 구동계
- Eclipse
- 태그를 입력해 주세요.
- maven
- Spring Boot
- bootstrap
- Docker
- jstl
- Spring MVC 3
- 자전거
- 로드 바이크
- java
- jpa
- chrome
- graylog
- CentOS
- MySQL
- 로드바이크
- Tomcat
- JHipster
- 평속
- JavaScript
- spring
- jsp
- kotlin
- DynamoDB
- 알뜰폰
- Kendo UI Web Grid
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |