• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    해결됨

ElasticSearch 와 RDBMS에 대한 비교 질문이 있습니다.

22.12.27 21:12 작성 조회수 515

0

안녕하세요! 강의를 보면서 궁금한 점이 생겨서 질문 남깁니다!

ElasticSearch와 RDBMS에 대해 비교하는 내용이 나왔는데요. 이 중에서 8버전까지 왔을 때는 비교가 완벽하게 맞지 않는 이유가 궁금합니다.

감사합니다! 좋은 하루 되시길 바래요!

답변 1

답변을 작성해보세요.

4

보통 ElasticSearch를 처음 사용하시는 분들에게 이해를 돕기 위해 RDBMS와의 비교를 하곤 하는데요, 5.x 버전 까지는 아래와 같이 비교가 되곤 했습니다.

Index <-> Database
Type <-> Table
Mapping <-> Schema
Document <-> Row

여기서 말하는 Type은 매핑 정보를 생성할 때 사용하는 타입이 아니라 (ex. text, keyword, float 등), 그야말로 문서 자체의 타입이었는데요, 지금은 _doc 로 사용하고 있는 이 부분이 타입이었습니다.

예를 들어 지금은 /library/_doc/1 이런 식으로 library 라는 인덱스 안에 1번 문서를 가져오게 되어 있는데요, 5.x 버전에서는 /library/books/1 , /library/magazines/1 이런 식으로 _doc가 아닌 한 번 더 분류할 수 있는 Type 이라는 게 존재 했었습니다. (예제에서는 books, magazines가 되겠죠.) 그런데 이 부분을 6.x 부터는 _doc로 픽스 했습니다.

자세한 내용은 https://www.elastic.co/guide/en/elasticsearch/reference/7.17/removal-of-types.html 여기서도 확인할 수 있는데요, 아래와 같은 구문이 나옵니다. 위에서 언급 했던 것처럼 초기에는 RDBMS와의 비교를 아래와 같이 했었죠.

Initially, we spoke about an “index” being similar to a “database” in an SQL database, and a “type” being equivalent to a “table”.

그리고 링크된 문서를 읽어 보시면 Type을 삭제한 이유가 설명 되어 있는데요, 문서를 저장하고 사용하는 아키텍처 자체가 변화 하면서 하나의 인덱스 안에 여러개의 타입을 두어 테이블처럼 사용하지 말고 타입 별로 인덱스를 만들어서 사용해라 라는 게 주요 골자 입니다.

그래서 최신 버전에서는 굳이 RDBMS와의 비교를 하진 않습니다. 왜냐하면 RDBMS의 Table에 비교할 수 있는 요소가 ElasticSearch에는 없거든요. 하지만 그걸 제외 하고서도 개념을 이해하는 것에는 도움이 되기 때문에 필요에 따라서는 Table을 빼고 비교하곤 합니다.

 

김형준님의 프로필

김형준

질문자

2022.12.28

답변 감사합니다! 🙇