Framework and Tool108 Prometheus - 살펴보기(first steps) - 출처: https://prometheus.io/docs/introduction/first_steps/ - 개요 Prometheus는 monitor 대상의 metric HTTP endpoint를 통해 정보를 긁어모아서 지표를 수집하는 모니터링 플랫폼이다. 이번 글에서는 prometheus 설치 방법과 환경설정 그리고 모니터에 대해 간단하게 살펴본다. prometheus를 다운받아서 설치하고 실행시켜보고 host와 서비스에서 시계열 데이터를 노출하는 exporter를 다운받고 설치해본다. 우선 prometheus 자체적으로 제공하는 host 수준의 다양한 지표들(ex - 메모리 사용, GC 등)을 이용하여 exporter를 별도 연동하지 않고 prometheus 자체적인 exporter로 사용해본다. -.. 2022. 1. 6. Prometheus - 개요 - 출처: https://prometheus.io/docs/introduction/overview/ - Prometheus란 Prometheus는 원래 SoundCloud(https://soundcloud.com/)에서 구축되었던 모니터링 & 알람 오픈소스 시스템이다. Prometheus는 label이라고 불리는 key-value 쌍들과 timestamp 정보와 함께 지표 데이터를 시계열(time series) 데이터형태로 저장하고 수집한다. - 주요 특징 프로메테우스의 주요 특징은 아래와 같다. metric명과 key-value 쌍들에 의해 식별되는 시계열 데이터 형테의 다차원 모델 이런 차원을 활용하는 유용한 Query 언어인 PromQL 제공 분산 저장소에 의존하지 않으므로 각 서버의 자율성 보장 .. 2022. 1. 2. JPA - 객체지향 쿼리 언어 - 네이티브 SQL - 참조: 자바 ORM 표준 JPA 프로그래밍 - fieldResult 명세: https://docs.jboss.org/hibernate/jpa/2.1/api/javax/persistence/FieldResult.html - 네이티브 SQL 여태까지 많은 JPQL 의 기능들을 살펴보았다. 대부분의 표준 SQL 의 문법과 함수들을 지원하지만 특정 상황에서는 어쩔 수 없이 DB 제품군에 따른 특화된 기능을 사용해야할 때가 있다. (ex - 특정 함수, 문법, SQL 힌트, 인라인 뷰, 스토어드 프로시져...) JPA 는 이런 상황에 대비해 SQL 을 직접 사용할 수 있는 기능을 제공하는데 이를 네이티브 SQL 이라고 한다. 네이티브 SQL 을 사용할거면 JPA 를 굳이 사용하지 않아도 될텐데 왜 JPA 의 .. 2021. 8. 27. JPA - 객체지향 쿼리 언어 - QueryDSL 메소드 위임 - 참조: 자바 ORM 표준 JPA 프로그래밍 - 메소드 위임 메소드 위임을 사용하면 쿼리 타입에 검색 조건을 직접 정의할 수 있다. public class MemberExpression { @QueryDelegate(Member.class) public static BooleanExpression isAdult(QMember member) { return member.age.gt(19); } } Member 엔티티가 성인인지를 판단하는 검색조건을 추가해본다고 가정하자. 메소드 위임 기능을 사용하려면 static 메소드를 만들고 @QueryDelegate 어노테이션을 지정한다. 어노테이션 인자에는 해당 기능을 적용할 엔티티를 설정한다. 메소드의 첫번째 파라미터에는 Q-type 을 지정하고 나머지는 필요한.. 2021. 8. 26. JPA - 객체지향 쿼리 언어 - QueryDSL 배치쿼리, 동적쿼리 - 참조: 자바 ORM 표준 JPA 프로그래밍 - 수정, 삭제 배치쿼리 QueryDSL도 수정, 삭제 같은 배치쿼리를 지원한다. JPQL 배치쿼리와 같이 영속성 컨텍스트를 무시하고 데이터베이스에 직접 쿼리를 수행한다. JPQL 배치는 추후에 다루도록 한다. QMember m = new QMember("m"); JPAUpdateClause updateClause = new JPAUpdateClause(em, m); updateClause.where(m.name.startsWith("Name")) .set(m.age, m.age.add(1)) .execute(); JPAQueryFactory query = new JPAQueryFactory(em); List members = query.select(m) ... 2021. 8. 24. JPA - 객체지향 쿼리 언어 - QueryDSL 프로젝션 - 참조: 자바 ORM 표준 JPA 프로그래밍 - 프로젝션 (Tuple) 조회를 하다보면 하나의 엔티티 형태가 아닌 여러 컬럼으로 이루어진 정보를 조회해야 할 때가 있다. 이때에는 JPQL 에서 살펴본것과 같이 Map 과 비슷한 방식의 Tuple 을 사용하면 된다. JPAQueryFactory query = new JPAQueryFactory(em); QMember m = new QMember("m"); List members = query.select(m.name, m.age) .from(m) .where(m.age.gt(10)) .fetch(); members.forEach(member -> { System.out.println("Member's name: " + member.get(m.name) +.. 2021. 8. 21. JPA - 객체지향 쿼리 언어 - QueryDSL Join, 서브쿼리 - 참조: 자바 ORM 표준 JPA 프로그래밍 - Join QueryDSL 에서 Join 은 innerJoin, leftJoin, rightJoin, fullJoin 을 지원한다. 또한 JPQL 의 on 과 fetch 기능도 사용가능하다. join 을 사용할때에는 1번째 파라미터에 조인 대상을, 2번째 파라미터에 alias 를 지정한다. 귀찮지만 Join 예제를 실행해보기 위해 Member 엔티티와 Order 엔티티가 맵핑된 데이터를 만들어주자. Member member1 = new Member(); member1.setName("Name#1"); member1.setAge(10); member1.setAddress( new Address("City#1", "Street#1", "Zipcode#1"));.. 2021. 8. 18. JPA - 객체지향 쿼리 언어 - QueryDSL 검색조건, 페이징, 그룹 - 참조: 자바 ORM 표준 JPA 프로그래밍 - 검색조건 QueryDSL 에서 검색조건 where 절의 기본 사용법을 알아보자. JPAQueryFactory query = new JPAQueryFactory(em); QMember qMember = QMember.member; List members = query.select(qMember) .from(qMember) .where(qMember.age.gt(20) .and(qMember.address.city.eq("City#2"))) .orderBy(qMember.age.desc()) .fetch(); members.forEach(member -> { System.out.println("Member age: " + member.getAge()); }).. 2021. 8. 16. JPA - 객체지향 쿼리 언어 - QueryDSL 시작 - 참조: 자바 ORM 표준 JPA 프로그래밍 - QueryDSL 시작 여태까지 살펴본 Criteria 는 문자열로 작성한 JPQL 과는 다르게 문법 오류를 컴파일에서 잡을 수 있었지만 코드를 살펴보면 직관적이지 않은 부분이 있었다. QueryDSL 은 HQL 을 코드로 작성하기 위한 오픈소스 프로젝트 였지만 현재는 JPA, JDO, JDBC 등 여러 디비 제품군을 지원하고 있다. - 설정 JPA 카테고리 JPA - 객체지향 쿼리 언어 - 개요 글에서 QueryDSL 설정법을 살펴본적이 있지만 다시 한번 살펴보도록 하자. com.querydsl querydsl-apt provided com.querydsl querydsl-jpa ............ com.mysema.maven apt-maven-pl.. 2021. 8. 16. JPA - 객체지향 쿼리 언어 - Criteria 메타 모델 API - 참조: 자바 ORM 표준 JPA 프로그래밍 - 메타모델 API 설정: https://docs.jboss.org/hibernate/orm/5.4/topical/html_single/metamodelgen/MetamodelGenerator.html - 메타 모델 API 객체 지향 쿼리언어에서 JPQL 과 Citeria 를 살펴보았다. select generatedAlias0 from Member as generatedAlias0 where generatedAlias0.age>=20 ...................... CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Member.class); Root m =.. 2021. 8. 13. 이전 1 ··· 3 4 5 6 7 8 9 ··· 11 다음