기타

Elastic search?

whyHbr 2025. 2. 17. 23:44
728x90
반응형

db검색의 한계점

"흰색모자" 검색 시,

  •  select title from product where title like '%흰색모자%'
    • '흰색모자' 와 완벽하게 일치해야 효율적인 사용이 가능하다.
    • 쿼리가 복잡해짐.
    • 대량의 데이터 처리시 성능 한계 존재.

 

Elastic search: 분산형 검색 엔진, 대용량 데이터를 실시간으로 처리하고 분석하는 능력이 뛰어남.

다양한 형태의 데이터를 색인 가능, 복잡한 검색 쿼리에 대해서도 빠르고 정확한 결과를 제공.

 

왜 사용?

  • 루씬 기반의 검색 엔진. 복잡한 데이터 셋에서 정보를 신속하고 정확하게 검색
  • 다양한 데이터 관리 지원
  • 유연한 색인화(json 형식 색인화) 및 api 제공.
  • 분산 시스템 및 효율적 데이터 관리.
  • Kibana 와의 연계 (시각화 도구)

 

Elastic Stack?

Elastic search 검색, Kibana 분석 시각화, LogStash 데이터 변경, Beats 수집

을 제공하는 소프트웨어스택.

  • 지원 기능
    • 자동 완성, 필터, 랭킹 기능을 통한 검색 결과 제공
    • 강력한 보안 기능
    • APM 도구로서의 역할 
    • 풍부한 매트릭스 시각화
    • 서비스 모니터링 기능
  • 구성 요소
    •  Elastci search :
      • 빠르게 저장된 문서를 검색, 분석할 수 있는 검색 엔진
      • 데이터를 실시간으로 색인
      • 다양한 쿼리와 필터를 통한 검색 결과 반환
      • json 기반 데이터 유연성
      • 전문 검색 기능 full text search
      • 세밀한 검색 및 필터링
      • 다양한 검색 쿼리 유형 지원
      • 높은 확장성 및 안정성
    • Kibana
      • 엘라스틱서치에 저장된 데이터 시각화
      • 데이터를 통한 그래프, 차트, 지도 등 대시보드 구성
      • 검색 쿼리를 작성하고 검색해 볼 수 있는 화면 제공
      • 실시간 모니터링 지원
    • Beats
      • 경량 데이터 수집기. 메모리와 cpu 사용이 적음
      • 다양한 모듈로 구성, 특정 데이터 소스에 따라 데이터를 수집하는 역할
      • 다양한 데이터 수집 플러그인
      • 데이터의 실시간 처리와 전송
      • 데이터 전송의 보안 기능
      • 중앙화된 데이터 관리 지원
    • 엑셀러 레이트 Elastic APM
      • 애플리케이션 성능 모니터링 기능
      • 애플리케이션 내부 성능 수집 및 모니터링 ( 트랜잭션, 지연분석)
      • 다양한 애플리케이션 프레임 워크와 언어 지원

 

  • 특징
    • 중앙 집중화된 데이터 관리
    • 실시간성 플랫폼
    • 즉가적인 데이터 대응
    • 다양한 클라이언트 라이브러리와 API
    •  사용자 운영 편의성 및 유지보수 효율성
728x90

 


 

RDB(관계형 DB)와 Elastic search  용어 비교

RDB Elastic search  
테이블 인덱스 데이터 저장하고 관리
한 행 문서 (json 형식으로 저장)  
컬럼 필드(동적으로 추가, 수정 가능. 데이터 구조 변화에 유연하게 대응)  
물리파티션 샤드  
스키 매핑  

 


 

인덱스의 구성

  • 인덱스: 데이터 저장 및 검색을 위한 데이터 구조. 여러 개의 도큐먼트 포함 가능. 각 고유한 이름이 있어 해당 이름을 사용해 데이터 조회, 관리.
  • Document 문서: 인덱스 내 json 형식의 데이터 기본 단위. 데이터를 표현하는 단위.하나의 문서는 하나의 엔티티를 나타낸다. 필드의 집합으로 구성된다. 
  • 필드: 각 문서는 데이터 속성이나 특성을 나타내는 필드로 구성. 각 문서를 여러 개의 필드를 가질 수 있다.필드는 문서의 속성을 나타낸다. 예를 들어 사람 문서의 경우 name, email, age  같은 필드가 있을 수 있다. 실제의 데이터.
  • 텀 term : 필드 내 실제 데이터 단위. elastic search  에 색인되고 검색 할 단어 저장


노드의 개념

  • 노드의 정의: elastic search 클러스터를 구성하는 개별 서버 인스턴스. 실제 데이터를 저장하고, 쿼리를 처리하는 개별 처리 서버 혹은 시스템. 
  • 역할과 기능: 데이터 저장, 검색, 분석, 쿼리 처리 등 포함한 다양한 작업 처리
  • 클러스터 연결: 각 노드는 고유한 이름과 식별 정보(IP, port)를 가지고 클러스터 내에서 협력, 클러스터 관리. 다른 노트와 통신하여 데이터를 조정하거나 균등하게 분배 가능. 
  • 노드 유형: 마스터 노드, 데이터 노드, 코디네이팅 노드 등 각각의 특정 역할 수행
  • 노드 구성의 중요성: 클러스터의 성능과 안정성에 영향을 미침.
  • 각 노드는 클러스터의 일부. 데이터를 저장하고, 클러스터 내에서 작업을 분담한다.

 

마스터 노트

  • elastic search 클러스터의 핵심 관리자, 클러스터의 안정적인 운영을 책임진다
  • 클러스터 내 인덱스 생성 및 삭제, 노드 관리, 샤드 분배 등 중요한 결정을 내린다.
  • 클러스터의 연속적인 서비스 제공을 위해 적어도 한 개 이상의 마스터 노드 필요 (실제 운영 환경에서는 3개 이상의 마스터 노드)
  • 클러스터 상태를 모니터링 하며, 필요한 경우 마스터 노드 역할을 수행할 수 있는 노드로의 전환을 관리. 

 

데이터 노드

  • elastic search 클러스터에서 데이터를 실제 저장하고 관리하는 역할
  • 색인, 검색, 집계 담당. CPI, I/O , 메모리와 같은 하드웨어 리소스를 많이 소모
  • 클러스터 안정성을 위해 데이터 노드는 적정한 수를 유지하고 장애 발생 시를 대비해 적절한 샤드 운영을 해야함.
  • 데이터 노드 종류에는 여러 가지가 있으며 데이터의 특성과 접근 패턴에 맞게 조정
  • 데이터 노드 구성은 성능 최적화 클러스터의 안정성, 비용적인 측면에서 직접적인 영향을 끼침. 
    • 데이터 노드의 종류
      • data_content: 지속적으로 유지되어야 하는 데이터 저장, 주로 읽기 작업이 많은 검색 집계 쿼리에 사용
      • data_hot: 최신 데이터를 빠르게 읽고 쓰는데 필요, 고성능 SSD 같은 저장 장치를 사용하여 최근 데이터 엑세스
      • data_warm: 쿼리 빈도가 낮은 데이터를 보관. 비용 효율적인 HDD 를사용, 몇 주 전 데이터를 저장
      • data_cold: 빠르게 검색 할 필요 없는 오래된 데이터 보관하며, 필요에 따라 데이터를이동시켜 저장 공간을 효율적으로 사용.
      • data_frozen: 거의 사용되지 않거나 아카이브 목적의 데이터를 저장, 데이터 보전이 주된 목적일 때 사용.     

 

인제스트 노드 Ingest

  • 데이터 수집, 가공 및 색인 전달 과정을 관리하는 노드
  • 데이터를 전처리, 다양한 소스의 데이터를 효과적으로 처리. 필터링, 파싱, 변환 등 데이터를 최적화 형식으로 가공
  • 로그, 센서 데이터, 웹크롤링 결과 등 다양한 데이터 유형을 처리할 수 있으며 가공된 데이터를 데이터 노드에 색인해 저장
  • 데이터 처리 과정에서 리소스 사용이 높기 때문에, 인제스트 노드와 데이터 노드들을 분리해 운영하는 것이 좋음 
  • 인제스트 노드는 데이터 노드와 함께 구성되어 데이터 처리 및 색인 프로세스를 효율적으로 수행

 

클라이언트 노드

  • 클러스터에 대한 요청을 받아 마스터 노드나 데이터 노드로 전달하는 역할을 한다.
  • 쿼리 라우팅, 요청 처리, 러드 밸런싱을 담당한다.

 

코디네이팅 노드

  • 클러스터의 요청을 라우팅하고, 상태를 관리하는 역할로 대규모 클러스에서는 별도로 분리해 운

 

 


 

클러스터

  • 노드들의 집합, 노드들이 협력하여 데이터 저장, 검색 및 분석 작업 수행
  • 클러스터는 여러 개의 노드가 모여 데이터를 분산 저장하고, 쿼리 작업을 분담하여 처리하는 환경을 제공한다.
  • 각 노드는 고유한 이름, IP,를 통해 식별하며 클러스터에 가입하여 클러스터의 전반적인 상태를 관리, 데이터 관련 작업 처리
  • 다양한 룰을 통해 각 노드에 특정 기능과 권한을 할당
  • 데이터의 안정성과 지속적인 가용성을 보장하기 위해 가용영역에 걸쳐 노드를 분산 배치
  • 대용량 데이터를 효율적으로 처리 가능하며, 필요에 따른 확장 용이

 

주요 기능

  • 데이터 분산. 클러스터 내 여러 노드들은 데이터를 분산 저장. 이를 통해 고가용성과 확장성 확보
  • 노드의 추가, 제거를 통한 시스템의 성능, 용량 조절
  • 레플리카를 활용한 고가용성. 데이터가 손실되지 않게 여러 개의 복사본을 저장한다.
  • 분산 쿼리 처리. 여러 노드들이 쿼리 작업을 분산 처리해 빠른 응답시간과 높은 성능 제공.

특징

  • 고유한 이름
  • 자동 리밸런싱. 샤드의 분배 빛 리밸런싱을 자동으로 처리. 클러스터에 새 노드가 추가되면, 기존 데이터를 새 노드에 자동으로 분배해 부하를 분산.
728x90

'기타' 카테고리의 다른 글

linux - 명령어 실행 시 조회 순서, 명령어에 경로가 포함된 경우 실행 차  (0) 2025.02.23
linux 리눅스 권한, 명령어  (0) 2025.02.19
Redis 를 어디에 쓸까  (0) 2025.01.10
Redis란  (0) 2025.01.08
대규모 서비스란  (0) 2025.01.05