Elastic Search 기초 - (구조 및 용어, NoSQL 개념)

kangking·2024년 9월 9일

ELK

목록 보기
2/2

Elastic Search 아키텍쳐

용어

  1. 클러스터

    ES에서 가장 큰 시스템 단위를 이야기 하며, 서로 다른 클러스터는 데이터를 주고받거나 접근할 수 없다.

    여러대의 서버가 하나의 클러스터를 구성할 수도 있고, 하나의 서버안에 여러개의 클러스터를 구성할 수도 있다.

  2. 노드

    ES를 구성하는 하나의 단위 프로세스를 의미하며, 역할에 따라 Master-eligible, Data, Ingest, Tribe 노드로 구분할 수 있.

    • Master-eligible node

      클러스터를 제어하는 마스터로 선택할 수 있는 노드이며 인덱스 생성 및 삭제, 클러스터 노드 추적 및 관리, 샤드 할당 역할을 수행한다.

    • Data node

      CRUD 작업과 관련있는 노드 (자원을 많이 사용)

    • Ingest node

      데이터 변환 등 사전 처리 파이프라인을 실행하는 노드

    • Coordination only node

      data node와 master노드의 역할을 대신하는 이 노드는 로드밸런서와 비슷한 역할을 한다.

  1. 샤드

    데이터를 실제로 저장하는 물리적인 단위

    • Primary Shard
      원본 데이터가 저장된 샤드

    • Replica Shard
      Primary Shard의 복제본
  2. 인덱스

    데이터를 저장하는 논리적 공간으로, 하나의 인덱스는 여러 개의 샤드로 나뉘어 저장된다. (RDBMS와 유사)

  3. 도큐먼트

    데이터를 저장하는 최소 단위로, JSON 형식으로 표현된 데이터를 의미하며 하나의 인덱스 안에는 여러개의 도큐먼트가 포함된다.

ES의 구조

  1. ES 클러스터 구조

  2. 인덱스 내부 구조

ES의 특징

  • 스케일 아웃
    (샤드를 통한 수평확장 가능)

  • 고가용성
    (Replica를 통한 안정성)

  • Schema Free
    (Json 문서를 통해 검색을 수행하기 때문에 스키마 개념이 없음)

왜 ES는 빠른가?

inverted index 덕분

ES는 텍스트를 파싱해서 검색어 사전을 만들고 inverted index 방식으로 텍스트를 저장한다.

NoSQL

Not Only SQL의 줄임말로, 비관계형 데이터베이스를 지칭하는 말이다.

RDBMS와 같이 테이블간 복잡한 연관관계를 통해 데이터를 저장하고 관리하지 않고, key-value, JSON 등과 같은 간단한 비정규화된 구조들을 사용하여 데이터를 저장하고 관리한다.

  • 데이터 관계를 정의하지 않는다.
    (Join연산 불가)

  • RDBMS에 비해 대용량의 데이터를 저장할 수 있다.
    (CPU,Memory와 같은 수직적 확장이 아니라 여러 서버로 수평적확장이 가능하여 분산처리를 할 수 있다.)

  • 샤딩 기법을 통해 여러 샤드로 나누어 저장한다.
    (자동으로 데이터를 분산 저장하고 처리 성능을 높인다.)

NoSQL의 장단점

장점

  1. 저렴한 비용으로 분산처리가 가능하다.
    (서버의 대수를 늘리는게 한대의 성능을 올리는 것 보다 저렴)

  2. 비정형 데이터 구조로 설계 비용 감소가 가능하다.

  3. 빅데이터 처리에 효과적이다.
    (수평확장이 가능하고 분산처리를 기본적으로 지원하기 때문이다.)

단점

  1. 데이터 업데이트 중 장애가 발생하면 데이터 손실이 발생할 수 있다.

  2. 메모리를 많이 사용하기 때문에 많은 인덱스를 사용하려면 충분한 메모리가 필요하다.

  3. 데이터 일관성이 항상 보장되지 않는다.
    (대규모 분산 환경에서는 네트워크 장애가 빈번히 발생할 수 있기 때문에 가용성과 파티션 내성을 우선시 하는 경우가 많다.)

    이 경우엔 최종 일관성이라는 개념이 도입되는데, 어느 시점엔 일관성이 깨질 수 있지만 결국 시간이 지나면 모든 분산된 노드가 일관된 상태에 도달한다는 개념이다.

    *파티션 내성이란? 분산된 네트워크 환경에서 서로 통신을 하지 못하는 상황에서도 시스템이 중단되지 않고 동작할 수 있게 하는 성질

NoSQL의 종류

  • Key-Value

    기본 패턴으로 단순한 구조이기에 속도가 빠르며 분산 저장시 용이하다.

    ex) Redis

  • Document

    테이블에 스키마가 고정되어있는 RDBMS와 다르게, 각각의 레코드마다 스키마가 다르게 저장될 수 있는 DB형태이다.

    주로 XML, JSON과 같이 매번 레코드를 구성하는 스키마가 달라질 수 있는 자료형을 저장하는데 사용한다.

    ex) MongoDB

  • 이밖에도 Wide-Column Database, Graph Database 등이 있다.
profile
하루하루 의미있게

0개의 댓글