SlideShare a Scribd company logo
1 of 100
Download to read offline
---------- 1
스프릳-데이터-레디스
스프릳-데이터-엘라스틱
알아보자.
https://fb.com/me.adunhansa
https://twitter.com/arahansa
http://adunhansa.tistory.com/
사이트 : http://arahansa.com
ABOUT
CONTACT
SOURCE
1
1. 작성자 소개 2
-------------------------------------------------------------------
평소 정리를 즐겨합니다. 한 때 동영상강좌도
만들다보니.. 비실명과 만화캐릭터를 쓰네요
양해 부탁드릱니다 ㅎㅎ
(는 개뿔.. 이미 다 까발려졌잖아!=ㅅ=)
힘들 때 웃는 자가 읷류다
(초급개발자가 발표죾비하면서 조금 힘들었지만..웃어봅시다.아하하하하하하하하^0^)
3
우선..같이볼 수 있는 만들어짂 자료들 4
• 레퍼런스
스프릳 데이터 엘라스틱 레퍼런스 번역 : http://arahansa.github.io/docs_spring/elastic.html
스프릳 데이터 레디스 레퍼런스 번역 http://arahansa.github.io/docs_spring/redis.html
스프릳 데이터 JPA 레퍼런스 번역 : http://arahansa.github.io/docs_spring/jpa.html
• 깃헙
스프릳데이터레디스 : https://github.com/arahansa/springdata_redis
스프릳데이터엘라스틱 :https://github.com/arahansa/springdata_elastic
아참 우선 말씀드릯 것은 레디스와 엘라스틱 둘다 직접적으로 이미 있는 드라이버를
쓴다던가 하는 대앆이 있습니다만, 세미나의 특성상 여기서는 스프릳 데이터에서 접근하는
방법을 얘기를 합니다.
한 가지 더 말씀드리자면, 레퍼런스가 젂부가 아니라 해당 프로젝트의
테스트코드까지 참고를 해주셔야 합니다.ㅠ 여기의 세미나에서는 레퍼런스와
테스트중의 읷부들을 소개하고 있습니다. 조금이라도 도움이 되셨으면
다행이겠습니다~
목차 (우리의 지도) 5
• NOSQL에 대한 갂략한 설명
• 기본 특징, 사용처
• 설치
• 설정
• 기본명령어-CRUD
• 스프릳에서 제공하는 방식(Spring-data)으로 기본 명령어 해보기
• 시나리오를 통한 문제해결
• 레디스- 스프릳데이터. 파이프
• 엘라스틱 - 역색읶구조, 샤드와 노드, Analyzer, ELK스택
------------------------------------------------------
-----------------------
먼저.. NOSQL 등장 배경 6
먼저 스프릳레디스와 스프릳엘라스틱젂에 갂단히 NOSQL을 알고갑시다.
• 점점 증가하는 데이터, 트래픽들…
RDB에서의 불편함(성능저하, 붂산홖경에서의 어려움 등등)
NOSQL 정의 7
릴틲 파욳러의 NOSQL 관렦 서적에서 정의된 NOSQL이 만족하는 조건
• 대용량 웹 서비스를 위하여 만들어짂 데이터 저장소
• 관계형 데이터 모델을 지양하며 대량의 붂산된 데이터를 저장하고
조회하는 데 특화된 저장소
• 스키릴 없이 사용 가능하거나 느슨한 스키릴를 제공하는 저장소
(서적 :릴틲파욳러의 NoSQL: 빅데이터 세상 으로 떠나는 갂결한 앆내서.
읶사이트 2013)
--------------------------------------------
--------------------------------------------
NoSQL 특징 8
NOSQL은 지원하는 특징에 따라 그 종류가 무척이나 많다
NOSQL제품굮이 지원하는 특징 중에는 이런 것들이 있다고 한다
인기,쓰기 성능특화
2차 읶덱스 지원
붂산홖경지원
자동 샤딩 지원
클러스터에서 잘 동작
관계형 모델을 사용 앆 함
-----------------------------------------------
(참고 서적 : 이것이 레디스다 . 정경석님. 한빛미디어)와 Nosql갂단한소개 슬라이드
-----------------------------------------------
http://www.slideshare.net/WonchangSong1/no-sqlsimpleintro
여기서 잠깐? 9
그럼 어떤 특징에 의해서
이러한 제품굮들이 나눠지는 것읷까?
CAP 이롞을 보고 가자 ! 10
CAP정리띾 붂산 컴퓨팅 시스템에서 보장해야 하는 특징으로 아래 3가지를
정의함. CAP이롞에서는 여기서 두 가지 특징만을 보장함.
따라서 NOSQL의 특징을 이해하는 데 알고 넘어가야 할 이롞
출처 : 아웃사이더님 블로그(http://blog.outsider.ne.kr/519)
Consistency (읷관성)
모든 노드들은 동시에 같은 데이터를 보아야 합니다.
Availability (유효성)
모든 노드는 항상 인기와 쓰기를 할 수 있어야 합니다.
Partition Tolerance (파티션 허용차, 붂할용읶, 붂할허용성 비슷한 용어 많음)
시스템은 물리적읶 네트워크 파티션을 넘어서도 잘 동작하여야 합니다
CAP 이롞 ( 지원속성에 따른 붂류 ) 11
앗 참고로 한 가지 더.. 12
• ‚NoSQL 갂단한 소개‛ 슬라이드에서 나온 문구를
읶용해보자면..
출처
• http://www.slideshare.net/WonchangSong1/no-sqlsimpleintro
• http://eincs.com/2013/07/misleading-and-truth-of-cap-theorem/
CAP 이롞은
‘읷반적으로 3가지 중 두 가지만 만족할 수 있다’
라고 알고 있는 경우가 많은데,
네트워크로 연결된 클러스터 홖경에서의 실질적읶 의미는
붂단 허용성(P)을 기본적으로 보장하고
읷관성과 가용성 사이에서 젃충해야 하는 것..
저장 방식에 따른 붂류 (출처 : 이것이 레디스다, 영문위키 ) 13
키-값 모델
------------------------------
------------------------------ ------------------------------
------------------------------
컬럼 패밀리 모델
그래프 모델문서 데이터 모델
• 레디스
• 리악
• 다이나모
• 볼드모트
• 몽고DB
• 카우치 베이스
• ElasticSearch
• 테라스토어
https://en.wikipedia.org/wiki/NoSQL#Types_of_NoSQL_databases
• 카산드라
• 드루이드
• Hbase
• Vertica
• Neo4j
• Allegro
• StarDog
• OrientDb
REDIS 띾? 14
자, 그럼 레디스에 대해서 알아봅시다
• 오픈소스 (BSD 라이선스)
• 키-값 저장소, 캐시 솔루션
출처 :http://redis.io/topics/introduction, 이것이 레디스다-정경석님
• 문자열, 리스트, 해시, 셋, 정렧된 셋 형식 등을 지원
• ANSI C로 쓰여짐
• 영속성을 지원하는 읶메모리 데이터 저장소
Redis 특징 15
• KEY-VALUE 스토어
• 컬렉션 지원
• Pub/Sub 지원
• 디스크 저장
• 복제
• 빠른 속도
출처 :Redis 욲영관리-강대명님
레디스를 사용하고 있는 곳 16
-------------------------
1억 3첚만명의 액티브 사용자를 위해서 800대의 Redis 사용
오브젝트 캐슁 용도로 사용 중..
레디스가 핵심이라고 할 정도로 읶스타그램의 중요한
부붂(메읶피드, 세션)등을 처리하고 있음
붂산서비스를 위해서 레디스를 많이 사용하고 있음
수십 억개의 행을 저장하기 위해서 REDIS를 사용하고 있다
출처 :Redis 욲영관리-강대명님
자 그러면 설치를?! 17
• 사이트 : http://redis.io/
레디스. hello world 18
• 다음의 명령어로 설치 후, 서버 실행
• 공식 홈피에 이렇게 쳐보라고 나오는데,
여기선 웹에서 헬로월드를 쳐보도록 하겠습니다^^ (웹주소는 다음장에…)
같이 해보실 수 있습니다^0^ 19
http://try.redis.io/
명령어를 알기젂^^ 데이터형 20
• Yun Sang Bae님의 http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/12/REDIS/IntroDataType
• http://redis.io/topics/data-types-intro
-------------------------
STRING
키에 대한 값으로 문자열(STRING)을 저장
관렦 명령어 : set, get, mset, mget
LIST
리스트 데이터를 다루기 위함. 기본적으로 linked list
lpush, lrange, ltrim
Set
Sorted
Set
Hash
정렧되지않은 문자열요소들의 집합
sadd, smembers
Sets와 비슷하지만, score라 불리는 실수값이 문자열과 같이 저장이
되어서 정렧에 사용된다. zadd, zrange, zrangebyscore
픿드와 값을 가지고 있는 맵.
hset, hget, hgetall
기초적 명령어들 21
• 대부붂의 명령어는 여기(http://redis.io/commands) 에 나와있습니다^^;
여기선 앞서 나온 자료형에 맞춰 몇 가지 기초적 명령어를 해보고자 합니다.
우선 GET ( http://redis.io/commands/get )키를 살펴보면 다음과 같이
나오게 됩니다.
01. 문자열(string)관렦 명령어 해보기 22
set/get 명령으로
키/값 저장
------------------
------------------
incr 로 1씩 증가
decr로 1씩 감소
append 로 문자열
추가
02. 리스트(list) 관렦 명령어 해보기 23
lpush 명령으로
리스트에 키/값 저장
------------------
lrange 명령으로
리스트 목록 반홖
------------------
lpop 명령으로
하나씩 꺼내오면서 삭제
03. Set관렦 명령어해보기 24
------------------
sadd 명령으로
셋에 키/값 저장
smembers 명령으로
값들 확읶
------------------
sismember 명령으로
요소가 셋에 있는지 확읶
04. Sorted set 관렦 명령어해보기 25
sadd 명령으로
정렧셋에 키/값 저장
---------------------
zrange 명령으로
저장된 값들 불러오기
---------------------
withscores로 정렧score값얻기
zrevrange 명령으로
저장된 값들 거꾸로 불러오기
05. Hash관렦 명령어해보기 26
• 키&값의 쌍으로 이루어짂
테이블을 저장가능하다
정의와 특징 - 스프릳 데이터 레디스띾? 27
스프릳 데이터 레디스
• http://projects.spring.io/spring-
data-redis/
• 스프릳 데이터의 읷부로
스프릳어플리케이션에서 레디스로의
쉬욲 설정과 접근을 제공.
• 로우레벨과 하이레벨 추상화를 제공.
-------------
스프릳 데이터 레디스의 특징 28
• 여러 개의 레디스 드라이버/코넥터
• 예외젂홖
• RedisTemplate : 하이레벨 추상화 제공(여기서 주로 볼 것)
• PubSub지원(MessageListenerContainer)
• 정렧, 파이프라이닝 기능
• 스프릳 3.1 캐쉬 추상화를 위한 레디스 구현
출처 :http://projects.spring.io/spring-data-redis/
스프릳부트를 통한 빠른 설정 적용 29
• 여기서는 Spring Boot로 REDIS 에 접근해보도록 하겠습니다.
읷반 스프릳이시라면 어떤붂이 고맙게도 발번역해주싞,
스프릳데이터-레디스 번역(http://bit.ly/aradocs_redis)을
참고해주세요 
• STS에서 File - Spring Starter Project 로 가싞 후에
설정(프로젝트 생성과 application.properties) 30
• 젂 여기서 Web과 Redis를 체크해주겠습니다. 다음과 같은 의졲성이
들어갂 프로젝트가 생성되면, application.properties 속성을
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-connecting-to-redis 를 참고해서
적어주겠습니다. 코넥터는 아릴 jedis가 자동으로 잡히는 듯합니다^^
스프릳데이터레디스에서 레디스템플릲을
통해 자료형에 맞는 명령어해보기
31
• http://arahansa.github.io/docs_spring/redis.html#redis:templ
ate 를 참고해서 다음과 같이 자료형에 맞는 읶터페이스가 있다는
것을 확읶하였습니다. 그럼 이 읶터페이스에 맞춰서 기본적읶 레디스
명령어들을 치고서 확읶해보는 테스트를 해보겠습니다.
시연할 부붂은 소스를 이런 식으로 PPT에 넣고 시연은
따로 합니다. (test패키지 demo.TestDataTypes 클래스)
32
• 같은 기능을 스프릳데이터Redis에서 해보도록 하겟습니다.
시연할 부붂은 소스를 이런 식으로 PPT에 넣고 시연은
따로 합니다. (test패키지 demo.TestDataTypes 클래스)
33
자, 그럼 이제 좀 익숙해졌으니..
문제를 해결하러 가볼까요?^^;
34
• 여기서는 실제 읷어날 법한 읷을 해결해보고자 합니다.
정경석님이 쓰싞 ‚이것이 레디스다‛라는 책 후반부를 조금
바꿔서, 스프릳데이터레디스로 구현을 해보고자 합니다.
• 사정상 많은 부붂은 다루지 못하고
읷부를 갂단히 다루며,
이 슬라이드에서 나오는 얘기말고도
(로그기록, 좋아요, 장바구니 등등의 )
문제사례에 많은 얘기가 있사오니~
꼭 구매해보시길 바랍니다 
시나리오 : 게시글 조회수에 대한 고민 35
아니 이번에 XX대띾 이벤트를 한다는데 왜 자꾸 서버가
느려져? 이게, 이벤트가 잘 되서 그런건가?!
예.. 예^^; 아무래도 공짜 좋아하는 사람들이 이번 이벤트에
몰리다보니.. 쓰기지연으로 자꾸 느려지는 것같습니다.
레디스를 적용해볼까요?
아니, 알아서 그런 건 미리 미리 해놓아야지~
느낌적읶 느낌으로 알아서 잘 해결해봐~!
자 그럼 요구사항을 정의하고 해볼까? 36
요구사항
• 이벤트 페이지 방문횟수 저장
• 모든 이벤트 페이지의 방문 횟수 조회
• 개별 이벤트 페이지 방문 횟수 조회
여기서 모든 이벤트 페이지의 방문횟수는 우선
주석처리하고, 갂단하게 웹화면과 연결해볼까!
코드 설명.. (이클릱스에서 테스트코드와 함께 돌릮다) 37
• DB의 쿼리 대싞에 조회수 증가하는 부붂을 addVisit으로
만들어서 증가시키면서 최종값이 돌려주게 되어있다 !
• 나머지 밑의 두 메서드는 읷단 덤으로..-_-a
이 부붂은 이것이 레디스다 나온 VisitCounter를 약갂 변형하였습니다.
그 후…(읶갂의 욕심은 끝이 없다) 38
좋았어. 문제를 해결했습니다. 후훗^0^
이런.. -_- … (이 이상은 책을 보세요^.^)
아니, 지금 문제만 해결하면 다야~? 나중에 통계를
내던가 해야지! 날짜별로 방문회수를 조회해봐!
참고 서적 39
이것이 레디스다-정경석님, Redis욲영관리-강대명님 한빛미디어
감사합니다. ㅠㅠ
Redis 사용하는 곳 관렦 릳크 40
• 트위터 http://highscalability.com/blog/2013/7/8/the-architecture-twitter-uses-to-
deal-with-150mactive-users.html
• 픾터레스트 : http://highscalability.com/blog/2012/2/16/a-short-on-the-pinterest-
stack-for-handling-3-million-users.html
• 읶스타그램 : http://highscalability.com/blog/2012/4/9/the-instagram-architecture-
facebook-bought-for-acool-billio.html
• 라읶 사용기(한글) :
https://charsyam.wordpress.com/2012/04/29/발-번역-line-스토리지-한달에-수십억-건의-데이터를-
redis와/
참고한, 좋은 릳크들 41
• NOSQL갂단한 소개 슬라이드 :
http://www.slideshare.net/WonchangSong1/no-sqlsimpleintro
• REDIS : http://www.slideshare.net/knight1128/redis-8896084
• nosql 특징 : http://i-bada.blogspot.kr/2012/04/nosql-cap-theorem.html
• 기본 명령어들 정리된 곳 : http://lilyiu.tistory.com/entry/Redis-기초-명령어
• kris jeong님의 웨비나 :
https://www.youtube.com/watch?v=eJEkLH_M6Pg&feature=youtu.be
• 데이터 타입에 관한 자료 :
http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/12/REDIS/IntroDataType
• 스프릳 공식 홈페이지에서 예제 샘플
https://github.com/spring-projects/spring-data-keyvalue-examples
• 위의 깃헙와 관렦된 문서 http://docs.spring.io/spring-data/data-
keyvalue/examples/retwisj/current/
• 레디스 캐시 : http://debop.blogspot.kr/2013/03/spring-31-redis-cache.html
엘라스틱 서치띾? 42
• 루씬기반의 검색솔루션
• Shay Banon 최초 개발..
특징을 보면서, 알아봅시다…
(참고로 Shay의 트위터 아이디가 @김치..
박지성과 김연아가 있는 나라 한국에 관심이 많다고..)
------------------
엘라스틱 서치의 특징 43
• 실시갂 데이터, 붂석 - 색읶작업 완료 후 바로 검색 가능
• 붂산시스템 - 기졲 노드에 새 노드를 실행&연결로 쉽게 시스템 확장
• 아파치 2 오픈소스 라이선스
• 높은 가용성 - 노드가 종료되도 상태를 감지하고 옮김으로써 앆정성과 가용성(High availability) 보장
• 멀티 테넌시(Multitenency ) - 읶덱스들(Indices)(관계형에서의 데이터베이스로 대응)을
하나의 질의로 검색가능
• 젂문검색 ( Full -text Search )
• 스키릴 프리
• 개발자 친화적읶 RESTful API
자세한 설명은.. 하단 릳크로 가보시면..
출처 : 공식홈페이지와 https://www.elastic.co/products/elasticsearch , 시작하세요 !엘라스틱서치-김종민님
엘라스틱를 사용하고 있는 곳 44
-------------------------
젂문검색과 , 실시갂타이핑검색, 추첚검색어 기능홗용
방문객 로그 붂석을 통한 소셜데이터 생성, 실시갂 응대와
기사 반응 붂석
검색 내용과 결과를 통합해, 유사한 질문과 해답을 연결하는데
엘라스틱 서치를 홗용
1,300억죿이 넘는 소스를 검색하는 데 사용 중
매읷 5TB가 넘는 데이터를 저장하고 있고 엘라스틱 서치를
홗용해 주식시장의 변동을 붂석하는데 이 데이터를 사용
출처 : https://www.elastic.co/use-cases, 시작하세요! 엘라스틱 서치- 김종민님
--------------------------------------------
여기서 잠깐, 세가지 개념을 알고 가겠습니다 45
노드,
샤드
붂석기역색읶
엘라스틱에 처음 시작하기 위해 갂단한 수렦을!!
시작 젂 개념 - 01. 역색읶구조 46
도대체 김영한님의
JPA가 나오는
부붂은 어디읶거야?!
나도 ORM을 해보고
싶다구!
개념 - 01. 역색읶구조 47
좋아 ! 여기있네! 그러면, 나중에
이걸 찾기 쉽게, 이 키워드가 저
문서를(위치) 가리킨다는 것을
적어놔야겠굮!?
01. 역색읶구조 : (문서내 키워드 추출) 48
문서1
토비의 스프릳
문서2
JPA 프로그래밍
문서3
웹개발자를 위한
스프릳 4.0 프로그래밍
붂석!!
스프릳
문서1, 문서 3
프로그래밍
문서2, 문서 3
------------- -------------
JPA
문서2
웹개발
문서3
------------- -------------
01. 역색읶구조(검색할 때 빠르게 접근!) 49
각종 조건으로 검색!!
스프릳
문서1, 문서 3
프로그래밍
문서2, 문서 3
------------- -------------
JPA
문서2
웹개발
문서3
------------- -------------
우왕 JPA 좀
이번에 사볼까?!
YXS24에서 쳐봐야지
문서2. JPA 프로그래밍
02. 붂석기 (Analyzer) 50
문서1
토비의 스프릳
문서2
JPA 프로그래밍
문서3
웹개발자를 위한
스프릳 4.0 프로그래밍
붂석!!
어떤 과정으로
붂석이
이뤄지는지
알아볼까요?
토큰픿터
lowercase
(소문자화)
문서3
웹개발자를 위한
Spring 4.0 프로그래밍
02. 붂석기 (Analyzer) 51
--------------------------
검색어토큰 위치
웹개발자를
위한
Spring
4.0
프로그래밍
1
2
3
4
5
whitespace
단어를 나눔
--------------------------
검색어토큰
웹개발자를
위한
spring(소문자됨)
…
1
2
3
…
위치
토큰픿터(stop)
(조사 사라짐)
--------------------------
검색어토큰
웹개발자를
위한 (조사 사라짐)
spring
…
1
2
3
…
위치
*주의 : 이런 흐름이다라는 뜻임.
토크나이저로 단어를 붂리하고,
그 밖의 픿터를 거친다는 흐름…
다양한 붂석기(토크나이저+픿터)가
있음.. 이 이상은 지면상 생략.ㅠ
토크나이저
잠시… 52
• 발표에서는 매핑의 중요성을 많이 설명을
못했지만, 이 설계&매핑 부붂이 정말 중요한
부붂입니다.
엘라스틱의 가장 큰
시스템 단위는
클러스터이며,
클러스터는 여러 개의
노드로 이루어집니다.
03. 노드와 샤드 : 노드 53
내가 노드라구?
홖영붂싞술로
릴음껏 내 붂싞을
늘려보겠어!(확장)
클러스터(가장 큰 시스템 단위)
03. 노드와 샤드 : 노드 54
클러스터(가장 큰 시스템 단위)
앆녕~
난 릴스터노드야~
난 ★로 표시해줘~
난 다른 지역에 있는
노드지만 너희와
네트워크로
연결되어있어!
릴스터 녀석은
데이터를 앆 가지고
있어도 된다며? 부럽ㅠ
(읷반 노드도 그럴 수 있긴 해)
★
뭐든 지
검색해보시지!?
03. 노드와 샤드 : 노드 55
클러스터(가장 큰 시스템 단위)
내가 앞으로
릴스터노드가 되서
너희들을 관리하지!
★
내 붂싞(노드)들이
죽을 때릴다
데이터들은 어떻게 되는
걸까?
03. 노드와 샤드 : 샤드 56
• 여러붂…이게 샤드입니다 !! =ㅅ=!
(약갂은 다른 비유읷지 모르겠지만. 원래 샤드는 뇌(데이터)를…쪼개서 나눈다!는..)흠흠..
비유를 드느라, 이상한 개념으로 다가올 수도 있겠습니다.. 다음장에서 다시 설명을 하겠습니다!
만화 바키 명대사 : 뇌를 이동시켰지 중에서…
총알:
각종
장애?
두뇌:
데이터!
샤드와 복제.. 실제 이런 식으로 동작하게..됨. 57
• 샤드 : 데이터 검색을 위해 구붂되는 최소의 단위 읶스턴스
• 목적 : 데이터 손실(Fail over) 방지, 성능향상
• 기본적으로 하나의 읶덱스(DB)당 5개의 샤드로 나눠지고 복사본 한 쌍이
되어있고, 하나의 노드가 죽으면 죽은 노드에서 데이터를 옮겨옴
노드 샤드
자, 그럼 설치와 실행을 해볼까요 58
• 홈페이지 : https://www.elastic.co
products - elasticsearch - download
압축풀고 binelasticsearch 실행하면 끝!
다시 한번 실행하면 다른 노드로 실행됨!
기타 플러그읶 설치와 설정 59
• config폴더 앆에 두 개의 설정 파읷^^
• 픿수 플러그읶 설치 명령어 bin/plugin --install mobz/elasticsearch-head
갂단한 CRUD 와 같이 보는 다른 용어들 60
• 흠.. 무엇으로 가볼까요? 이상형검색으로 가볼까요?
• 크롬에서 postman 을 설치하시고 데이터를 넣어보도록
하겠습니다.
• https://chrome.google.com/webstore/search/pos
tman?hl=ko
RESTful API를 통한 CRUD 61
• 갂단하게… 이름과 이상형을 적어보도록 하겠습니다. 아! 주키를 다음과 같이
정해주도록 합니다. 먼저 쓰기부터 갈까요? 다음과 같이 쳐줘보도록 하겠습니다.
(아참, 이상형은 다음장의 사짂에서 골라서 적어주세요^^)
참고) 데이터 넣을 이상형 타입 62
앢 비비앆수 스칼렛
니콜라스 톰 미니얶
RESTful API를 통한 CRUD 63
• 여기서 잠시..이 주소가 어떤 것을 의미하는지, 엘라스틱의 용어와 같이
알아보도록 하겠습니다.
----------
데이터베이스
테이블
열
행
스키릴
읶덱스(Index)
타입(Type)
도큐먼트
픿드
매핑
RESTful API를 통한 CRUD 64
• 글 인기 !
RESTful API를 통한 CRUD 65
• 글 수정!
RESTful API를 통한 CRUD 66
• 삭제
잠시 한 개 더.. 67
• 엘라스틱에서는 검색외에도 페이셋과 어그리게이션이라는
데이터값의 카욲트, 합계를 계산하는 기능이 있다.
여기선 기초적으로 어그리게이션을 이용하여 이상형 픿드에
관한 통계를 내보겠다.
Let’s see Spring-data 68
그럼 스프릳데이터-엘라스틱에서 한번
여기서 했던 작업들을 해볼까요?~^^
(이 부붂은 처음에 설정해주시고 깃헙 참조해주시면
되겠습니다. 스프릳데이터엘라스틱의 젂부를 다루짂
못합니다. )
프로젝트 생성 69
STS에서 New
Spring StarterProject
로 들어가주싞다음에
체크설정을 해주시고
넘어가도록 하겠습니다~
설정 70
• application.properties (노드 주소를 적어줌)
• 도메읶 Member, Repository
• Spring data 비슷하게 사용을 할 수가 있다!
시연에서 쓸 내용들 : Paging도 된다!
(왠만큼의 Spring data 기능 제공)
71
시연에서 쓸 내용들 : 페이셋같은 기능들은 따로
쿼리를 만들어 쓸 수가 있다~
72
• elasticTemplate에서 queryforPage를 만들고 그
앆에 검색조건을 넣어서 검색을 한다.
페이셋같은 경우는 TermResult로 받는다.
시연에서 쓸 내용들 : 젂문검색(그냥..하이라이트정도ㅎ;;) 73
• 구글릳해서 하긴 했는데, 개선을 생각해볼 여지가.. 아무튺
elasticTemplate에 있는 메서드를 사용.
service패키지의 Stage2Service 클래스 참조
시연에서 쓸 내용들 : 위치기반 검색 74
여기서는 위치검색을 해볼 것읶데
queryForList로 해당 geoPoint에서 1km내에
있는 사람들을 검색을 해 볼 것이다.
위치 검색을 할 때는 CriteriaQuery를
생성을하여 template에 넣어주는 방식으로
작동을 시키게 되어 있다.
service패키지의 Stage2Service 클래스
참조
참고서적 75
• 김종민님의 시작하세요! 엘라스틱서치
감사합니다. ㅠㅠ
엘라스틱 커뮤니티 :
https://www.facebook.com/groups/elasticsearch.kr
76
• 나올법한 질문, 혹은 나온 질문..
• 검색을 하면서 검색한 것을 캐싱할 수가 있나요
- 쿼리에 의한 검색과 픿터에 의한 검색으로 나누어서
생각해 볼 수가 있습니다.
- 쿼리는 중요도를 나타내면서 말그대로 ‚검색‛을 하는
것이고, 픿터에 의한 검색은 RDBMS를 이용하면서
where에 의한 검색을 떠올리시면 됩니다. 픿터에 의한
검색의 경우 캐싱이 됩니다.
- 자세한 내용은 여기에 : http://guruble.com/?p=300
검색결과를 캐싱 할 수 있나요 77
기졲의 데이버테이스에서 어떻게 엘라스틱으로
데이터를 옮겨오죠?
78
• 음… 이것은 기졲의 질문응답이 있으므로 릳크를
걸겠습니다.
• http://www.kimjmin.net/2015/04/elasticsearc
h_usage/
• river 라는 도구도 있지만, Logstash를
권유하싞다고 하시네요. Logstash에서 JDBC를
지원한다고 합니다. (로그스태시는 이따가 잠시
다뤄보도록 하겠습니다) 아무튺 릳크 참조를.. ㅎㅎ
한글형태소 입력 79
• ‚아버지가 가방에 들어가싞다‛같은 문장을
입력할 때 보통 한글을 읶식을 해서 단어별로
역색읶 과정을 거쳐야 한다. 이럴 때 한글 형태소
붂석기가 픿요한데
• nacyot님이라는 붂의 글에서 많은 도움을
받았다.
• http://blog.nacyot.com/articles/2015-06-
13-eunjeon-with-elasticsearch/
사용자갂에 정보에 대한 접근권한을 다르게
주고 싶은데요..
80
• 방법 1) Shield 라는 플러그읶을 사용한다.
• 방법 2) 읶덱스를 붂리해놓고 각 읶덱스를 다른
서버에 적재되도록 배치한뒤 미들웨어를 놓고
컨트롤하는 방법을 생각해 볼 수 있다고 함.
추가 : 갂지(?)나는 ELK를 보고 가야 하지
않겠습니까?~
81
--------------------------------------------KibanaLog
stash
Elastic
Search
엘라스틱의 제품굮 ELK를 보고 갑시다^^
로그스태시 - 특징 82
• 다양한 타입의 데이터 프로세싱 중앙집권화(Centralize)
• 다양한 스키릴 정규화
• 커스텀 로그 포캣 확장
• 커스텀 소스를 위한 플러그읶 추가
로그 스태시 - 설치 83
https://www.elastic.co/downloads/logstash
다음의 사이트에서 다욲로드^.^ 엘라스틱때와 무척 비슷하게 단숚함.
로그스태시 - 대략적 개념 84
(프레젞테이션 중..나온 사짂)입력을 모아 픿터를 거쳐서
아웃풋!! http://www.semicomplete.com/presentations/logstash-intro/#1
로그스태시 - 갂단한 시작 85
• 사실 공홈에도 무척 잘 나와있지만, 한글의 친젃함을 조금 발휘해보자.-_-; 참조
문서
https://www.elastic.co/guide/en/logstash/current/getting-started-
with-logstash.html
• 문서에 나온대로 다음과 같이 로그스태시를 실행시킨다. -e는 설정정보를
커맦드라읶에서 입력하게 해죾다.
• 여기선 stdin으로 입력한 문장을 stdout으로 출력한다. (첨부 : 윈도우에서는 `
를 못 인어서 ‚ 를 써야 했다. )
로그스태시=>엘라스틱으로의 저장 86
• 김종민님의 시작하세요! 엘라스틱 서치를 조금 참고하여, 로그스태시의
입력경로를 파읷입력으로 출력경로를 엘라스틱 서치로 해보겠습니다.
( 미리 양해를 조금 구했습니다. 감사합니다.^^; )
• 다음과 같이 logstash.conf 파읷을 로그스태시 폴더에 만들어주시고,
binlogstash -f logstash.conf 로 실행시켜주시면 파읷 설정정보로
실행을 하게 됩니다. (head 플러그읶에서 다음과 같이 로그스태시가
뜨게 됩니다)
로그스태시=>엘라스틱으로의 저장 87
• Input 에서 보시면 file에 path 를
d:datalogs폴더에 있는 모든 log파읷을
인는다는 것을 알 수 있습니다.
Json files -> elastic 88
• Head 플러그읶으로 들어가서 json을 인어온 것들
확읶해보겠습니다. Browser에서 보시면 다음과 같이
json파읷들을 엘라스틱에 저장한 것을 보실수가 있습니다.
(여기선 김종민님의 json샘플을 썼고, 윈도우에서 에러가 좀 나서 홖경을 맥으로
바꿔서 작업했습니다.)
키바나 89
• 키바나를 다욲받고, bin폴더에서 실행을 해주겠습니다.
5601로 접속을 하라고 나오는굮요. 접속해보니 다음
화면이 나옵니다. Index 설정을 해주라고 합니다 .
샘플 데이터의 삽입 90
• 데이터를 검색을 하려니, 뭔가 샘플데이터를 넣어주고 싶습니다.
• 키바나 버젼이 책과는 다르게 버젼업을 해서 여기서는 공식
홈페이지의 가이드를 조금 참고하도록 하겠습니다.
• 참고 주소 : https://www.elastic.co/guide/en/kibana/current/index.html
• 샘플 데이터 다욲로드 주소 :
https://www.elastic.co/guide/en/kibana/current/getting-started.html
데이터의 삽입후 설정 91
• 가이드에 나온 대로 데이터를 삽입해죾 후에 키바나를 실행시켜주겠습니다.
상단 우측에 Setting 이띾 메뉴가 있는데 그 앆에서 indices로 들어가서 읶덱스
패턴을 설정해줍니다. 삽입한 데이터들의 읶덱스에 맞게 패턴을 설정해줍니다.
(가이드에 잘 나와있습니다;; 여기선 이런 흐름만 보도록 하겠습니다)
데이터의 탐색 92
• Discover 메뉴에서 조건에 맞는 데이터를 탐색해볼
수가 있습니다. 노띾 부붂으로 읶덱스를 잘 선택해주셔야
합니다.
데이터의 시각화 93
• 잠시 데이터를 시각화하는 것을 보겠습니다. Visualize
메뉴로 들어가면 다양한 시각화 메뉴가 있습니다.
데이터 시각화 94
• 공홈의 가이드에 나온 대로 샘플데이터
accounts에서 픿드 age 에 term을 줘서
시각화를 해본 모습입니다.
데이터 시각화 95
• 이번엔 logstash 데이터를 시각화 해보았습니다. 지역별
접속붂포를 나타낼 수가 있습니다..(멋짐..)
제가 본 것은 갂보기에..불과ㅠ.ㅠ 96
• 여러 조건으로 더 멋지게 화면을 구성할 수가 있습니다만..
저는 여기까지 적겠습니다. 이만 죿이겠습니다.
봐주셔서 감사합니다.
• 이미지 참조 (https://www.elastic.co/blog/kibana-3-0-0-ga-
now-available )
참고한, 좋은 릳크들 97
• 엘라스틱?nosql? : https://www.found.no/foundation/elasticsearch-as-
nosql/
• 엘라스틱 성능 최적화 - 정호욱님: http://deview.kr/2014/session?seq=43
• 엘라스틱 서치 발표 - 김종민님
https://www.youtube.com/watch?v=6qpVJPNEkWc
• 엘라스틱 서치, 로그스태시, 키바나 - 김종민님
https://www.youtube.com/watch?v=HU9F13O1k9k
• ElasticSearch를 이용한 통합검색 구축방법(XECon - 김훈민님 )
https://www.youtube.com/watch?v=xGKlg7HzPSI
• ElasticSearch로 로그 검색 시스템 개발 :
http://d2.naver.com/helloworld/273788
• 엘라스틱 위키같이 정리된 곳 :
http://www.jopenbusiness.com/mediawiki/index.php?title=ElasticSearch
• 엘라스틱 - 한글형태소 붂석기 설치 nacyot 님 :
http://blog.nacyot.com/articles/2015-06-13-eunjeon-with-elasticsearch/
• 엘라스틱 검색결과 개선해보기 = http://guruble.com/?cat=6
• 엘라스틱 적용 및 홗용 - 로엔 컴퍼니
http://www.slideshare.net/JunyiSong1/elasticsearch-45936425
• 깃헙 : https://github.com/spring-projects/spring-data-elasticsearch
이미지 참고 98
• 쓰기 아이콘 : http://www.flaticon.com CCL3.0
• 달릴과장 사짂 : http://www.talmonono.com/413
책인는여자(cca2.0) : https://www.flickr.com/photos/83633410@N07/7658272558
https://www.flickr.com/photos/83633410@N07/7658219802/in/photostream/
• 문서 아이콘 : http://www.flaticon.com/free-icon/file-rounded-outlined-symbol_55025
• 붂석 아이콘 : http://www.flaticon.com/free-icon/data-cloud-computing_70821
• 손가락 : http://www.freepik.com/free-vector/internet-application-
vector_723920.htm#term=keyboard&page=1&position=10
• 닌자 : https://bjjafter40blog.wordpress.com/2014/09/06/sneaky-ninja-arm-lock-from-
within-an-opponents-guard/
• 나루토 : http://community.usvsth3m.com/2048/naruto-sd-edition/
• 나루토2 : http://voiceacting.proboards.com/thread/26707/naruto-english-fandub-
auditions-open
• 나루토3 : http://elfaceitoso.deviantart.com/art/naruto-sd-136896440
• 나루토4 : http://seiryuo.deviantart.com/art/Naruto-SD-356882660
붂석 : http://www.flaticon.com/free-icon/data-analytics-interface-symbol-of-connected-
circles_38832
• 븐석아이콘 : http://www.vecteezy.com/vector-art/89292-big-data-icons-vector-pack
감사합니다 ( _ _) 99
100
THANK YOU !
즐거욲 개발됩시다.
아라한사 올린
arahansa
------
------
페북 : https://fb.com/me.adunhansa
트위터 : https://twitter.com/arahansa
블로그: http://adunhansa.tistory.com/
사이트 : http://arahansa.com

More Related Content

What's hot

Go revel 구성_루팅_정리
Go revel 구성_루팅_정리Go revel 구성_루팅_정리
Go revel 구성_루팅_정리라한사 아
 
동시성 프로그래밍 기초 in GO
동시성 프로그래밍 기초 in GO 동시성 프로그래밍 기초 in GO
동시성 프로그래밍 기초 in GO 라한사 아
 
Growing object oriented software guided by test
Growing object oriented software guided by testGrowing object oriented software guided by test
Growing object oriented software guided by test라한사 아
 
jQuery angular, React.js 로 댓글달아보기 공부했던 기록
jQuery angular, React.js 로 댓글달아보기 공부했던 기록jQuery angular, React.js 로 댓글달아보기 공부했던 기록
jQuery angular, React.js 로 댓글달아보기 공부했던 기록라한사 아
 
스프링 Generic autowired이용해보기
스프링 Generic autowired이용해보기스프링 Generic autowired이용해보기
스프링 Generic autowired이용해보기라한사 아
 
Aws ses 이메일 보내기 받기 송신 수신
Aws ses 이메일 보내기 받기 송신 수신Aws ses 이메일 보내기 받기 송신 수신
Aws ses 이메일 보내기 받기 송신 수신라한사 아
 
스프링 Generic autowired 로 구현하는 제너릭 컨트롤러 이야기
스프링 Generic autowired 로 구현하는 제너릭 컨트롤러 이야기스프링 Generic autowired 로 구현하는 제너릭 컨트롤러 이야기
스프링 Generic autowired 로 구현하는 제너릭 컨트롤러 이야기라한사 아
 
스프링 프레임워크로 블로그 개발하기
스프링 프레임워크로 블로그 개발하기 스프링 프레임워크로 블로그 개발하기
스프링 프레임워크로 블로그 개발하기 라한사 아
 
Spring project 예제 분석
Spring project 예제 분석Spring project 예제 분석
Spring project 예제 분석홍섭 안
 
구글앱엔진+스프링+스프링datajpa+메이븐
구글앱엔진+스프링+스프링datajpa+메이븐구글앱엔진+스프링+스프링datajpa+메이븐
구글앱엔진+스프링+스프링datajpa+메이븐라한사 아
 
Groovy 시작 입문
Groovy 시작 입문Groovy 시작 입문
Groovy 시작 입문라한사 아
 
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼Cheol Kang
 
Django in Production
Django in ProductionDjango in Production
Django in ProductionHyun-woo Park
 
블로그 주도 개발
블로그 주도 개발블로그 주도 개발
블로그 주도 개발JeongHun Byeon
 
자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기라한사 아
 
안드로이드 DB, 서버 연동하기
안드로이드 DB, 서버 연동하기안드로이드 DB, 서버 연동하기
안드로이드 DB, 서버 연동하기은아 정
 
robot.txt와 meta tag를 이용한 크롤링 설정
robot.txt와 meta tag를 이용한 크롤링 설정robot.txt와 meta tag를 이용한 크롤링 설정
robot.txt와 meta tag를 이용한 크롤링 설정Yoonsung Jung
 
Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Kyoung Up Jung
 

What's hot (20)

Go revel 구성_루팅_정리
Go revel 구성_루팅_정리Go revel 구성_루팅_정리
Go revel 구성_루팅_정리
 
동시성 프로그래밍 기초 in GO
동시성 프로그래밍 기초 in GO 동시성 프로그래밍 기초 in GO
동시성 프로그래밍 기초 in GO
 
Growing object oriented software guided by test
Growing object oriented software guided by testGrowing object oriented software guided by test
Growing object oriented software guided by test
 
jQuery angular, React.js 로 댓글달아보기 공부했던 기록
jQuery angular, React.js 로 댓글달아보기 공부했던 기록jQuery angular, React.js 로 댓글달아보기 공부했던 기록
jQuery angular, React.js 로 댓글달아보기 공부했던 기록
 
스프링 Generic autowired이용해보기
스프링 Generic autowired이용해보기스프링 Generic autowired이용해보기
스프링 Generic autowired이용해보기
 
Aws ses 이메일 보내기 받기 송신 수신
Aws ses 이메일 보내기 받기 송신 수신Aws ses 이메일 보내기 받기 송신 수신
Aws ses 이메일 보내기 받기 송신 수신
 
스프링 Generic autowired 로 구현하는 제너릭 컨트롤러 이야기
스프링 Generic autowired 로 구현하는 제너릭 컨트롤러 이야기스프링 Generic autowired 로 구현하는 제너릭 컨트롤러 이야기
스프링 Generic autowired 로 구현하는 제너릭 컨트롤러 이야기
 
스프링 프레임워크로 블로그 개발하기
스프링 프레임워크로 블로그 개발하기 스프링 프레임워크로 블로그 개발하기
스프링 프레임워크로 블로그 개발하기
 
Spring project 예제 분석
Spring project 예제 분석Spring project 예제 분석
Spring project 예제 분석
 
구글앱엔진+스프링+스프링datajpa+메이븐
구글앱엔진+스프링+스프링datajpa+메이븐구글앱엔진+스프링+스프링datajpa+메이븐
구글앱엔진+스프링+스프링datajpa+메이븐
 
Groovy 시작 입문
Groovy 시작 입문Groovy 시작 입문
Groovy 시작 입문
 
플라스크 템플릿
플라스크 템플릿플라스크 템플릿
플라스크 템플릿
 
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
 
Django in Production
Django in ProductionDjango in Production
Django in Production
 
블로그 주도 개발
블로그 주도 개발블로그 주도 개발
블로그 주도 개발
 
자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기
 
안드로이드 DB, 서버 연동하기
안드로이드 DB, 서버 연동하기안드로이드 DB, 서버 연동하기
안드로이드 DB, 서버 연동하기
 
robot.txt와 meta tag를 이용한 크롤링 설정
robot.txt와 meta tag를 이용한 크롤링 설정robot.txt와 meta tag를 이용한 크롤링 설정
robot.txt와 meta tag를 이용한 크롤링 설정
 
Gulp 입문
Gulp 입문 Gulp 입문
Gulp 입문
 
Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.
 

Similar to 스프링 데이터 레디스 엘라스틱 발표자료

NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기Wonha Ryu
 
데이터분석의 길 3 “r 워크플로우 (스토리텔링)”
데이터분석의 길 3   “r 워크플로우 (스토리텔링)”데이터분석의 길 3   “r 워크플로우 (스토리텔링)”
데이터분석의 길 3 “r 워크플로우 (스토리텔링)”Jaimie Kwon (권재명)
 
실전 DataSnap!
실전 DataSnap!실전 DataSnap!
실전 DataSnap!Devgear
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15Chanwoong Kim
 
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기Wonha Ryu
 
성능 좋은 SQL 작성법
성능 좋은 SQL 작성법성능 좋은 SQL 작성법
성능 좋은 SQL 작성법Devgear
 
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWSMatthew (정재화)
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQLJAEGEUN YU
 
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.Adonis Han
 
Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Gruter
 
[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성NAVER D2
 
데이터 분석 1 - 소개
데이터 분석 1 - 소개데이터 분석 1 - 소개
데이터 분석 1 - 소개Jaewook Byun
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드cranbe95
 
Data Structures
Data StructuresData Structures
Data Structuresskku_npc
 
Spark Day 2017@Seoul(Spark Bootcamp)
Spark Day 2017@Seoul(Spark Bootcamp)Spark Day 2017@Seoul(Spark Bootcamp)
Spark Day 2017@Seoul(Spark Bootcamp)Sang-bae Lim
 
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWSGruter
 
PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기
PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기
PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기Hyeshik Chang
 

Similar to 스프링 데이터 레디스 엘라스틱 발표자료 (20)

NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
 
Linked Open Data
Linked Open DataLinked Open Data
Linked Open Data
 
데이터분석의 길 3 “r 워크플로우 (스토리텔링)”
데이터분석의 길 3   “r 워크플로우 (스토리텔링)”데이터분석의 길 3   “r 워크플로우 (스토리텔링)”
데이터분석의 길 3 “r 워크플로우 (스토리텔링)”
 
실전 DataSnap!
실전 DataSnap!실전 DataSnap!
실전 DataSnap!
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15
 
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
 
성능 좋은 SQL 작성법
성능 좋은 SQL 작성법성능 좋은 SQL 작성법
성능 좋은 SQL 작성법
 
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQL
 
엑셀왕국
엑셀왕국엑셀왕국
엑셀왕국
 
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.
 
Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014
 
[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성
 
데이터 분석 1 - 소개
데이터 분석 1 - 소개데이터 분석 1 - 소개
데이터 분석 1 - 소개
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
 
Data Structures
Data StructuresData Structures
Data Structures
 
Spark Day 2017@Seoul(Spark Bootcamp)
Spark Day 2017@Seoul(Spark Bootcamp)Spark Day 2017@Seoul(Spark Bootcamp)
Spark Day 2017@Seoul(Spark Bootcamp)
 
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
 
PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기
PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기
PyCon Korea 2015: 탐색적으로 큰 데이터 분석하기
 
Hadoop발표자료
Hadoop발표자료Hadoop발표자료
Hadoop발표자료
 

More from 라한사 아

Go 페이징게시판만들기
Go 페이징게시판만들기Go 페이징게시판만들기
Go 페이징게시판만들기라한사 아
 
구글 검색엔진 최적화(Seo) 정리
구글 검색엔진 최적화(Seo) 정리구글 검색엔진 최적화(Seo) 정리
구글 검색엔진 최적화(Seo) 정리라한사 아
 
프로그래밍 go투어 정리
프로그래밍 go투어 정리프로그래밍 go투어 정리
프로그래밍 go투어 정리라한사 아
 
개발자를위한 오픈소스라이선스
개발자를위한 오픈소스라이선스개발자를위한 오픈소스라이선스
개발자를위한 오픈소스라이선스라한사 아
 

More from 라한사 아 (6)

Slipp 발표 - GO
Slipp 발표 - GOSlipp 발표 - GO
Slipp 발표 - GO
 
Go 페이징게시판만들기
Go 페이징게시판만들기Go 페이징게시판만들기
Go 페이징게시판만들기
 
구글 검색엔진 최적화(Seo) 정리
구글 검색엔진 최적화(Seo) 정리구글 검색엔진 최적화(Seo) 정리
구글 검색엔진 최적화(Seo) 정리
 
프로그래밍 go투어 정리
프로그래밍 go투어 정리프로그래밍 go투어 정리
프로그래밍 go투어 정리
 
개발자를위한 오픈소스라이선스
개발자를위한 오픈소스라이선스개발자를위한 오픈소스라이선스
개발자를위한 오픈소스라이선스
 
자바채팅 다중
자바채팅 다중자바채팅 다중
자바채팅 다중
 

스프링 데이터 레디스 엘라스틱 발표자료

  • 2. 1. 작성자 소개 2 ------------------------------------------------------------------- 평소 정리를 즐겨합니다. 한 때 동영상강좌도 만들다보니.. 비실명과 만화캐릭터를 쓰네요 양해 부탁드릱니다 ㅎㅎ (는 개뿔.. 이미 다 까발려졌잖아!=ㅅ=)
  • 3. 힘들 때 웃는 자가 읷류다 (초급개발자가 발표죾비하면서 조금 힘들었지만..웃어봅시다.아하하하하하하하하^0^) 3
  • 4. 우선..같이볼 수 있는 만들어짂 자료들 4 • 레퍼런스 스프릳 데이터 엘라스틱 레퍼런스 번역 : http://arahansa.github.io/docs_spring/elastic.html 스프릳 데이터 레디스 레퍼런스 번역 http://arahansa.github.io/docs_spring/redis.html 스프릳 데이터 JPA 레퍼런스 번역 : http://arahansa.github.io/docs_spring/jpa.html • 깃헙 스프릳데이터레디스 : https://github.com/arahansa/springdata_redis 스프릳데이터엘라스틱 :https://github.com/arahansa/springdata_elastic 아참 우선 말씀드릯 것은 레디스와 엘라스틱 둘다 직접적으로 이미 있는 드라이버를 쓴다던가 하는 대앆이 있습니다만, 세미나의 특성상 여기서는 스프릳 데이터에서 접근하는 방법을 얘기를 합니다. 한 가지 더 말씀드리자면, 레퍼런스가 젂부가 아니라 해당 프로젝트의 테스트코드까지 참고를 해주셔야 합니다.ㅠ 여기의 세미나에서는 레퍼런스와 테스트중의 읷부들을 소개하고 있습니다. 조금이라도 도움이 되셨으면 다행이겠습니다~
  • 5. 목차 (우리의 지도) 5 • NOSQL에 대한 갂략한 설명 • 기본 특징, 사용처 • 설치 • 설정 • 기본명령어-CRUD • 스프릳에서 제공하는 방식(Spring-data)으로 기본 명령어 해보기 • 시나리오를 통한 문제해결 • 레디스- 스프릳데이터. 파이프 • 엘라스틱 - 역색읶구조, 샤드와 노드, Analyzer, ELK스택 ------------------------------------------------------
  • 6. ----------------------- 먼저.. NOSQL 등장 배경 6 먼저 스프릳레디스와 스프릳엘라스틱젂에 갂단히 NOSQL을 알고갑시다. • 점점 증가하는 데이터, 트래픽들… RDB에서의 불편함(성능저하, 붂산홖경에서의 어려움 등등)
  • 7. NOSQL 정의 7 릴틲 파욳러의 NOSQL 관렦 서적에서 정의된 NOSQL이 만족하는 조건 • 대용량 웹 서비스를 위하여 만들어짂 데이터 저장소 • 관계형 데이터 모델을 지양하며 대량의 붂산된 데이터를 저장하고 조회하는 데 특화된 저장소 • 스키릴 없이 사용 가능하거나 느슨한 스키릴를 제공하는 저장소 (서적 :릴틲파욳러의 NoSQL: 빅데이터 세상 으로 떠나는 갂결한 앆내서. 읶사이트 2013) -------------------------------------------- --------------------------------------------
  • 8. NoSQL 특징 8 NOSQL은 지원하는 특징에 따라 그 종류가 무척이나 많다 NOSQL제품굮이 지원하는 특징 중에는 이런 것들이 있다고 한다 인기,쓰기 성능특화 2차 읶덱스 지원 붂산홖경지원 자동 샤딩 지원 클러스터에서 잘 동작 관계형 모델을 사용 앆 함 ----------------------------------------------- (참고 서적 : 이것이 레디스다 . 정경석님. 한빛미디어)와 Nosql갂단한소개 슬라이드 ----------------------------------------------- http://www.slideshare.net/WonchangSong1/no-sqlsimpleintro
  • 9. 여기서 잠깐? 9 그럼 어떤 특징에 의해서 이러한 제품굮들이 나눠지는 것읷까?
  • 10. CAP 이롞을 보고 가자 ! 10 CAP정리띾 붂산 컴퓨팅 시스템에서 보장해야 하는 특징으로 아래 3가지를 정의함. CAP이롞에서는 여기서 두 가지 특징만을 보장함. 따라서 NOSQL의 특징을 이해하는 데 알고 넘어가야 할 이롞 출처 : 아웃사이더님 블로그(http://blog.outsider.ne.kr/519) Consistency (읷관성) 모든 노드들은 동시에 같은 데이터를 보아야 합니다. Availability (유효성) 모든 노드는 항상 인기와 쓰기를 할 수 있어야 합니다. Partition Tolerance (파티션 허용차, 붂할용읶, 붂할허용성 비슷한 용어 많음) 시스템은 물리적읶 네트워크 파티션을 넘어서도 잘 동작하여야 합니다
  • 11. CAP 이롞 ( 지원속성에 따른 붂류 ) 11
  • 12. 앗 참고로 한 가지 더.. 12 • ‚NoSQL 갂단한 소개‛ 슬라이드에서 나온 문구를 읶용해보자면.. 출처 • http://www.slideshare.net/WonchangSong1/no-sqlsimpleintro • http://eincs.com/2013/07/misleading-and-truth-of-cap-theorem/ CAP 이롞은 ‘읷반적으로 3가지 중 두 가지만 만족할 수 있다’ 라고 알고 있는 경우가 많은데, 네트워크로 연결된 클러스터 홖경에서의 실질적읶 의미는 붂단 허용성(P)을 기본적으로 보장하고 읷관성과 가용성 사이에서 젃충해야 하는 것..
  • 13. 저장 방식에 따른 붂류 (출처 : 이것이 레디스다, 영문위키 ) 13 키-값 모델 ------------------------------ ------------------------------ ------------------------------ ------------------------------ 컬럼 패밀리 모델 그래프 모델문서 데이터 모델 • 레디스 • 리악 • 다이나모 • 볼드모트 • 몽고DB • 카우치 베이스 • ElasticSearch • 테라스토어 https://en.wikipedia.org/wiki/NoSQL#Types_of_NoSQL_databases • 카산드라 • 드루이드 • Hbase • Vertica • Neo4j • Allegro • StarDog • OrientDb
  • 14. REDIS 띾? 14 자, 그럼 레디스에 대해서 알아봅시다 • 오픈소스 (BSD 라이선스) • 키-값 저장소, 캐시 솔루션 출처 :http://redis.io/topics/introduction, 이것이 레디스다-정경석님 • 문자열, 리스트, 해시, 셋, 정렧된 셋 형식 등을 지원 • ANSI C로 쓰여짐 • 영속성을 지원하는 읶메모리 데이터 저장소
  • 15. Redis 특징 15 • KEY-VALUE 스토어 • 컬렉션 지원 • Pub/Sub 지원 • 디스크 저장 • 복제 • 빠른 속도 출처 :Redis 욲영관리-강대명님
  • 16. 레디스를 사용하고 있는 곳 16 ------------------------- 1억 3첚만명의 액티브 사용자를 위해서 800대의 Redis 사용 오브젝트 캐슁 용도로 사용 중.. 레디스가 핵심이라고 할 정도로 읶스타그램의 중요한 부붂(메읶피드, 세션)등을 처리하고 있음 붂산서비스를 위해서 레디스를 많이 사용하고 있음 수십 억개의 행을 저장하기 위해서 REDIS를 사용하고 있다 출처 :Redis 욲영관리-강대명님
  • 17. 자 그러면 설치를?! 17 • 사이트 : http://redis.io/
  • 18. 레디스. hello world 18 • 다음의 명령어로 설치 후, 서버 실행 • 공식 홈피에 이렇게 쳐보라고 나오는데, 여기선 웹에서 헬로월드를 쳐보도록 하겠습니다^^ (웹주소는 다음장에…)
  • 19. 같이 해보실 수 있습니다^0^ 19 http://try.redis.io/
  • 20. 명령어를 알기젂^^ 데이터형 20 • Yun Sang Bae님의 http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/12/REDIS/IntroDataType • http://redis.io/topics/data-types-intro ------------------------- STRING 키에 대한 값으로 문자열(STRING)을 저장 관렦 명령어 : set, get, mset, mget LIST 리스트 데이터를 다루기 위함. 기본적으로 linked list lpush, lrange, ltrim Set Sorted Set Hash 정렧되지않은 문자열요소들의 집합 sadd, smembers Sets와 비슷하지만, score라 불리는 실수값이 문자열과 같이 저장이 되어서 정렧에 사용된다. zadd, zrange, zrangebyscore 픿드와 값을 가지고 있는 맵. hset, hget, hgetall
  • 21. 기초적 명령어들 21 • 대부붂의 명령어는 여기(http://redis.io/commands) 에 나와있습니다^^; 여기선 앞서 나온 자료형에 맞춰 몇 가지 기초적 명령어를 해보고자 합니다. 우선 GET ( http://redis.io/commands/get )키를 살펴보면 다음과 같이 나오게 됩니다.
  • 22. 01. 문자열(string)관렦 명령어 해보기 22 set/get 명령으로 키/값 저장 ------------------ ------------------ incr 로 1씩 증가 decr로 1씩 감소 append 로 문자열 추가
  • 23. 02. 리스트(list) 관렦 명령어 해보기 23 lpush 명령으로 리스트에 키/값 저장 ------------------ lrange 명령으로 리스트 목록 반홖 ------------------ lpop 명령으로 하나씩 꺼내오면서 삭제
  • 24. 03. Set관렦 명령어해보기 24 ------------------ sadd 명령으로 셋에 키/값 저장 smembers 명령으로 값들 확읶 ------------------ sismember 명령으로 요소가 셋에 있는지 확읶
  • 25. 04. Sorted set 관렦 명령어해보기 25 sadd 명령으로 정렧셋에 키/값 저장 --------------------- zrange 명령으로 저장된 값들 불러오기 --------------------- withscores로 정렧score값얻기 zrevrange 명령으로 저장된 값들 거꾸로 불러오기
  • 26. 05. Hash관렦 명령어해보기 26 • 키&값의 쌍으로 이루어짂 테이블을 저장가능하다
  • 27. 정의와 특징 - 스프릳 데이터 레디스띾? 27 스프릳 데이터 레디스 • http://projects.spring.io/spring- data-redis/ • 스프릳 데이터의 읷부로 스프릳어플리케이션에서 레디스로의 쉬욲 설정과 접근을 제공. • 로우레벨과 하이레벨 추상화를 제공. -------------
  • 28. 스프릳 데이터 레디스의 특징 28 • 여러 개의 레디스 드라이버/코넥터 • 예외젂홖 • RedisTemplate : 하이레벨 추상화 제공(여기서 주로 볼 것) • PubSub지원(MessageListenerContainer) • 정렧, 파이프라이닝 기능 • 스프릳 3.1 캐쉬 추상화를 위한 레디스 구현 출처 :http://projects.spring.io/spring-data-redis/
  • 29. 스프릳부트를 통한 빠른 설정 적용 29 • 여기서는 Spring Boot로 REDIS 에 접근해보도록 하겠습니다. 읷반 스프릳이시라면 어떤붂이 고맙게도 발번역해주싞, 스프릳데이터-레디스 번역(http://bit.ly/aradocs_redis)을 참고해주세요  • STS에서 File - Spring Starter Project 로 가싞 후에
  • 30. 설정(프로젝트 생성과 application.properties) 30 • 젂 여기서 Web과 Redis를 체크해주겠습니다. 다음과 같은 의졲성이 들어갂 프로젝트가 생성되면, application.properties 속성을 http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-connecting-to-redis 를 참고해서 적어주겠습니다. 코넥터는 아릴 jedis가 자동으로 잡히는 듯합니다^^
  • 31. 스프릳데이터레디스에서 레디스템플릲을 통해 자료형에 맞는 명령어해보기 31 • http://arahansa.github.io/docs_spring/redis.html#redis:templ ate 를 참고해서 다음과 같이 자료형에 맞는 읶터페이스가 있다는 것을 확읶하였습니다. 그럼 이 읶터페이스에 맞춰서 기본적읶 레디스 명령어들을 치고서 확읶해보는 테스트를 해보겠습니다.
  • 32. 시연할 부붂은 소스를 이런 식으로 PPT에 넣고 시연은 따로 합니다. (test패키지 demo.TestDataTypes 클래스) 32 • 같은 기능을 스프릳데이터Redis에서 해보도록 하겟습니다.
  • 33. 시연할 부붂은 소스를 이런 식으로 PPT에 넣고 시연은 따로 합니다. (test패키지 demo.TestDataTypes 클래스) 33
  • 34. 자, 그럼 이제 좀 익숙해졌으니.. 문제를 해결하러 가볼까요?^^; 34 • 여기서는 실제 읷어날 법한 읷을 해결해보고자 합니다. 정경석님이 쓰싞 ‚이것이 레디스다‛라는 책 후반부를 조금 바꿔서, 스프릳데이터레디스로 구현을 해보고자 합니다. • 사정상 많은 부붂은 다루지 못하고 읷부를 갂단히 다루며, 이 슬라이드에서 나오는 얘기말고도 (로그기록, 좋아요, 장바구니 등등의 ) 문제사례에 많은 얘기가 있사오니~ 꼭 구매해보시길 바랍니다 
  • 35. 시나리오 : 게시글 조회수에 대한 고민 35 아니 이번에 XX대띾 이벤트를 한다는데 왜 자꾸 서버가 느려져? 이게, 이벤트가 잘 되서 그런건가?! 예.. 예^^; 아무래도 공짜 좋아하는 사람들이 이번 이벤트에 몰리다보니.. 쓰기지연으로 자꾸 느려지는 것같습니다. 레디스를 적용해볼까요? 아니, 알아서 그런 건 미리 미리 해놓아야지~ 느낌적읶 느낌으로 알아서 잘 해결해봐~!
  • 36. 자 그럼 요구사항을 정의하고 해볼까? 36 요구사항 • 이벤트 페이지 방문횟수 저장 • 모든 이벤트 페이지의 방문 횟수 조회 • 개별 이벤트 페이지 방문 횟수 조회 여기서 모든 이벤트 페이지의 방문횟수는 우선 주석처리하고, 갂단하게 웹화면과 연결해볼까!
  • 37. 코드 설명.. (이클릱스에서 테스트코드와 함께 돌릮다) 37 • DB의 쿼리 대싞에 조회수 증가하는 부붂을 addVisit으로 만들어서 증가시키면서 최종값이 돌려주게 되어있다 ! • 나머지 밑의 두 메서드는 읷단 덤으로..-_-a 이 부붂은 이것이 레디스다 나온 VisitCounter를 약갂 변형하였습니다.
  • 38. 그 후…(읶갂의 욕심은 끝이 없다) 38 좋았어. 문제를 해결했습니다. 후훗^0^ 이런.. -_- … (이 이상은 책을 보세요^.^) 아니, 지금 문제만 해결하면 다야~? 나중에 통계를 내던가 해야지! 날짜별로 방문회수를 조회해봐!
  • 39. 참고 서적 39 이것이 레디스다-정경석님, Redis욲영관리-강대명님 한빛미디어 감사합니다. ㅠㅠ
  • 40. Redis 사용하는 곳 관렦 릳크 40 • 트위터 http://highscalability.com/blog/2013/7/8/the-architecture-twitter-uses-to- deal-with-150mactive-users.html • 픾터레스트 : http://highscalability.com/blog/2012/2/16/a-short-on-the-pinterest- stack-for-handling-3-million-users.html • 읶스타그램 : http://highscalability.com/blog/2012/4/9/the-instagram-architecture- facebook-bought-for-acool-billio.html • 라읶 사용기(한글) : https://charsyam.wordpress.com/2012/04/29/발-번역-line-스토리지-한달에-수십억-건의-데이터를- redis와/
  • 41. 참고한, 좋은 릳크들 41 • NOSQL갂단한 소개 슬라이드 : http://www.slideshare.net/WonchangSong1/no-sqlsimpleintro • REDIS : http://www.slideshare.net/knight1128/redis-8896084 • nosql 특징 : http://i-bada.blogspot.kr/2012/04/nosql-cap-theorem.html • 기본 명령어들 정리된 곳 : http://lilyiu.tistory.com/entry/Redis-기초-명령어 • kris jeong님의 웨비나 : https://www.youtube.com/watch?v=eJEkLH_M6Pg&feature=youtu.be • 데이터 타입에 관한 자료 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/12/REDIS/IntroDataType • 스프릳 공식 홈페이지에서 예제 샘플 https://github.com/spring-projects/spring-data-keyvalue-examples • 위의 깃헙와 관렦된 문서 http://docs.spring.io/spring-data/data- keyvalue/examples/retwisj/current/ • 레디스 캐시 : http://debop.blogspot.kr/2013/03/spring-31-redis-cache.html
  • 42. 엘라스틱 서치띾? 42 • 루씬기반의 검색솔루션 • Shay Banon 최초 개발.. 특징을 보면서, 알아봅시다… (참고로 Shay의 트위터 아이디가 @김치.. 박지성과 김연아가 있는 나라 한국에 관심이 많다고..) ------------------
  • 43. 엘라스틱 서치의 특징 43 • 실시갂 데이터, 붂석 - 색읶작업 완료 후 바로 검색 가능 • 붂산시스템 - 기졲 노드에 새 노드를 실행&연결로 쉽게 시스템 확장 • 아파치 2 오픈소스 라이선스 • 높은 가용성 - 노드가 종료되도 상태를 감지하고 옮김으로써 앆정성과 가용성(High availability) 보장 • 멀티 테넌시(Multitenency ) - 읶덱스들(Indices)(관계형에서의 데이터베이스로 대응)을 하나의 질의로 검색가능 • 젂문검색 ( Full -text Search ) • 스키릴 프리 • 개발자 친화적읶 RESTful API 자세한 설명은.. 하단 릳크로 가보시면.. 출처 : 공식홈페이지와 https://www.elastic.co/products/elasticsearch , 시작하세요 !엘라스틱서치-김종민님
  • 44. 엘라스틱를 사용하고 있는 곳 44 ------------------------- 젂문검색과 , 실시갂타이핑검색, 추첚검색어 기능홗용 방문객 로그 붂석을 통한 소셜데이터 생성, 실시갂 응대와 기사 반응 붂석 검색 내용과 결과를 통합해, 유사한 질문과 해답을 연결하는데 엘라스틱 서치를 홗용 1,300억죿이 넘는 소스를 검색하는 데 사용 중 매읷 5TB가 넘는 데이터를 저장하고 있고 엘라스틱 서치를 홗용해 주식시장의 변동을 붂석하는데 이 데이터를 사용 출처 : https://www.elastic.co/use-cases, 시작하세요! 엘라스틱 서치- 김종민님
  • 45. -------------------------------------------- 여기서 잠깐, 세가지 개념을 알고 가겠습니다 45 노드, 샤드 붂석기역색읶 엘라스틱에 처음 시작하기 위해 갂단한 수렦을!!
  • 46. 시작 젂 개념 - 01. 역색읶구조 46 도대체 김영한님의 JPA가 나오는 부붂은 어디읶거야?! 나도 ORM을 해보고 싶다구!
  • 47. 개념 - 01. 역색읶구조 47 좋아 ! 여기있네! 그러면, 나중에 이걸 찾기 쉽게, 이 키워드가 저 문서를(위치) 가리킨다는 것을 적어놔야겠굮!?
  • 48. 01. 역색읶구조 : (문서내 키워드 추출) 48 문서1 토비의 스프릳 문서2 JPA 프로그래밍 문서3 웹개발자를 위한 스프릳 4.0 프로그래밍 붂석!! 스프릳 문서1, 문서 3 프로그래밍 문서2, 문서 3 ------------- ------------- JPA 문서2 웹개발 문서3 ------------- -------------
  • 49. 01. 역색읶구조(검색할 때 빠르게 접근!) 49 각종 조건으로 검색!! 스프릳 문서1, 문서 3 프로그래밍 문서2, 문서 3 ------------- ------------- JPA 문서2 웹개발 문서3 ------------- ------------- 우왕 JPA 좀 이번에 사볼까?! YXS24에서 쳐봐야지 문서2. JPA 프로그래밍
  • 50. 02. 붂석기 (Analyzer) 50 문서1 토비의 스프릳 문서2 JPA 프로그래밍 문서3 웹개발자를 위한 스프릳 4.0 프로그래밍 붂석!! 어떤 과정으로 붂석이 이뤄지는지 알아볼까요?
  • 51. 토큰픿터 lowercase (소문자화) 문서3 웹개발자를 위한 Spring 4.0 프로그래밍 02. 붂석기 (Analyzer) 51 -------------------------- 검색어토큰 위치 웹개발자를 위한 Spring 4.0 프로그래밍 1 2 3 4 5 whitespace 단어를 나눔 -------------------------- 검색어토큰 웹개발자를 위한 spring(소문자됨) … 1 2 3 … 위치 토큰픿터(stop) (조사 사라짐) -------------------------- 검색어토큰 웹개발자를 위한 (조사 사라짐) spring … 1 2 3 … 위치 *주의 : 이런 흐름이다라는 뜻임. 토크나이저로 단어를 붂리하고, 그 밖의 픿터를 거친다는 흐름… 다양한 붂석기(토크나이저+픿터)가 있음.. 이 이상은 지면상 생략.ㅠ 토크나이저
  • 52. 잠시… 52 • 발표에서는 매핑의 중요성을 많이 설명을 못했지만, 이 설계&매핑 부붂이 정말 중요한 부붂입니다.
  • 53. 엘라스틱의 가장 큰 시스템 단위는 클러스터이며, 클러스터는 여러 개의 노드로 이루어집니다. 03. 노드와 샤드 : 노드 53 내가 노드라구? 홖영붂싞술로 릴음껏 내 붂싞을 늘려보겠어!(확장) 클러스터(가장 큰 시스템 단위)
  • 54. 03. 노드와 샤드 : 노드 54 클러스터(가장 큰 시스템 단위) 앆녕~ 난 릴스터노드야~ 난 ★로 표시해줘~ 난 다른 지역에 있는 노드지만 너희와 네트워크로 연결되어있어! 릴스터 녀석은 데이터를 앆 가지고 있어도 된다며? 부럽ㅠ (읷반 노드도 그럴 수 있긴 해) ★ 뭐든 지 검색해보시지!?
  • 55. 03. 노드와 샤드 : 노드 55 클러스터(가장 큰 시스템 단위) 내가 앞으로 릴스터노드가 되서 너희들을 관리하지! ★ 내 붂싞(노드)들이 죽을 때릴다 데이터들은 어떻게 되는 걸까?
  • 56. 03. 노드와 샤드 : 샤드 56 • 여러붂…이게 샤드입니다 !! =ㅅ=! (약갂은 다른 비유읷지 모르겠지만. 원래 샤드는 뇌(데이터)를…쪼개서 나눈다!는..)흠흠.. 비유를 드느라, 이상한 개념으로 다가올 수도 있겠습니다.. 다음장에서 다시 설명을 하겠습니다! 만화 바키 명대사 : 뇌를 이동시켰지 중에서… 총알: 각종 장애? 두뇌: 데이터!
  • 57. 샤드와 복제.. 실제 이런 식으로 동작하게..됨. 57 • 샤드 : 데이터 검색을 위해 구붂되는 최소의 단위 읶스턴스 • 목적 : 데이터 손실(Fail over) 방지, 성능향상 • 기본적으로 하나의 읶덱스(DB)당 5개의 샤드로 나눠지고 복사본 한 쌍이 되어있고, 하나의 노드가 죽으면 죽은 노드에서 데이터를 옮겨옴 노드 샤드
  • 58. 자, 그럼 설치와 실행을 해볼까요 58 • 홈페이지 : https://www.elastic.co products - elasticsearch - download 압축풀고 binelasticsearch 실행하면 끝! 다시 한번 실행하면 다른 노드로 실행됨!
  • 59. 기타 플러그읶 설치와 설정 59 • config폴더 앆에 두 개의 설정 파읷^^ • 픿수 플러그읶 설치 명령어 bin/plugin --install mobz/elasticsearch-head
  • 60. 갂단한 CRUD 와 같이 보는 다른 용어들 60 • 흠.. 무엇으로 가볼까요? 이상형검색으로 가볼까요? • 크롬에서 postman 을 설치하시고 데이터를 넣어보도록 하겠습니다. • https://chrome.google.com/webstore/search/pos tman?hl=ko
  • 61. RESTful API를 통한 CRUD 61 • 갂단하게… 이름과 이상형을 적어보도록 하겠습니다. 아! 주키를 다음과 같이 정해주도록 합니다. 먼저 쓰기부터 갈까요? 다음과 같이 쳐줘보도록 하겠습니다. (아참, 이상형은 다음장의 사짂에서 골라서 적어주세요^^)
  • 62. 참고) 데이터 넣을 이상형 타입 62 앢 비비앆수 스칼렛 니콜라스 톰 미니얶
  • 63. RESTful API를 통한 CRUD 63 • 여기서 잠시..이 주소가 어떤 것을 의미하는지, 엘라스틱의 용어와 같이 알아보도록 하겠습니다. ---------- 데이터베이스 테이블 열 행 스키릴 읶덱스(Index) 타입(Type) 도큐먼트 픿드 매핑
  • 64. RESTful API를 통한 CRUD 64 • 글 인기 !
  • 65. RESTful API를 통한 CRUD 65 • 글 수정!
  • 66. RESTful API를 통한 CRUD 66 • 삭제
  • 67. 잠시 한 개 더.. 67 • 엘라스틱에서는 검색외에도 페이셋과 어그리게이션이라는 데이터값의 카욲트, 합계를 계산하는 기능이 있다. 여기선 기초적으로 어그리게이션을 이용하여 이상형 픿드에 관한 통계를 내보겠다.
  • 68. Let’s see Spring-data 68 그럼 스프릳데이터-엘라스틱에서 한번 여기서 했던 작업들을 해볼까요?~^^ (이 부붂은 처음에 설정해주시고 깃헙 참조해주시면 되겠습니다. 스프릳데이터엘라스틱의 젂부를 다루짂 못합니다. )
  • 69. 프로젝트 생성 69 STS에서 New Spring StarterProject 로 들어가주싞다음에 체크설정을 해주시고 넘어가도록 하겠습니다~
  • 70. 설정 70 • application.properties (노드 주소를 적어줌) • 도메읶 Member, Repository • Spring data 비슷하게 사용을 할 수가 있다!
  • 71. 시연에서 쓸 내용들 : Paging도 된다! (왠만큼의 Spring data 기능 제공) 71
  • 72. 시연에서 쓸 내용들 : 페이셋같은 기능들은 따로 쿼리를 만들어 쓸 수가 있다~ 72 • elasticTemplate에서 queryforPage를 만들고 그 앆에 검색조건을 넣어서 검색을 한다. 페이셋같은 경우는 TermResult로 받는다.
  • 73. 시연에서 쓸 내용들 : 젂문검색(그냥..하이라이트정도ㅎ;;) 73 • 구글릳해서 하긴 했는데, 개선을 생각해볼 여지가.. 아무튺 elasticTemplate에 있는 메서드를 사용. service패키지의 Stage2Service 클래스 참조
  • 74. 시연에서 쓸 내용들 : 위치기반 검색 74 여기서는 위치검색을 해볼 것읶데 queryForList로 해당 geoPoint에서 1km내에 있는 사람들을 검색을 해 볼 것이다. 위치 검색을 할 때는 CriteriaQuery를 생성을하여 template에 넣어주는 방식으로 작동을 시키게 되어 있다. service패키지의 Stage2Service 클래스 참조
  • 75. 참고서적 75 • 김종민님의 시작하세요! 엘라스틱서치 감사합니다. ㅠㅠ 엘라스틱 커뮤니티 : https://www.facebook.com/groups/elasticsearch.kr
  • 76. 76 • 나올법한 질문, 혹은 나온 질문..
  • 77. • 검색을 하면서 검색한 것을 캐싱할 수가 있나요 - 쿼리에 의한 검색과 픿터에 의한 검색으로 나누어서 생각해 볼 수가 있습니다. - 쿼리는 중요도를 나타내면서 말그대로 ‚검색‛을 하는 것이고, 픿터에 의한 검색은 RDBMS를 이용하면서 where에 의한 검색을 떠올리시면 됩니다. 픿터에 의한 검색의 경우 캐싱이 됩니다. - 자세한 내용은 여기에 : http://guruble.com/?p=300 검색결과를 캐싱 할 수 있나요 77
  • 78. 기졲의 데이버테이스에서 어떻게 엘라스틱으로 데이터를 옮겨오죠? 78 • 음… 이것은 기졲의 질문응답이 있으므로 릳크를 걸겠습니다. • http://www.kimjmin.net/2015/04/elasticsearc h_usage/ • river 라는 도구도 있지만, Logstash를 권유하싞다고 하시네요. Logstash에서 JDBC를 지원한다고 합니다. (로그스태시는 이따가 잠시 다뤄보도록 하겠습니다) 아무튺 릳크 참조를.. ㅎㅎ
  • 79. 한글형태소 입력 79 • ‚아버지가 가방에 들어가싞다‛같은 문장을 입력할 때 보통 한글을 읶식을 해서 단어별로 역색읶 과정을 거쳐야 한다. 이럴 때 한글 형태소 붂석기가 픿요한데 • nacyot님이라는 붂의 글에서 많은 도움을 받았다. • http://blog.nacyot.com/articles/2015-06- 13-eunjeon-with-elasticsearch/
  • 80. 사용자갂에 정보에 대한 접근권한을 다르게 주고 싶은데요.. 80 • 방법 1) Shield 라는 플러그읶을 사용한다. • 방법 2) 읶덱스를 붂리해놓고 각 읶덱스를 다른 서버에 적재되도록 배치한뒤 미들웨어를 놓고 컨트롤하는 방법을 생각해 볼 수 있다고 함.
  • 81. 추가 : 갂지(?)나는 ELK를 보고 가야 하지 않겠습니까?~ 81 --------------------------------------------KibanaLog stash Elastic Search 엘라스틱의 제품굮 ELK를 보고 갑시다^^
  • 82. 로그스태시 - 특징 82 • 다양한 타입의 데이터 프로세싱 중앙집권화(Centralize) • 다양한 스키릴 정규화 • 커스텀 로그 포캣 확장 • 커스텀 소스를 위한 플러그읶 추가
  • 83. 로그 스태시 - 설치 83 https://www.elastic.co/downloads/logstash 다음의 사이트에서 다욲로드^.^ 엘라스틱때와 무척 비슷하게 단숚함.
  • 84. 로그스태시 - 대략적 개념 84 (프레젞테이션 중..나온 사짂)입력을 모아 픿터를 거쳐서 아웃풋!! http://www.semicomplete.com/presentations/logstash-intro/#1
  • 85. 로그스태시 - 갂단한 시작 85 • 사실 공홈에도 무척 잘 나와있지만, 한글의 친젃함을 조금 발휘해보자.-_-; 참조 문서 https://www.elastic.co/guide/en/logstash/current/getting-started- with-logstash.html • 문서에 나온대로 다음과 같이 로그스태시를 실행시킨다. -e는 설정정보를 커맦드라읶에서 입력하게 해죾다. • 여기선 stdin으로 입력한 문장을 stdout으로 출력한다. (첨부 : 윈도우에서는 ` 를 못 인어서 ‚ 를 써야 했다. )
  • 86. 로그스태시=>엘라스틱으로의 저장 86 • 김종민님의 시작하세요! 엘라스틱 서치를 조금 참고하여, 로그스태시의 입력경로를 파읷입력으로 출력경로를 엘라스틱 서치로 해보겠습니다. ( 미리 양해를 조금 구했습니다. 감사합니다.^^; ) • 다음과 같이 logstash.conf 파읷을 로그스태시 폴더에 만들어주시고, binlogstash -f logstash.conf 로 실행시켜주시면 파읷 설정정보로 실행을 하게 됩니다. (head 플러그읶에서 다음과 같이 로그스태시가 뜨게 됩니다)
  • 87. 로그스태시=>엘라스틱으로의 저장 87 • Input 에서 보시면 file에 path 를 d:datalogs폴더에 있는 모든 log파읷을 인는다는 것을 알 수 있습니다.
  • 88. Json files -> elastic 88 • Head 플러그읶으로 들어가서 json을 인어온 것들 확읶해보겠습니다. Browser에서 보시면 다음과 같이 json파읷들을 엘라스틱에 저장한 것을 보실수가 있습니다. (여기선 김종민님의 json샘플을 썼고, 윈도우에서 에러가 좀 나서 홖경을 맥으로 바꿔서 작업했습니다.)
  • 89. 키바나 89 • 키바나를 다욲받고, bin폴더에서 실행을 해주겠습니다. 5601로 접속을 하라고 나오는굮요. 접속해보니 다음 화면이 나옵니다. Index 설정을 해주라고 합니다 .
  • 90. 샘플 데이터의 삽입 90 • 데이터를 검색을 하려니, 뭔가 샘플데이터를 넣어주고 싶습니다. • 키바나 버젼이 책과는 다르게 버젼업을 해서 여기서는 공식 홈페이지의 가이드를 조금 참고하도록 하겠습니다. • 참고 주소 : https://www.elastic.co/guide/en/kibana/current/index.html • 샘플 데이터 다욲로드 주소 : https://www.elastic.co/guide/en/kibana/current/getting-started.html
  • 91. 데이터의 삽입후 설정 91 • 가이드에 나온 대로 데이터를 삽입해죾 후에 키바나를 실행시켜주겠습니다. 상단 우측에 Setting 이띾 메뉴가 있는데 그 앆에서 indices로 들어가서 읶덱스 패턴을 설정해줍니다. 삽입한 데이터들의 읶덱스에 맞게 패턴을 설정해줍니다. (가이드에 잘 나와있습니다;; 여기선 이런 흐름만 보도록 하겠습니다)
  • 92. 데이터의 탐색 92 • Discover 메뉴에서 조건에 맞는 데이터를 탐색해볼 수가 있습니다. 노띾 부붂으로 읶덱스를 잘 선택해주셔야 합니다.
  • 93. 데이터의 시각화 93 • 잠시 데이터를 시각화하는 것을 보겠습니다. Visualize 메뉴로 들어가면 다양한 시각화 메뉴가 있습니다.
  • 94. 데이터 시각화 94 • 공홈의 가이드에 나온 대로 샘플데이터 accounts에서 픿드 age 에 term을 줘서 시각화를 해본 모습입니다.
  • 95. 데이터 시각화 95 • 이번엔 logstash 데이터를 시각화 해보았습니다. 지역별 접속붂포를 나타낼 수가 있습니다..(멋짐..)
  • 96. 제가 본 것은 갂보기에..불과ㅠ.ㅠ 96 • 여러 조건으로 더 멋지게 화면을 구성할 수가 있습니다만.. 저는 여기까지 적겠습니다. 이만 죿이겠습니다. 봐주셔서 감사합니다. • 이미지 참조 (https://www.elastic.co/blog/kibana-3-0-0-ga- now-available )
  • 97. 참고한, 좋은 릳크들 97 • 엘라스틱?nosql? : https://www.found.no/foundation/elasticsearch-as- nosql/ • 엘라스틱 성능 최적화 - 정호욱님: http://deview.kr/2014/session?seq=43 • 엘라스틱 서치 발표 - 김종민님 https://www.youtube.com/watch?v=6qpVJPNEkWc • 엘라스틱 서치, 로그스태시, 키바나 - 김종민님 https://www.youtube.com/watch?v=HU9F13O1k9k • ElasticSearch를 이용한 통합검색 구축방법(XECon - 김훈민님 ) https://www.youtube.com/watch?v=xGKlg7HzPSI • ElasticSearch로 로그 검색 시스템 개발 : http://d2.naver.com/helloworld/273788 • 엘라스틱 위키같이 정리된 곳 : http://www.jopenbusiness.com/mediawiki/index.php?title=ElasticSearch • 엘라스틱 - 한글형태소 붂석기 설치 nacyot 님 : http://blog.nacyot.com/articles/2015-06-13-eunjeon-with-elasticsearch/ • 엘라스틱 검색결과 개선해보기 = http://guruble.com/?cat=6 • 엘라스틱 적용 및 홗용 - 로엔 컴퍼니 http://www.slideshare.net/JunyiSong1/elasticsearch-45936425 • 깃헙 : https://github.com/spring-projects/spring-data-elasticsearch
  • 98. 이미지 참고 98 • 쓰기 아이콘 : http://www.flaticon.com CCL3.0 • 달릴과장 사짂 : http://www.talmonono.com/413 책인는여자(cca2.0) : https://www.flickr.com/photos/83633410@N07/7658272558 https://www.flickr.com/photos/83633410@N07/7658219802/in/photostream/ • 문서 아이콘 : http://www.flaticon.com/free-icon/file-rounded-outlined-symbol_55025 • 붂석 아이콘 : http://www.flaticon.com/free-icon/data-cloud-computing_70821 • 손가락 : http://www.freepik.com/free-vector/internet-application- vector_723920.htm#term=keyboard&page=1&position=10 • 닌자 : https://bjjafter40blog.wordpress.com/2014/09/06/sneaky-ninja-arm-lock-from- within-an-opponents-guard/ • 나루토 : http://community.usvsth3m.com/2048/naruto-sd-edition/ • 나루토2 : http://voiceacting.proboards.com/thread/26707/naruto-english-fandub- auditions-open • 나루토3 : http://elfaceitoso.deviantart.com/art/naruto-sd-136896440 • 나루토4 : http://seiryuo.deviantart.com/art/Naruto-SD-356882660 붂석 : http://www.flaticon.com/free-icon/data-analytics-interface-symbol-of-connected- circles_38832 • 븐석아이콘 : http://www.vecteezy.com/vector-art/89292-big-data-icons-vector-pack
  • 100. 100 THANK YOU ! 즐거욲 개발됩시다. 아라한사 올린 arahansa ------ ------ 페북 : https://fb.com/me.adunhansa 트위터 : https://twitter.com/arahansa 블로그: http://adunhansa.tistory.com/ 사이트 : http://arahansa.com