[Elasticsearch] Elasticsearch(엘라스틱서치)란 무엇인가요!?
ℹ️

[Elasticsearch] Elasticsearch(엘라스틱서치)란 무엇인가요!?

Tags
Database
Elasticsearch
작성일
Author
URL
notion image

🚀 ElasticSearch ?


엘라스틱서치(Elasticsearch)는 루씬(Lucene) 기반의 오픈 소스 검색 엔진입니다. 대량의 데이터를 실시간으로 저장, 검색, 분석할 수 있으며, 이를 통해 복잡한 검색 기능을 빠르고 효율적으로 제공합니다. 로그나 트랜잭션 데이터 분석, 검색 백엔드, 시각화 도구 등 다양한 용도로 활용됩니다.
 

📌 특징


  • 분산 시스템: 자동으로 데이터를 분산시켜 저장하고, 이를 통해 높은 가용성과 확장성을 제공합니다.
  • 실시간 검색: 데이터가 인덱스에 추가되는 즉시 검색이 가능하며, 이는 거의 실시간에 가까운 검색 결과를 가능하게 합니다.
  • 다양한 데이터 처리: JSON 기반의 다양한 형태의 데이터를 쉽게 색인, 검색, 분석할 수 있습니다.
  • 풍부한 API: HTTP RESTful API를 비롯하여 다양한 언어로 된 클라이언트 라이브러리를 제공하여, 개발자가 쉽게 엘라스틱서치를 사용할 수 있게 합니다.
 

📌 기능


  • 텍스트 검색: 고급 텍스트 분석 기능을 통해 효율적인 텍스트 검색을 제공합니다.
  • 집계 기능: 데이터의 집계, 분석 작업을 수행하여 복잡한 데이터 인사이트를 제공합니다.
  • 데이터 시각화: 엘라스틱서치와 연동되는 키바나(Kibana)를 통해 데이터를 시각화하고 대시보드를 구성할 수 있습니다.
  • 데이터 저장 및 검색: 대량의 데이터를 빠르게 저장하고, 고속으로 검색할 수 있는 기능을 제공합니다.
 

📌 RDBMS 차이점


데이터를 관리하는 시스템으로서, 관계형 데이터베이스 관리 시스템(RDBMS)과 엘라스틱서치는 각기 다른 특성과 장단점을 지니고 있습니다. 복잡한 데이터를 처리하고 분석하는 현대적 요구에 부합하기 위해, 이 두 시스템의 차이점을 이해하는 것은 중요합니다.
 

데이터 모델

  • RDBMS: 정형화된 데이터를 위한 스키마 기반의 테이블 구조를 사용합니다. 이는 데이터의 일관성과 무결성을 유지하는 데 유리합니다.
  • 엘라스틱서치: 비정형 데이터를 저장하기 위한 유연한 JSON 형식의 문서(Document) 기반 모델을 사용합니다. 이를 통해 다양한 형태의 데이터를 손쉽게 저장하고 검색할 수 있습니다.

검색 성능

  • RDBMS: 복잡한 쿼리와 조인 연산을 지원하지만, 대량의 데이터에서는 검색 성능이 저하될 수 있습니다.
  • 엘라스틱서치: 역 인덱싱 구조를 사용하여 대량의 데이터에서도 빠른 검색 성능을 제공합니다. 텍스트 검색과 데이터 분석에 특화되어 있습니다.

확장성

  • RDBMS: 수직적 확장(하드웨어의 성능 향상)에는 강하지만, 수평적 확장(데이터를 여러 서버에 분산)에는 제한적입니다.
  • 엘라스틱서치: 수평적 확장이 용이하며, 클러스터 내에서 데이터를 자동으로 분산하여 처리할 수 있습니다. 이로 인해 대규모 데이터셋을 처리하는 데 유리합니다.

실시간 처리

  • RDBMS: 트랜잭션과 일관성에 초점을 맞추어 설계되었기 때문에 실시간 검색 및 분석에는 제약이 있을 수 있습니다.
  • 엘라스틱서치: 데이터가 인덱스에 추가되는 즉시 검색이 가능해 거의 실시간으로 데이터를 검색하고 분석할 수 있습니다.

사용 사례

  • RDBMS: 금융 거래, 고객 정보 관리, 재고 관리 등 정확한 데이터 무결성과 일관성이 요구되는 분야에서 강점을 보입니다.
  • 엘라스틱서치: 로그 분석, 실시간 데이터 분석, 대규모 문서 검색 등 빠른 검색 성능과 유연한 데이터 처리가 필요한 분야에 적합합니다.
 

📌 RDBMS 비교


기능
엘라스틱서치
RDBMS
데이터 모델
비정형 데이터에 최적화된 문서 기반
정형화된 데이터에 최적화된 테이블 기반
검색 성능
대량의 데이터에서 빠른 검색 성능 제공
인덱스를 사용한 검색이 가능하지만 대량 데이터 검색에서는 성능 저하 가능성
확장성
수평적 확장이 용이하며, 클러스터를 통한 분산 처리 지원
수직적 확장에는 강하지만, 수평적 확장이 제한적
실시간 처리
거의 실시간 검색 및 분석 가능
실시간 처리에 제약이 있을 수 있음
데이터 분석 및 집계
고급 분석 및 집계 기능 제공
복잡한 쿼리를 통한 데이터 분석 가능하지만, 대규모 데이터에서는 성능 저하
 
엘라스틱서치
RDBMS
설명
인덱스(Index)
데이터베이스(Database)
데이터의 집합. 엘라스틱서치에서는 인덱스가 데이터 저장의 최상위 단위이며, RDBMS에서는 데이터베이스가 이 역할을 합니다.
타입(Type)
테이블(Table)
인덱스 내에서 데이터를 분류하는 방법. 엘라스틱서치 7.0 이후부터는 사용되지 않습니다. RDBMS에서는 테이블이 데이터를 구조화하는 주요 수단입니다.
도큐먼트(Document)
행(Row)
데이터의 기본 단위. 엘라스틱서치에서는 JSON 형태로 저장되며, RDBMS에서는 행으로 데이터가 구성됩니다.
필드(Field)
열(Column)
데이터의 속성. 엘라스틱서치의 도큐먼트에서 각각의 데이터 항목을 의미하며, RDBMS의 테이블에서는 열이 이 역할을 합니다.
매핑(Mapping)
스키마(Schema)
데이터 구조 정의. 엘라스틱서치에서는 인덱스에 저장된 도큐먼트의 필드 타입을 정의합니다. RDBMS에서는 테이블의 스키마를 통해 각 열의 데이터 타입을 정의합니다.
샤드(Shard)
-
데이터 분할 및 분산 저장 단위. 엘라스틱서치는 샤딩을 통해 데이터를 여러 노드에 분산시켜 저장하여 확장성과 성능을 향상시킵니다. RDBMS에서는 일반적으로 샤딩 개념이 내장되어 있지 않으며, 수동으로 구현해야 합니다.
복제(Replication)
복제(Replication)
데이터의 복제. 엘라스틱서치에서는 데이터의 가용성과 장애 대비를 위해 샤드의 복제본을 생성합니다. RDBMS에서도 복제를 통해 데이터의 가용성을 높일 수 있습니다.

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

댓글

guest