Elasticsearch 특징

1) JSON 기반의 스키마 없는 저장소

Elasticsearch는 검색엔진이지만, NoSQL 처럼 사용할 수 있다. 데이터 모델을 JSON으로 사용하고 있기 때문에 요청과 응답을 모두 JSON 문서로 주고받고 소스 저장도 JSON 형태로 저장한다. 스키마를 미리 정의하지 않기 때문에 JSON 문서를 넘겨주면 자동으로 인덱싱한다. 숫자나 날짜 등의 타입은 자동으로 매핑한다.


2) Multi-tenancy

Elasticsearch 는 multi-tenancy를 지원한다. 하나의 엘라스틱서치 서버에 여러 인덱스를 저장하고, 여러 인덱스 데이터를 하나의 쿼리로 검색할 수 있다.


3) 확장성과 유연성

여러 컴퓨팅 자원의 증가와 감소에 대해서 확장성과 유연한 운영이 가능하다. 이 역시 클러스터의 시스템 단위로 나누어지기 때문이다. 또한 장애극복에 대해서도 좋은데, 이는 엘라스틱 서치에서 샤드와 레플리카가 존재하기 때문이다. 특정 노드에서 장애가 발생하는 경우에 Primary Shard는 역할을 다른 노드의 레플리카가 수행한다.


4) 분산 저장소

엘라스틱서치는 분산 검색엔진이다. 키에 따라 여러 샤드가 구성되는 방식으로 데이터를 분산한다. 인덱스는 각각의 샤드마다 구성된다. 각각의 샤드는 0개 이상의 복제본을 가지고 있으며, Elasticsearch는 클러스터링을 지원하며 클러스터가 가동될 때 여러 노드 중 하나가 메타데이터 관리를 위한 마스터 노드로 선출된다. 마스터 노드가 다운되면 자동으로 클러스터 내의 다른 노드가 마스터가 된다. 노드 추가 또한 매우 간단한데, 같은 네트워크에 노드를 추가하는 경우 노드가 멀티캐스트를 이용해 자동으로 클러스터를 찾아 자신을 추가한다.


5) REST API 이용

엘라스틱서치는 REST API 를 제공한다. 인덱스 생성과 삭제, 매핑 생성과 삭제, 검색, 설정 변경 등 대부분의 기능을 REST API를 통해 제공한다. REST API 이외에도 Java,Python, Ruby 등의 언어별 클라이언트도 제공하고 있다.


다른 내용

매핑

매핑은 관계형 데이터베이스에서 스키마와 동일하다. 엘라스틱서치에서 매핑없이 데이터를 넣을 수 있는가. 넣을 수 있다. 하지만 매핑 없이 데이터를 넣는 것은 매우 위험하다. 왜냐하면 도큐먼트에 date 를 넣을 때, 엘라스틱서치에 날짜개념이 없어서 문자열로 저장할 수 있으며. 숫자이며 문자인지 구별이 갈 수 없을 때 문자로 넣을 수 있다. 


그래서 키바나로 데이터를 시각화하는 경우 올바르지 않은 시각화 결과가 나올 수 있다. 데이터를 관리할 때 우선적으로 매핑을 추가해주어야 한다. 또는 데이터가 이미 있을 때는 매핑을 추후에 추가해주어야 한다. 


스키마 (Schema)

컴퓨터 과학에서 데이터베이스 스키마(database schema)는 데이터베이스에서 형식 언어로 정의한 구조이며 아래와 같다.

  • 자료의 구조

  • 자료의 표현 방법

  • 자료 간의 관계 

데이터베이스 관리 시스템(DBMS)이 주어진 설정에 따라 데이터베이스 스키마를 생성하며, 데이터베이스 사용자가 자료를 저장, 조회, 삭제, 변경할 때 DBMS는 자신이 생성한 데이터베이스 스키마를 참조하여 명령을 수행한다. 


스키마는 3층의 구조로 되어있다.

  • 외부 스키마(External Schema)
    프로그래머나 사용자의 입장에서 데이터베이스의 모습으로 조직의 일부분을 정의한 것

  • 개념 스키마(Conceptual Schema)
    모든 응용 시스템과 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 데이터 베이스 구조를 논리적으로 정의한 것

  • 내부 스키마(Internal Schema)
    전체 데이터베이스읨 물리적 저장 형태를 기술하는 것'

자세한 내용을 여기를 클릭



Posted by doubler
,