오픈소스 검색엔진인 Elasticsearch 어떻게 저장하고 조회하는지 검색엔진의 개념에 대해서 간단히 살펴보고, Node.js 로 구현된 아주 간단한 예제를 소개합니다.
- 검색엔진과 Elasticsearch 소개
- Elasticsearch에서의 색인
- Elasticsearch에서의 조회
- Node.js 로 구현된 예제 소개
* 자바카페
자바카페 페이스북 : https://www.facebook.com/groups/javacafe/
자바카페 기술 블로그 : http://tech.javacafe.io/
[ http://infiniflux.com/download ]
The world's fastest time series DBMS.
What is InfiniFlux?
1) InfiniFlux is a time-series database which performs real-time data processing, i.e., data are inserted at high speed, retrieved and analyzed without elapsed time.
2) InfiniFlux also compresses and stores data in real-time. Its query language and syntax complies with the SQL standard. The extended SQL syntax provides additional features such as the text search tool.
2015. 09. 05 도커 서울 밋업 4번째(Open Container Korea 주최).
elasticsearch에 은전한닢 한국어 형태소 분석기를 적용하고 운영한 사례 발표.
- 사용자 사전별로 이미지를 만들기
- nginx를 이용해 http basic auth 적용하기
오픈소스 검색엔진인 Elasticsearch 어떻게 저장하고 조회하는지 검색엔진의 개념에 대해서 간단히 살펴보고, Node.js 로 구현된 아주 간단한 예제를 소개합니다.
- 검색엔진과 Elasticsearch 소개
- Elasticsearch에서의 색인
- Elasticsearch에서의 조회
- Node.js 로 구현된 예제 소개
* 자바카페
자바카페 페이스북 : https://www.facebook.com/groups/javacafe/
자바카페 기술 블로그 : http://tech.javacafe.io/
[ http://infiniflux.com/download ]
The world's fastest time series DBMS.
What is InfiniFlux?
1) InfiniFlux is a time-series database which performs real-time data processing, i.e., data are inserted at high speed, retrieved and analyzed without elapsed time.
2) InfiniFlux also compresses and stores data in real-time. Its query language and syntax complies with the SQL standard. The extended SQL syntax provides additional features such as the text search tool.
2015. 09. 05 도커 서울 밋업 4번째(Open Container Korea 주최).
elasticsearch에 은전한닢 한국어 형태소 분석기를 적용하고 운영한 사례 발표.
- 사용자 사전별로 이미지를 만들기
- nginx를 이용해 http basic auth 적용하기
A World United Against Infectious Diseases: Connecting Organizations for Regi...The Rockefeller Foundation
The world has made significant strides in tackling major public health challenges over the last several decades. We have eradicated one disease, smallpox, and are close to doing so with polio and guinea worm. We continue to make significant progress on other debilitating illnesses, including malaria, tuberculosis and HIV/AIDS. Yet, even as our technology and practices improve, new threats arise. In the last two decades, we have seen some 30 new zoonotic diseases emerge, from SARS to hantavirus to Ebola and more. Population pressures and economic growth push humans into ever closer contact with animals, disturbing ecosystems, and creating ripe conditions for new pathogens to jump from animals to humans. Add to this the incredible growth in global travel and trade and the risk of new diseases quickly spreading worldwide has never been greater. So while our ability to respond continually improves, the challenges we face increase as well.
Many factors make up the successful fight against emerging infectious diseases. But one factor trumps all* early detection and rapid identification of novel infections. If we can find a new pathogen early, we can often isolate it to the area in which it emerges. Conversely, failure to find the disease early allows the pathogen to propagate to new regions, countries and continents, making the response much more difficult and costly. Imagine if we had found HIV/AIDS when it was still contained to its region of origin*many of today’s 35 million people infected worldwide would have never been exposed. Our tools of detection, including point-of-care diagnostics and digital surveillance, continue to improve. However, the global infectious disease surveillance system is disjointed. Practices and protocols vary, and inefficiencies abound. The initiative we are jointly supporting*Connecting Organizations for Regional Disease Surveillance (CORDS)*tackles this challenge by building trust and collaboration across national borders.
CORDS unites regional disease surveillance networks from critical hotspots around the world to promote exchanges of best practices in surveillance and catalyze innovation in early disease detection. By working together with international bodies, including the World Health Organization (WHO), World Organization for Animal Health (IOE), and the Food and Agriculture Organization of the United Nations (FAO), CORDS will speed the development, capabilities and sustainability of all its network members to improve global surveillance and mitigate the potential impact of disease outbreaks both from epidemic diseases and from the recrudescence of endemic diseases.
Each of our organizations comes to this issue with equal commitment but different perspectives ranging from global health to disaster management to biosecurity and more. We are all united in our dedication to this effort, which fills a critical gap in global public health capacity. We look forward to CORDS contributing to improve health o
– Elastic stack과 Data pipeline의 개념
– 데이터의 종류와 형태 / Document 데이터 모델링 (mapping, data type)
– 분산 데이터 저장소 관점에서의 Elasticsearch (index, shard & replica, segment)
https://learningspoons.com/course/detail/elastic-stack/
21. 클러스터(CLUSTER)
- 클러스터는 Elasticsearch의 가장 큰 시스템 단위
- 하나의 클러스터는 여러 개의 노드로 이루어 짐
- 여러대의 서버가 하나의 클러스터를 구성할 수 있으며, 그 반대도 가능
- 같은 클러스터의 이름으로 노드를 실행하는 것만으로 자동확장이 가능
22. 노드(Node)
- 노드는 마스터 노드와 데이터 노드로 구분
- 마스터 노드는 전체 클러스터 상태의 메타 정보를 관리
- 기존의 마스터 노드가 종료되는 경우 새로운 마스터 노드가 선출됨
- 데이터 노드는 실제 데이터가 저장되는 노드
23. 노드바인딩
- 같은 클러스터 이름을 가지고 실행된 노드는 자동으로 바인딩
- 9200번부터 REST API를 위한 HTTP 통신 포트가 할당
- 9300번부터 노드간 바인딩을 위한 포트로 할당
24. 네트워크 바인딩
- 효율적인 스케일아웃을위해 네트워크에 있는 다른서버의 노드와도 바인딩
- 네트워크 바인딩을 위해 젠 디스커버리(ZEN DISCOVERY) 기능 내장
- 멀티캐스트와 유니캐스트 방식을 모두 지원
- 반드시 두 Elasticsearch 버전은 동일해야 함
25.
26. 샤드와 복사본
- 샤드는 데이터 검색을 위해 구분되는 최소 단위
- 색인된 데이터는 여러 개의 샤드로 분할 저장
- 기본적으로 인덱스당 5개의 샤드와 5개의 복사본으로 분리
- 개수 설정을 제외하면 사용자가 직접 샤드에 접근하는 경우는 없음
- 데이터가 색인되어 저장되는 공간을 최초샤드(Primary Shard)라 함
- 최초 샤드에 데이터가 색인되면 동일한 수 만큼 복사본을 생성
- 최초 샤드가 유실되는 경우 복사본을 최초 샤드로 승격
- 최초 샤드와 복사본은 동시검색대상이 되어 성능향상에 이점이 있음
- 최초 샤드와 복사본은 서로 다른 노드에 저장
- 생성된 인덱스의 샤드 설정은 변경 불가능
이는 검색어와 주제어와의 일치 문제
사용자가 반드시 검색엔진의 주제어만 사용한다는 보장이 없다. 서로 다른 검색어와 일치시켜야하는 등의 어려운점이 많다.
자바 언어로 개발
사용자 위치 정보 이용 가능
다국어 검색 지원
자동 완성 지원
미리 보기 지원
철자 수정 기능 지원
ex) 로그파일에서 특정 문자열을 MySQL에 넣을려한다면 MySQL라이브러리를 써야하며 언어별로 다르게 지원.
원래 언어별 작업 변환 용도로 사용되던 것이 hadoop이다.
hadoop자체는 제너럴라이즈 되어 있어 접근하기 위한 부가서비스(echo서비스)가 상당히 많아서 서버에서 사용하기엔
부담스러워지는 문제가 존재, 그러다보니 최근에 뜨기 시작하게됨.
노드는 데이터를 색인하고 검색을 수행하는 단위 프로세스
기존 노드에 새 노드를 실행하여 연결하는 것만으로 확장 가능
DISCOVERY를 내장하여 별도의 분산시스템관리자 불필요
기존 마스터노드가 종료되면, 새로운 마스터 노드가 선출
데이터 노드가 하나밖에 없는 경우 복사본은 생성되지 않음
마스터 노드와 데이터노드가 반드시 상호 배타적 관계는 아님
일반적으로 데이터 노드는 외부접근을 차단