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을 제공하여 이점으로 작용하기도 한다.
'Computer Science > DB' 카테고리의 다른 글
[MySQL/Mac] root 비밀번호 초기화하기 (30) | 2024.02.12 |
---|---|
윈도우에 Redis 설치해서 사용하기 with Docker (1) | 2021.12.04 |
MySQL(MariaDB)의 EXPLAIN으로 실행 결과 분석하기 (0) | 2021.11.07 |