elastic-meetup

Similar documents
untitled

NoSQL

10.ppt

DBMS & SQL Server Installation Database Laboratory

Microsoft PowerPoint - 10Àå.ppt

Ç¥Áö

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Tablespace On-Offline 테이블스페이스 온라인/오프라인

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

MySQL-.. 1

FileMaker 15 ODBC 및 JDBC 설명서

문서 템플릿

슬라이드 1

개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다.

Observational Determinism for Concurrent Program Security

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

쉽게 풀어쓴 C 프로그래밊

(Humphery Kim) RAD Studio : h=p://tech.devgear.co.kr/ : h=p://blog.hjf.pe.kr/ Facebook : h=p://d.com/hjfactory :

Index

第 1 節 組 織 11 第 1 章 檢 察 의 組 織 人 事 制 度 등 第 1 項 大 檢 察 廳 第 1 節 組 대검찰청은 대법원에 대응하여 수도인 서울에 위치 한다(검찰청법 제2조,제3조,대검찰청의 위치와 각급 검찰청의명칭및위치에관한규정 제2조). 대검찰청에 검찰총장,대

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

PowerPoint 프레젠테이션

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

윈도우시스템프로그래밍

160322_ADOP 상품 소개서_1.0

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

빅데이터분산컴퓨팅-5-수정

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Microsoft PowerPoint Python-DB

소만사 소개

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

2

歯JavaExceptionHandling.PDF

FileMaker ODBC 및 JDBC 가이드

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

RUCK2015_Gruter_public

텀블러514

PowerPoint Template

Microsoft PowerPoint - CNVZNGWAIYSE.pptx

PowerPoint 프레젠테이션

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

thesis

빅데이터 분산 컴퓨팅 -6

Microsoft PowerPoint - Oracle Data Access Pattern.ppt

SKINFOSEC-CHR-028-ASP Mssql Cookie Sql Injection Tool 분석 보고서.doc

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

김기남_ATDC2016_160620_[키노트].key

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

untitled

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

J2EE Concepts

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

PowerPoint Presentation

Intra_DW_Ch4.PDF

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

PowerPoint 프레젠테이션

Facebook API

1217 WebTrafMon II

내장서버로사용. spring-boot-starter-data-jpa : Spring Data JPA 사용을위한설정 spring-boot-devtools : 개발자도구를제공, 이도구는응용프로그램개발모드에서유 용한데코드가변경된경우서버를자동으로다시시작하는일들을한다. spri

[Brochure] KOR_TunA

슬라이드 1

Spotlight on Oracle V10.x 트라이얼프로그램설치가이드 DELL SOFTWARE KOREA

11강-힙정렬.ppt

PHP & ASP

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

목 차 요약문 I Ⅰ. 연구개요 1 Ⅱ. 특허검색 DB 및시스템조사 5

신림프로그래머_클린코드.key

PowerPoint 프레젠테이션

초보자를 위한 분산 캐시 활용 전략

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

TITLE

UI TASK & KEY EVENT

Level 학습 성과 내용 1수준 (이해) 1. 기본적인 Unix 이용법(명령어 또는 tool 활용)을 습득한다. 2. Unix 운영체계 설치을 익힌다. 모듈 학습성과 2수준 (응용) 1. Unix 가상화 및 이중화 개념을 이해한다. 2. 하드디스크의 논리적 구성 능력

교육2 ? 그림

초보자를 위한 ADO 21일 완성

FileMaker ODBC and JDBC Guide

서현수

씨에이에스는 서울특별시 시설관리공단 계약 제1579호( ) 장애인 콜택시 콜센터 차량관제시스템 구축사업 감리용역 에 근거하여 카나스 에서 수행중인 장애인콜택시 콜센터 차량관제시스템 구축사업에 대한 최종감리를 실시하고 본 보고서를 제출합니다

5장 SQL 언어 Part II

놀이동산미아찾기시스템

TTA Journal No.157_서체변경.indd

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_ pptx

Microsoft PowerPoint - 1_3_DBA_SQL_tuning

강의 개요

H3250_Wi-Fi_E.book

PowerPoint 프레젠테이션

웹연동 } 웹 (Web) 환경에서데이터베이스시스템을연동하는방법은다음과같다 } Server Client 구조의통신 (2-Tier) } Server Middleware Client 구조의통신 (3-Tier) 2

개발문서 Oracle - Clob

UI TASK & KEY EVENT

SQL Server 에서 SQL 튜닝시알아야할힌트와사용 방법 엑셈컨설팅본부 /DB 컨설팅팀박성호 Optimizer 가 SQL 을해석할때항상최적의실행계획을생성하지는못한다. 복잡한 SQL 일수록최적의실행계획을생성하기위해고려해야할대상 (Table, Index 가많은경우 )

Spring Data JPA Many To Many 양방향 관계 예제

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드]

슬라이드 1

PowerPoint Presentation

공개 SW 기술지원센터

PowerPoint 프레젠테이션

Transcription:

Elastic Search Engine 을 Data Base 로활용 - 박영민

목차 1. 개요 2. RDB ERD구조를엘라스틱색인구조로변환 3. QUERY DSL -> SQL 쿼리에서바로사용 4. ElasticSearch CRUD 처리 5. 서비스아키텍쳐구성 6. 처리 Performance 비교 (MariaDB vs Elasticsearch) 7. 구성시고려사항 8. Q&A

1. 개요 - 검색엔진은뭔가요? 방대한분량으로흩어져있는자료를가운데원하는정보를쉽게찾을수있도록도와주는소프트웨어 l 단어별검색엔진 (word-oriented searching): 검색하고자하는내용을입력하면, 검색사이트에있는데이터베이스를찾아웹페이지로보여주는검색엔진이다. 2 주제별검색엔진 (sbject-oriented searching): 인터넷상에있는정보를큰범위에서좁은범위로좁혀가며찾는방식의검색엔진이다. 3 메타검색엔진 (Meta-searchengine): 인터넷에서규모가큰검색엔진들에사용자가입력한검색키워드에대하여의뢰한뒤결과를가져오는검색엔진이다

1. 개요 왜검색엔진을 Database 용도로쓸려고했는가? 평균사용자가일 1억대이상이며, 동시요청 REQUEST 가평균 2만대의시스템은운영하는데, 사람이퇴근하고디바이스를동시에켜는시간저녁 6-7시만되면, 긴장을해야합니다. 왜냐하면그시간에트래픽이항상몰려, 서버가중단되는사태가발생하였기때문입니다. 중간에캐쉬서비스도올려사용하였지만, 너무많은트래픽에캐쉬서비스도감당을못하는경우가있었음 => 서비스장애덤프를확인하여보니서비스 Hang의원인이특정 DB 테이블몰려있으며, 일정임계치가넘어가면서느려지는현상이발생 1. 일시적동시접속자사용자때문에, DB 에부하가걸려서서버가뻗는경우가발생하였다 2. 아무리디비를튜닝해도, 좀처럼속도개선의해결의기미가보이지않는다 3. 갱신보다기하급수적으로조회가많은경우라면엘라스틱을이용해처리가가능하였다.

1. 개요 - 엘라스틱서치를 DB 로활용하기위한조건 1. 표준 ANSI SQL문으로제어가가능해야한다. 2. SQL로 CRUD 처리를할수있어야한다. 3. DB에 ENTITY RELATION 구조를엘라스틱인덱스로유사하게컨트롤해야한다. 4. 원본 DB의제어와 ELASTIC의제어가동일아키텍쳐형태로구성되어야한다.

2. ELASTIC ERD 구성 1. RDB 에서는 ENTITY 간에연결을 PK, FK 로구성하여연결하여가능하지만, 엘라스틱인덱스에서는그런게없다, 그러나 PARENT CHILD / CHILD PARENT 방식이용해서을각색인간의비슷하게 Relation 만들수있다. 물론 100% 동일하게는불가능하므로, ERD 에따라중간색인테이블을만들어 하는경우도있음

ERD 예제

INDEX 예제 "mappings": { "main_recipes": { "properties": { "recipes_key": { "type": "string" }, "recipes_title": { "type": "string", "index": "analyzed", "analyzer": "korean_analyzer" }, recipes_rl": { "type": "string", "index": "analyzed", "analyzer": "english" } } }, "food_material": { "_parent": { "type": "main_recipes" }, "properties": { "recipes_key": { "type": "string" }, "recipes_seq": { "type": "integer" }, "material_cd": { "type": "string", "index": "analyzed", "analyzer": "english" }, "material_nm": { "type": "string", "index": "analyzed", "analyzer": "korean_analyzer" }, "material_ratio": { "type": "integer" }

QUERY DSL -> SQL 쿼리로 의외로 Elastic Qert DSL 를이용하여검색문을작성하는것쉽지는않다고, 검색엔진을 DB 로활용하려할때, 이부분이걸림돌이될수있다. 이부분을해결하기위해 NLPCN 자연언어처리단체에서제공하는 elasticsearch-sql 플러그인을이용하여 sql 문을그대로엘라스틱에서사용하도록처리함 https://githb.com/nlpchina/elasticsearch-sql 현재제공버전은 : Elasticsearch 5.4.1 까지제공

Sql 조회화면 위의플러그인을설치하면다음과같은 UI 를통해서엘라스틱의인덱스를 sql 로제어가가능함 Explain 을이용하면 QeryDSL 문장으로도변환처리해줌

SQL 주요명령어 ( 데이터조회 ) Qery SELECT * FROM bank WHERE age >30 AND gender = 'm' Aggregation select COUNT(*),SUM(age),MIN(age) as m, MAX(age),AVG(age) FROM bank GROUP BY gender ORDER BY SUM(age), m DESC Delete DELETE FROM bank WHERE age >30 AND gender = 'm'

SQL 주요명령어 ( 테이블간조인 ) 서로다른인덱스간의조인쿼리 select name from material_code/parent_material a JOIN recipes/food_material b on b.name = a.material_nm 부모자식간의조회쿼리 SELECT recipes_key,recipes_title,material_nm FROM recipes/main_recipes where children(food_material,material_nm)=' 고추장 ' and recipes_title=' 해물탕 ' - 위와같이하면자식인덱스에있는범위를포함하는부모인덱스값만노출

검색엔진조회확인 http://180.70.211.156:29200/_sql?sql-select name from material_code/parent_material limit 0,10 위와같이브라우징을통해서쿼리로동일하게접근이가능하

4. ElasticSearch CRUD 처리 elasticsearch-sql 플러그인은 Read 에대해서만제공한다. 서비스상에서 CUD를하기위해서, 고민을하다가다음과같은방식으로구현처리를해보았다. 편법이긴하지만많은리퀘스트에도문제없이동작이됨 UPDate라는개념이기본적명령어로없으므로, 삭제후신규등록해야함 Parent Child 구조에서 Parent 삭제하면하위노드데이터는재색인등록해야하는경우가생김 elasticsearch-sql 에서 2.4 버전이후에 DeleteQery가엘라스틱라이브러리와 org/elasticsearch/index/reindex/deletebyqeryaction 를호출하고있어서에러가발생하므로 reindex-client.xx.xx.jar 를 %Elasitc_Install%/lib에넣어주어야함 실시간동기화가필요한테이블에대해서는 Spring Data Elasticsearch 와 DridDataSorce 를하여처리함

JDBC 를통한제어 pblic void elasticjdbc() throws Exception { Properties properties = new Properties(); properties.pt( rl, jdbc:elasticsearch://180.70.211.156:9300/ + TestsConstants.TEST_INDEX); DridDataSorce dds = (DridDataSorce) ElasticSearchDridDataSorceFactory.createDataSorce(properties); Connection connection = dds.getconnection(); PreparedStatement ps = connection.preparestatement("select recipes_key,recipes_title,material_nm from " + TestsConstants.TEST_INDEX + " where children(food_material,material_nm)=' 고추장 ' and recipes_title=' 해물탕 '"); ResltSet resltset = ps.execteqery(); List<String> reslt = new ArrayList<String>(); while (resltset.next()) { System.ot.println(resltSet.getString("recipes_key") + "," + resltset.getstring("recipes_title") + "," + resltset.getstring("material_nm")) } ElasticSearch 를 JDBC 로컨트롤할수있는 DridDataSorce 를이용하면나머지 SQL 문장의변경처리없이바로 JDBC 를통해조회처리가가능

5. 서비스아키텍쳐구성 이상적인서비스아키텍쳐의구성을고민 왜? 아무래도검색엔진이다보니 100% DB 를대처하긴힘듬, 현재까진보조하는 수단으로구성함 response response App Svc reqest Serving Search Serer App Svc reqest Serving Search Serer Realtime Indexing DB Server batch indexing Index Server Index Server DB Server 검색서비스장애시에는자동으로 DB로접속해서처리되도록장애대응처리함

6. 처리 Performance 비교 데이터조회건수 : 100 만건 Testing Tool : Jmeter 동접유저 : 1000 명 / 1,000 Reqest * 죄송합니다. 비교장표를못만들었어요

구성시고려사항 DB 보다아무래도엘라스틱이분산노드로구성하다보니, 더많은저장공간을 사용한다. 기본적은엘라스틱은 Schema-Free 하므로성격에맞는, 데이터를전환하였을때동일환경에서 Response 가최대 10배이상향상되는것을보고, 중간데이터조회시늦어지는것을 100% 로방지할수있었음, DB는백업정도의역할로사용하고, 모든데이터를엘라스틱 SEARCH 에서사용함

8. Test Demo 구성설명 Githb : https://githb.com/parkymin/elasticsearch-sql < 추후업로드 > Elastic SQL : http://180.70.211.156:9999/