엘라스틱 서치란?

세이배논 - 엘라스틱 사가 개발 (2010년에 발표)

오픈소스 인덱싱엔진 아파치 루씬 기반 (더그 커팅의 전문 ><)

  • 빅데이터 기술의 아버지 더그 커팅이 개발
  • 솔라/티카에서도 사용
  • → 루씬이라는 걸 기반으로 만든것 중에 유명한게 ES인거임!

자바기반

  • -->사용/개발하려면 JDK를 깔아야 한다!
  • 루씬/엘라스틱서치
  • 플랫폼을 가리지 않고 지원 가능

실시간 분석

  • 색인 작업이 끝나면 바로 검색가능
    • 원래, 인터넷 검색엔진은 리얼 타임 일수가 없음, 인터넷에서 긁어온다고 하면 인터넷멈춤..
    • 배치 잡에 가까움! 크롤링을 하고 인덱싱 작업을 해서 인터넷에 뿌려주는 거임!

분산시스템

  • Scaliability/Scale-out (ES의 젤 중요한 특징중에 하나)
  • → DB는 용량이 커지면 이거 어카나 문제가 되는데 ES는 걍 서버 갖다붙이면 해결!!
  • 동일한 서버를 계속 추가해서 용량/성능을 확장

높은 가용성(HA)

  • 서버는 무슨 짓을 해도 죽는다.. 당연히 죽는게 순리..ㅠ… 하지만 서버 한대는 죽을수 있어도 전체 서비스가 죽으면 안된다!
  • HA를 DB에서 쓸라면 겁나 비쌋다. 이게 되는 DB가격이 비싼거임
  • 뭐 비슷한게 RAID 개념이라던지 …

멀티 태넌시

  • 따로따로 되어있는걸 분리 검색해서 합쳐주는거
  • 검색엔진에서는 꼭 필요한 기술
  • 한번 검색하면 메일이나 사이트나 등의 내용들도 보여줌

전문검색

Json문서 기반(핵중요!!)

  • Json Only
  • 입출력 전부를 json 기반으로 한다

Restful API

  • CRUD
  • Http와 json을 사용한 입출력 및 제어

Json(Javascript Object Notation)

  • JS에서 파생됨
  • key/value 구조
  • 자바의 콜렉션(Collection)
    • 맵(Map), 해시맵(HashMap)...
  • 배열과 달리 별도의 인덱스를 유지하지 않음
  • 배열([])과 오브젝트({})가 반복(Nested)되는 구조
    • []:Blacket, {}:브레이스
  • NoSQL과 빅데이터(하둡)에서 많이 사용
  • ES에서는 모든 자료구조가 json이어야함
    • cf.
      • 반드시 required/mandatory/compulsory
      • 가급적이면 recommended
      • 옵션 optional
  • 데이터의 형태
    • 정형데이터
    • DB가 대표적인 정형데이터
    • 정해진 형태의 데이터
    • 특정 컬럽값이 존재하거나 NULL
    • 예) SQL의 DDL(Data Definition Language)
  • 반정형데이터
    • 특정 컬럼이 존재할 수도, 없을 수도 있슴
    • 약간의 자유도
    • 예) NoSQL, 빅데이터, …Json!
    • → 정형데이터는 컬럼은 있지만 데이터가 있을수도,ㅇ ㅓㅄ을수도 있는곡, 반정형데이터는 컬럼이 이씅ㄹ수도 없을 수도 있다는거!
    • 예) SNS 카톡아이디, 무슨ㅇ ㅏ이디 쓸꺼야~? 컬럼을 다 넣어놓울수 없음
  • 비정형데이터
    • 특정한 스키마가 존재하지 않음
    • 예) 검색엔진 -- 걍 텍스트임
  • 스키마리스(Schemaless) 또는 Schema Free 라는 용어로 사용한다 → 반정형/비정형 데이터
  • XML보다 간편한 표기 및 사용법 → 제일 중요한 특징 ! SIMPLE하다!

Restful API

results matching ""

    No results matching ""