본문 바로가기

좋아하는 것_매직IT/3.elasticsearch

2.ElasticSearch, 엘라스틱 서치가 강력할 수 밖에 없는 이유에 대해서 알아보자.

반응형

블로깅의 목적

  • 엘라스틱 서치(ElasticSearch)에 대해서 공부해보고, 엘라스틱 서치의 장단점을 파악해보자. 반드시!

엘라스틱서치(ElasticSearch)는?

  • 요즘 빅데이터를 빠르게 검색하기 위해 NoSQL(No Structured Query Language) 를 많이 사용함.
  • 즉, 엘라스틱도 NoSQL의 일종.
    • 분류가 가능함.
    • 분석처리를 통한 실시간에 준하는 빠른 검색이 가능함.
    • 기존 데이터베이스로는 처리하기 어려운 대량의 비정형 데이터도 검색 가능함.
    • 전문 갬색(Full Text) / 구조 검색 모두를 지원함.
728x90

그럼, 엘라스틱 서치의 장점을 정리하고 알아보자.

  • 오픈소스 검색엔진
    • 아파치 재단의 루씬(Lucene)을 기반으로 개발된 오프소스 검색 엔진.
    • 오픈소스의 장점인, 
      • 셀수없는 수많은 사용자가 있고, 또한 버그가 발생하면, 대부분 빠르게 해결됨.
  • 전문검색(Full Text) 지원
    • 대부분의 데이터베이스는 기본 쿼리 및 색인 구조의 한계로 인해 기본적인 텍스트 검색 기능만 제공함.
      • but 엘라스틱서치는 고차원적인 전문 검색(Full Text)이 가능함.
    • 전문 검색이란?
      • 내용 전체를 색인해서 특정 단어가 포함된 문서를 검색하는 것을 말함.
        • 즉, 전문검색은, 관계형 데이터 베이스에는 적합하지 못함.
        • but, 엘라스틱서치는 다양한 기능별, 언어별 플로그린을 조합해 빠르게 검색가능함.
  • 통계분석
    • 비정형 로그 데이터를 수집 후,
      • 한곳에 모아 통계분석을 할 수 있음.
    • 엘리스틱 서치 와 키바나(Kibana)의 조합으로 실시간으로 쌓이는 로그를 시각화하고 분석 가능함.
  • 스키마 리스(Schema-less)
    • 데이터베이스는 스키마라는 구조에 따라 데이터를 적합한 형태로 변경 후 저장하고 관리함.
    • but, 엘라스틱 서치는 정형화 되지 않은 다양한 형태의 문서도 자동으로 색인 및 검색 가능함.
  • RESTful API 지원
    • HTTP 기반 의 RESTful API를 지원하고, 요청/응답에도 JSON 형식을 사용함.
  • 멀티-테넌시(Multi-Tenancy) 기능 제공
    • 서로 상이한 인덱스일지라도 검색할 필드명만 같으면, 여러개의 인덱스를 한번에 조회 가능함.
      • 즉, Multi-tenancy 기능 제공함.
  • 도규먼트 오리엔티드(Document-Oriented)
    • 여러 계층의 데이터를 JSON 형식의 구조화된 문서로 인덱스에 저장가능함.
  • 역색인(Inverted Index)
    • 루씬기반의 검색 엔진으로써, 역색인(Inverted Index)을 지원 가능함.
      • but, 요즘 많이 사용하는 MongoDB, Cassandra 같은 일반적인 NoSQL은 역색인을 지원하지 않음.
      • 즉, 다른 NoSQL 과 차별화되는 큰 장점을 보유했다고 말할 수 있음.
  • 확장성과 가용성지원
    • 엘라스틱 서치를 분산 구성해서 확장하면, 대량의 문서를 좀 더 효율적으로 처리할 수 있음.
      • 분산 환경에서 데이터는 보통 샤드(Shard) 라는 작은 단위로 나뉘어 제공됨.
      • 그리고, 엘라스틱 서치는, 인덱스를 만들 때마다 해당 샤드의 수를 조절할 수 있음.
        • 즉,이를 통해서 데이터의 종류와 성격에 따라 데이터를 분산해서 빠르게 처리하는것이 가능함.
  • ​​​​​​​but, 항상 하나의 기술에는 장점이 있으면 단점이 있게 마련이다. 
    • 즉, 보통 IT 기술들은
      • 한가지 기술만 사용하는 것이 아니라, 서로 장단점을 보완할 수 있는 기술들을 융합해서 사용한다

그럼, 엘라스틱 서치의 단점을 정리하고 알아보자

  • 실시간이 아님.
    • 일반적으로 색인된 데이터는 통상적으로 1초 뒤에나 검색이 가능해짐.
      • 왜냐하면, 색인된 데이터는 내부적으로
        • 커밋(commit) / 플러시(flush)와 같은 복잡한 과정을 거치기때문임.
    • 그러나, 거의 실시간처럼 보임. 
  • 트랜잭션 / 롤백기능을 제공하지 않음.
    • 전체적인 클러스터의 성능 향상을 위해서 비용 소모가 큰 트랜잭션 / 롤백기능을 지원하지 않기 때문에, 최악의 경우 데이터 손실의 위험이 존재함.
  • 데이터의 업데이트를 제공하지 않음
    • 내부적으로 업데이터는 기존 문서를 삭제하고 변경된 내용으로 새로운 문서를 생성하는 방식을 사용함.
      • 즉, 단순 업데이터에 비해서 많은 비용이 발생하기도 함.

결론

  • 모든 IT 기술들이 그렇듯, 엘라스틱서치는 장점과 단점을 가지고 있음.
  • 하지만, 사용자에 따라서 단점을 충분히 커버할 수 있기때문에, 요즘 엘라스틱서치를 많이 사용하고 있는듯함.
  • 그래서, 저도 회사에서 지원하고있는 이러닝 / 인터넷 / 서적을 통해서 엘라스틱서치에 대해서 많은 지식을 쌓아보고자 노력하고 있음.
    • 즉, IT 기술을 사용할 때, 무작정 사용하는 것이아니라 꾸준한 공부와 실전같은 테스트를 통해서 장점과 단점을 알아가는 노력이 반드시 필요함.
      • 이런 노력없이 무작정 사용하면, 라이브 적용시 반드시 서비스 장애를 만들기 마련임.
  • 오늘도, 목표였던, 엘라스틱서치에 대한 장단점에 대한 지식 한가지 획득완료 및 목표 달성! 감사합니다.
300x250