-
카테고리
-
세부 분야
데브옵스 · 인프라
-
해결 여부
해결됨
ElasticSearch 와 RDBMS에 대한 비교 질문이 있습니다.
22.12.27 21:12 작성 조회수 515
0
안녕하세요! 강의를 보면서 궁금한 점이 생겨서 질문 남깁니다!
ElasticSearch와 RDBMS에 대해 비교하는 내용이 나왔는데요. 이 중에서 8버전까지 왔을 때는 비교가 완벽하게 맞지 않는 이유가 궁금합니다.
감사합니다! 좋은 하루 되시길 바래요!
답변을 작성해보세요.
4
강진우
지식공유자2022.12.28
보통 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
을 빼고 비교하곤 합니다.
답변 1