일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- design pattern
- DDD
- hadoop
- spark
- Hbase
- Spring Batch
- Spring Boot
- 엘라스틱서치
- Domain Driven Design
- docker
- Spring
- elastic search
- scala
- nginx
- SBT
- Storm
- hdfs
- elasticsearch
- Clean Code
- 제주
- intellij
- Angular2
- Gradle
- Spring XD
- 도메인주도설계
- Java
- hibernate
- apache storm
- 스프링 배치
- Linux
- Today
- Total
목록Programming (135)
욱'S 노트
퍼시스턴트 클래스는 비즈니스 요건의 엔티티를 구현한 어플리케이션의 클래스이다. 여기서 퍼시스턴트의 의미는 저장될 수 있는 클래스라는 것을 의미한다. 하이버 네이트는 POJO 프로그래밍 모델이라고 알려진 몇가지 단순한 룰을 따르면 잘 동작한다 하지만 이것을 꼭 지켜야 하는 것은 아니다. 도메인을 모델을 Map과 같은 다른 방식으로 표현할 수도 있다. package eg;import java.util.Set;import java.util.Date; public class Cat { private Long id; // identifier private Date birthdate; private Color color; private char sex; private float weight; private int ..
아래의 그림은 하이버네이트 아키텍처의 고수준의 뷰를 보여준다. 불행하게도 우리는 모든 런타임 아키텍처의 자세한 뷰를 제공할 수 없다. 하이버네이트는 사용하는 방법에 따라 충분히 유연하고, 많은 아키텍처로 나타날 수 있다. 하지만 우리는 특별하게 2가지로 설명을 하겠다. 2.1.1. Minimal architecture 최소한의 아키텍처는 어플리케이션을 가지고 있으며 이 어플리케이션은 자신의 JDBC 연결과 그 연결을 하이버네이트에 제공하는 것을 관리한다. 추가적으로 어플리케이션의 자신을 위한 트랜잭션을 관리한다. 이러한 접근은 Hibernate API에 최소 서브셋을 활용한다. 2.1.2. Comprehensive architecture 포괄적인 아키텍처는 어플리케이션을 JDBC/JTA API와 분리시켜..
SpringApplication클래스는 Spring 어플리케이션 구동하는 편리한 방법을 제공한다. Spring 어플리케이션은 main 메소드로부터 시작할 것이다. 많은 상황에서 단순하게 static한 SpringApplication.run 메소드를 델리게이트할 수 있다. public static void main(String[] args) { SpringApplication.run(MySpringConfiguration.class, args);}. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| ..
매핑은 검색 엔진에게 어떻게 도큐먼트들이 매핑될 수 있는지를 정의하는 단계이다. 필드가 검색 대상이 되는지 어떻게 토큰나이즈 되는지 등이 예이다. 엘라스틱 서치에서는 인덱스는 다른 매핑 타입의 도큐먼트들을 저장할 수 있다. 엘라스틱 서치는 각 매핑 타입을 위한 1:N 매핑을 적용할 수 있다. 명시적인 매핑은 index/type 레벨에서 정의된다. 기본적으로 명시적인 매핑을 정의할 필요는 없다. 새로운 타입이나 새로운 필드가 소개될때 퍼포먼스 저하 없이 자동으로 새성되고 등록되기 때문이다. 기본값이 오버라이드 될 필요가 있을때에만 매핑 정의는 제공되어야만 한다. Mapping types 매핑 타입은 하나의 인덱스내에 도큐먼트들을 논리적인 그룹으로 분리하는 방법이다. 데이터베이스의 테이블로 생각하면 유사하다..
엘라스틱 REST API는 HTTP를 통해 JSON을 이용하여 노출되어 있다. 이번에 볼 리스트된 컨벤션은 REST API를 통해 적용할 수 있다. Multiple Indices 대부분은 API는 다수의 인덱스를 통한 실행을 지원하기 위해 test1,test2,test3과 같은 식으로 인덱스를 기술할 수 있다. 또한 wildcards를 지원해서 test* 라던지 +test*, -test3 등의 문법도 지원한다. 모든 멀티풀 인덱스 API는 다음과 같은 쿼리 파라미터를 지원한다. ignore_unavailable - 특정 인덱스가 사라졌거나 닫혀서 이용가능하지 않을때 무시할 지 여부를 컨트롤 한다. true 나 false로 지정할 수 있다.allow_no_indices - 와일드카드 인덱스가 없다면 실패로..
이제 우리는 기초적인 내용을 잠깐 보았다. 이제 좀더 실제적인 데이터셋과 동작을 해보자. 고객 은행 계좌 정보를 표현한 샘플을 준비하였다. 각 도큐먼트는 다음과 같은 스키마를 가진다. { "account_number": 0, "balance": 16623, "firstname": "Bradshaw", "lastname": "Mckenzie", "age": 29, "gender": "F", "address": "244 Columbus Place", "employer": "Euron", "email": "bradshawmckenzie@euron.com", "city": "Hobucken", "state": "CO"} 이 데이터는 www.json-generator.com/로 부터 생성한 데이터이다. 이 사이트..
엘라스틱 서티는 NRT상의 데이터 조작과 검색 기능을 제공한다. 기본적으로 데이터를 입력/변경/삭제하고 조회 결과에 나타날때까지 1초의 딜레이가 예상된다. 이것은 트랜잭션이 완료되면 즉시 조회가 가능한 SQL 기반의 다른 플랫폼과의 주요한 차이점이다. Indexing/Replacing Documents 하나의 도튜먼트를 인덱싱 해보기 위해 다시 아래와 같은 커맨드를 수행해보자, curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '{ "name": "John Doe"}' 다시 customer 인덱스, external 타입에 ID 1로 도큐먼트가 인덱싱 되었다. 만약 다른 도큐먼트로 위의 커맨드를 다시 실행한다면 엘라스틱 서치는 ID 1에 존재하는 도큐먼..
REST API 이제 우리는 우리의 노드를 가지게 되었고, 실행하였다. 다음은 노드와 어떻게 커뮤니케이션을 하는 것인가이다. 엘라스틱 서치에서는 매우 이해하기 쉽고 파워풀한 REST API를 제공한다. API를 통해서 수행할 수 있는 작업은 다음과 같다. 클러스터, 노드와 인덱스 헬스, 상태, 통계 체크클러스터, 모드 , 인덱스 데이터 및 메타데이터 관리인덱스에 CRUD 수행 및 검색 수행페이징, 소팅, 필터링, 스크립팅, faceting, aggregation등 진화된 검색 수행 Cluster Health 기본적인 헬스 체크부터 시작해보자. 우리는 curl를 사용할 것이다. 하지만 당신이 원한다면 HTTP/REST 콜을 생성하는 다른 툴을 사용해도 좋다. 명령을 수행하기 위해 다른 쉘 윈도우를 열자. ..
Getting Started 엘라스틱 서치는 고성능의 확장가능한 오픈소스 풀텍스트 검색 및 분석 엔진이다. 준실시간으로 대량의 데이터의 빠르게 저장할 수 있고 검색할 수 있고, 분석할 수 있다. 다음은 엘라스틱 서치를 사용할 만한 유스케이스들이다. 당신의 판매할 상품들을 위한 고객들이 검색할 수 있게 온라인 웹스토어를 실행킨다. 이런 경우 엘라스틱 서치에 모든 제품의 카탈로그를 저장하고, 상품들의 자동완성 추천을 할 수 있다.트렌드나 통계, 합산 등을 위해 로그 및 트랜잭션 데이터를 수집하기를 원한다. 이러한 경우 Logstash를 사용할 수 있다. 한번 데이터가 엘라스틱 서치에 저장되면 그것들을 검색하거나 조합할 수 잇다.가격 알림 플랫폼을 실행할 수 있다. 특정 가격 이하로 떨어진 상품을 추천하는 것..
스프링의 새로운 자바기반 설정에서는 @Configuration 어노테이션 클래스와 @Bean 어노테이션 메소드를 지원한다. @Bean 어노테이션은 메소드 초기화를 위해 지정되고, 스프링 IOC 컨테이너에의해 관리되는 새로운 오브젝트를 설정하거나 초기화하기 위해 사용된다. 스프링 XML 설정에 친숙하다면 @Bean 어노테이션은 엘레먼트와 같은 역할을 수행한다고 보면 된다. @Bean 어노테이션은 스프링 모든 @Componet에 나타날 수 있지만, 주로 @Configuration에 빈정의를 위해서 사용된다. @Configuration으로 클래스를 지정했다는 것은 해당 소스의 주요 목적이 빈 정의라는 것을 의미한다. 더욱이 @Configuration 클래스는 같은 클래스의 @Bean 메소드에서 간단하게 호출하..