안녕하세요 엉짱입니다.
오늘은 elasticsearch의 특징을 조사해 보았습니다.
elasticsearch는 뛰어난 검색 기능을 제공하고, 대규모 분산 시스템을 구축할 수 있도록 수많은 기능을 하고 있는데요.
강력한 검색 기능을 제공하데 반해 설치 과정과 사용 방법이 매우 쉽고 편리 합니다.
elasticsearch는 기업에서 뿐만 아니라 개인을 위한 검색 엔진 프로젝트에도 널리 활용할 수 있습니다.
기존의 DBMS에서는 다루기 어려웠던 분야인 전문검색과 문서의 점수화를 이용한 정렬, 데이터 증가량에 구애받지 않는 실시간 검색 등을 elasticsearch를 이용해 구현할 수 있구요.
elasticsearch는 다양한 plug-in을 손쉽게 설치해서 기능을 확장할 수도 있고 아마존 웹 서비스(AWS), 마이크로소프트 애저(Azure)와 같은 클라우드 서비스나 하둡(Hadoop)과 같은 빅데이터 플랫폼과의 연동도 지원이 가능합니다.
1. 아파치 루씬 기반
아차피 루씬은 자바 언어로 개발된 검색 라이브러리입니다.
창시자인 더그커팅이 2000년 3월 Sourcefoge에 최초 버전을 공개했으며, 현재는 elasticsearch를 비롯한 솔라, 티카와 같은 프로젝트를 통해 널리 사용되고 있습니다.
아파치 루씬에는 매우 강력한 기능들이 있는데요 검색엔진으로 사용자 위치 정보를 이용할 수 있고, 다국어 검색, 철자 수정 기능, 자동완성, 미리보기 등의 다양한 기능을 지원하고 있습니다.
elasticsearch는 아파치 루씬을 기반으로 만들어졌기 때문에 루씬 기능을 대부분 지원하며, 마찬가지로 자바 언어로 개발되었습니다.
2. 실시간 분석
elasticsearch에 저장된 데이터는 검색에 사용되기 위해 별도의 재시작이나 상태의 갱신이 필요하지 앖습니다.
데이터는 색인 작업이 완료됨과 동시에 바로 검색할 수 있기 때문인데요. 이러한 특징을 elasticsearch에서는 실시간 분석이라 부릅니다.
3. 분산 시스템
elasticsearch는 여러 개의 노드로 구성되는 분산시스템입니다.
노드는 데이터를 색인하고 검색 기능을 수행하는 elasticsearch의 단위 프로세스입니다. 소규모의 시스템에서 적은 수의 노드로 시스템을 구성한 후에 시스템의 규모가 늘어나면 기존 노드에 새 노드를 실행해 연결하는 것으로 쉽게 시스템을 확장할 수 있고, 데이터는 각 노드에 분산 저장되고 복사본을 유지해 각종 충돌로부터 노드 데이터의 유실을 방지합니다.
4. 높은 가용성
elasticsearch는 하나 이상의 노드로 구성되어 있으며, 각 노드는 1개 이상의 데이터 원본과 복사본을 가지고 있어 서로 다른 위치에 나누어 저장하고 있습니다. 노드가 종료되거나 실행에 실패하는 경우 elasticsearch는 노드들의 상태를 감지하고 종료된 노드가 가지고 있던 데이터를 다른 노드로 옮기는 작업을 수행합니다. 이러한 과정이 있어 elasticsearch는 항상 일정한 데이터 복사본의 개수를 유지하고 높은 가용성과 안전성을 보장한다고 할 수 있습니다.
5. 멀티 테넌시
elasticsearch의 데이터는 여러 개로 분리된 인덱스들에 그룹으로 저장이 됩니다. 인덱스는 관계형 DB 모델에서의 데이터베이스로 대응되는데, 관계형 DB에서 다른 데이터베이스의 데이터를 검색하려면 별도의 커넥션을 생성해야 하는 것과 달리 elasticsearch에서는 데이터를 검색할 때 서로 다른 인덱스의 데이터를 바로 하나의 질의로 묶어서 검색하고 여러 검색 결과를 하나의 출력으로 도출할 수 있도록 하고 있습니다. 이러한 특징을 elasticsearch에서는 멀티 테넌시라고 부릅니다.
6. 전문검색
elasticsearch는 데이터 색인을 이용한 전문검색을 지원하고 있습니다. 데이터의 전체 문장에서 검색어를 추출해 저장하고 이를 바탕으로 검색하는 전문검색을 지원합니다.
7. JSON 문서 기반
elasticsearch의 모든 데이터는 기본적으로 문서의 모든 필드가 색인되어 JSON 구조로 저장됩니다. 그러므로 모든 레벨의 필드에 접근이 쉽고, 매우 빠른 속도로 검색이 됩니다. 또한, NoSQL과 같이 스키마 프리를 지원하므로 별도의 사전 매핑 없이도 JSON 문서 형식으로 데이터를 입력하면 바로 검색 가능한 형태로 색인 작업이 수행됩니다.
8. RESTFul API
RESTFul API를 지원하므로 URI를 사용한 동작이 가능합니다. 또한, HTTP 프로토콜로 JSON 문서의 입출력과 다양한 제어를 할 수 있습니다.
이상 elasticsearch의 특징에 대해서 간단히 알아 봤습니다.
출처: https://kixxf.tistory.com/11 [엉짱]
'Infra & DevOps' 카테고리의 다른 글
Understanding How Facebook Disappeared from the Internet (0) | 2021.10.05 |
---|