베하~! 탑신병자 듀오 팀 나르 입니다!
이번 포스팅에서는 ElasticSearch에 대해서 알아보도록 하겠습니다
ElasticSearch란?
Elasticsearch는 Apache Lucene( 아파치 루씬 ) 기반의 Java 오픈소스 분산 검색 엔진입니다.
Elasticsearch를 통해 루씬 라이브러리를 단독으로 사용할 수 있게 되었으며, 방대한 양의 데이터를 신속하게, 거의 실시간( NRT, Near Real Time )으로 저장, 검색, 분석할 수 있습니다.
또한, Elasticsearch는 검색을 위해 단독으로 사용되기도 하며, ELK( Elasticsearch / Logstatsh / Kibana )스택으로 사용되기도 합니다.
ELK 스택이란?
- 분석 및 저장 기능을 담당하는 ElasticSearch
- Logstash로부터 받은 데이터를 검색 및 집계를 하여 필요한 관심 있는 정보를 획득
- 수집 기능을 담당하는 Logstash
- 다양한 소스( DB, csv파일 등 )의 로그 또는 트랜잭션 데이터를 수집, 집계, 파싱하여 Elasticsearch로 전달
- 시각화 도구 Kibana
- Elasticsearch의 빠른 검색을 통해 데이터를 시각화 및 모니터링
ElasticSearch 주요 개념
클러스터(Cluster)
- ElasticSearch에서 가장 큰 시스템 단위, 최소 하나 이상의 노드로 이루어진 노드들의 집합
- 전체 데이터를 저장하고 모든 노드를 포괄하는 통합 색인화 및 검색 기능을 제공
노드(Node)
- ElasticSearch를 구성하는 하나의 단위 프로세스
- 클러스터에 포함된 단일 서버로서 데이터를 저장하고 클러스트의 색인화 및 검색 기능에 참여
인덱스(Index)
- RDBMS에서 database와 대응하는 개념
- 단일 클러스터에서 원하는 개수의 색인을 정의 할 수 있다
샤드(Shard) / 복제(Replica)
- 샤드(Shard)
- 데이터를 분산해서 저장하는 방법
- 인덱스를 여러 Shard로 쪼갠 것
- 기본적으로 1개가 존재하며, 검색 기능 향상을 위해 클러스터의 Shard 갯수를 조정하는 튜닝을 한다
- Replica
- 노드를 손실 되었을 경우 데이터 신뢰성을 위해 Shard를 복제하는 것
ElasticSearch 특징
오픈소스 (open source)
- Elasticsearch의 핵심 기능들은 Apache 2.0 라이센스로 배포되고 있고 Elastic Stack의 모든 제품들은 깃헙 리파지토리 에서 소스들을 찾을 수 있다
실시간 분석
- 클러스터가 실행되고 있는 동안에는 계속해서 데이터가 입력 되고, 그와 동시에 실시간에 가까운 속도로 색인된 데이터의 검색, 집계가 가능하다
전문(full text) 검색
- 색인된 모든 데이터를 역파일 색인 구조로 저장하여 가공된 텍스트를 검색한다.
- Key-Value 형식이 아닌 문석 기반으로 되어 있어 복합적인 정보를 포함하는 형식의 문서를 있는 그대로 저장히 가능하며, 사용자가 직관적으로 이해하고 사용할 수 있다.
Restful
- Rest API를 기본으로 지원하며 모든 데이터 조회, 입력, 삭제를 http 프로토콜을 통해 Rest API로 처리
멀티테넌시 (multitenancy)
- 서로 다른 인덱스들을 별도의 커넥션 없이 하나의 질의로 묶어서 검색하고, 검색 결과들을 하나의 출력으로 도출할 수 있다.
ElasticSearch 장점
속도
- Lucene를 기반을 구축되어 전체 텍스트 검색에 뛰어나다
- 실시간 검색 플랫폼으로 문서가 색인될 때부터 검색 가능해질 때까지의 대기 시간이 짧다
- 이런 속도로 인하여 보안 분석, 인프라 모니터링 같은 짧은 검색 시간이 중요할 경우 사용한다
분산적
- 여러 컨테이너에 걸쳐 여러개의 Shard가 분산되어 있으며, 이 Shard는 복제되어 하드웨어 장애 시에 중복되는 데이터 사본을 제공 받을 수 있다.
- 수백개의 서버까지 확장하고 페타바이트 데이터를 처리할 수 있도록 해준다.
데이터 수집, 시각화를 간소화
- Logstash를 통하여 ElasticSearch에서 색이하기 전에 데이터를 훨씬 더 쉽게 처리할 수 있게 된다
- Kibana는 데이터의 실시간 시각화를 제공하여, UI를 통해 애플리케이션 성능 모니터링(APM), 로그, 인프라 메트릭 데이터에 신속하게 접근할 수 있다.
지금까지 ElasticSearch에 대하여 알아봤습니다
다음 포스팅에는 더욱 흥미로운 주제로 돌아오겠습니다~!
그럼 베빠~!
'Database' 카테고리의 다른 글
[Airflow] Airflow CLI 명령어 (0) | 2023.07.24 |
---|---|
빅쿼리 INFORMATION_SCHEMA (0) | 2023.07.21 |
[Airflow] 병렬 처리 Task (0) | 2023.07.17 |
Class를 활용한 Custom Operator 생성 (0) | 2023.07.13 |
빅쿼리 보안 (0) | 2023.07.07 |
댓글