Computer Science/DB

Elasticsearch와 RDBMS의 용어 비교, 그리고 장단점

TwinParadox 2021. 6. 13. 18:36
728x90

Elasticsearch와 RDBMS의 용어 비교

RDBMS Elasticsearch
Schema Mapping
Database Index
Partition Shard
Table Type
Row Document
Column Field

 

Elasticsearch를 써야 할 때?

RDBMS 단순 텍스트 매칭에 근거해서 검색을 지원한다.

최신 RDBMS는 Full-text 검색을 지원하지만, 아직도 많은 곳에서 사용하는 RDBMS에서는 이를 지원하지 않는다. 지원한다고 하더라도, 한글에서는 썩 좋은 능력을 보여주지 못하는 부분이 있다.

반면 Elasticsearch는 n-gram 기반 Full-text 검색을 지원한다. 여러 단어로 변형하거나, 동의어/유의어에 근거한 검색도 가능하고 여러 플러그인으로 형태소 기반 자연어 처리도 가능하다.

 

비정형 데이터

전통적인 DB에서는 처리하기 어려운 대용량, 비정형 데이터 검색이 가능하다는 것이 큰 장점으로 작용한다. 기본 개념은 검색 엔진이지만, MongoDB, HBase 같은 대용량 스토리지처럼 사용할 수 있다.

비정형 데이터라고 하면 로그 같은 것들이 있다. 비정형 로그 데이터는 그냥 수집해두는 것만으로 끝나지 않고, 이것들을 분석해야 할 때가 있다. 그래서 Elasticsearch는 이것을 단독으로 사용하기보다는 Logstash, Kibana를 같이 사용하여(이 셋을 합쳐서 ELK라고 부른다.) 로그 데이터를 수집하고 시각화/통계 분석을 실시한다.

 

이외에 Elasticsearch가 가지고 있는 장점

역색인, RESTful API 등..

Schemaless(그냥 막 쓸 때는 장점. 늘 그렇듯 자동은 좋은 게 아니라서 권장하지 않음)

 

 

고려해야 할 부분은?

Real-Time은 아니다

Elasticsearch의 데이터 색인 방식을 보면 색인된 데이터가 내부적으로 commit, flush 하는 과정이 있어 일정 시간(1초 이상)이 지나야 검색이 된다. 공식 문서에서도 이러한 이유로 Near Real-Time이라고 명시했다.

 

트랜잭션과 롤백의 부재

분산 시스템 구성에서 시스템적 비용이 많이 드는 두 기능을 지원하지 않는다.

 

가짜 업데이트(?)

Elasticsearch에서 제공하는 업데이트 기능은 진짜 업데이트는 아니고, 그 데이터를 삭제하고 다시 만드는 방식이다. 이런 점이 오히려 immutable을 제공하여 이점으로 작용하기도 한다.

 

 

728x90