Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
Elastic stack
Elastic stack는 데이터 분석에 필요한 모든 유형의 데이터를 실시간으로 검색, 분석 및 시각화할 수 있는 Elastic 사의 오픈소스 데이터 분석 플랫폼이다.
Elastic stack은 크게 4가지 기술로 구성되어 있다.
- Elastic Search
- Kibana
- Logstash
- Beat
이 중에 핵심 기술인 Elastic Search는 NOSQL을 사용하는 검색 엔진이다.
따라서 단순히 사용한다면 NOSQL DB로도 활용할 수 있지만, Elastic Search의 장점을 구조를 통해 알아보자.
Elastic Search
Elastic Search는 간단히만 보면 3가지로 구성된다
- NOSQL
- Search Engine
- REST API
elastic search는 NOSQL DB를 포함하고 이를 내장된 search engine을 통해 빠르게 조회할 수 있다.
그렇다면 질의 언어로는 어떤것을 사용할까?
바로, HTTP 프로토콜 REST API를 통해 접근하게 된다.
HTTP 메서드로 익히 알고있는 GET/PUT/DELETE/UPDATE를 사용하게 된다.
실제로 데이터를 DB에 올린 후에 GET API를 통해 질의를 하면 , 오른쪽 상단에 200-OK, 221ms로 서버로부터 통신 데이터를 받아온 것을 확인할 수 있다.
데이터 저장 구조
elastic search는 NOSQL이기 때문에 스키마의 제약 없이도 문서형 데이터를 저장하고 조회하는 데에 특화되어 있다.
빅데이터의 활용에 최근 elastic search가 많이 활용되는 이유를 구조를 파악하여 확인해보자.
elastic search는 데이터를 노드들로 분산시켜 빠른 검색이 가능하다.
노드는 독립된 컴퓨터 자원이라고 생각할 수 있다. 노드들을 클러스터로 묶일 수 있다.
단일 데이터 단위는 Document(문서)라고, 하고 이들의 집합이 index이다.
예를 들면 하나의 요리의 조리법은 문서 1개, 한식 요리 전체의 조리법은 index로 비유할 수 있다.
index는 shard들로 나누어지는데, shard는 컴퓨팅 파워나 데이터의 크기에 따라 직접 설정해 주어야 한다.
정리하면 document -> shard -> index으로 데이터 집합이 형성되고, shard들이 각 node에 저장되는 단위가 된다.
노드는 데이터 노드와 마스터 노드로 나뉘는데, 마스터노드는 인덱스의 메타 데이터, 샤드의 위치와 같은 클러스터 상태(Cluster Status) 정보를 관리한다.
이외로 노드가 고장 났을 때를 대비하여 샤드의 복제본을 다른 노드에 유지하는데, 이에 대한 자세한 내용은 Elastic 가이드 북을 참조하자.
https://esbook.kimjmin.net/03-cluster/3.2-index-and-shards
Elastic Search는 이러한 구조를 통해 빠르게 데이터를 검색할 수 있는데,
조건 검색, 패싯 검색, Full-text 검색, 형태소 분석, n-gram, 연관어, 자동 완성, 실시간 검색 등의 기능을 지원한다.
Elastic stack 기능들을 cloud로 지원하는 Elastic Cloud를 이용하면 노드 별 성능 모니터링뿐만 아니라 scale-out도 자동으로 진행해 준다.
참조 문서
'개발 > Elastic Search' 카테고리의 다른 글
Elastic Search 페이징(search after) 활용하기 (0) | 2023.12.13 |
---|---|
Elastic Search 날짜(거리)로 Score 계산하기 (0) | 2023.12.12 |
Elastic Search HTTP 쿼리 요청하기 (python) (0) | 2023.10.24 |